package com.justeat.mickeydb.idea.parser.antlr.internal;

import org.eclipse.xtext.idea.parser.AbstractPsiAntlrParser;
import com.justeat.mickeydb.idea.lang.MickeyLangElementTypeProvider;
import org.eclipse.xtext.idea.parser.TokenTypeProvider;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import com.justeat.mickeydb.services.MickeyLangGrammarAccess;

import com.intellij.lang.PsiBuilder;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class PsiInternalMickeyLangParser extends AbstractPsiAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_NUMBER", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'database'", "'function'", "'('", "','", "')'", "':'", "'{'", "';'", "'}'", "'action'", "'on'", "'unique'", "'notify'", "'/'", "'param'", "'like'", "'migrate'", "'from'", "'||'", "'*'", "'%'", "'+'", "'-'", "'<<'", "'>>'", "'&'", "'|'", "'<'", "'<='", "'>'", "'>='", "'='", "'=='", "'!='", "'<>'", "'is'", "'is not'", "'in'", "'not in'", "'glob'", "'match'", "'regexp'", "'and'", "'or'", "'is null'", "'not null'", "'notnull'", "'new.'", "'old.'", "'.'", "'not'", "'exists'", "'case'", "'else'", "'end'", "'cast'", "'as'", "'$'", "'when'", "'then'", "'order by'", "'limit'", "'offset'", "'select'", "'distinct'", "'all'", "'where'", "'group by'", "'having'", "'asc'", "'desc'", "'natural'", "'left'", "'outer'", "'inner'", "'cross'", "'join'", "'null'", "'current_time'", "'current_date'", "'current_timestamp'", "'create'", "'temp'", "'table'", "'view'", "'trigger'", "'before'", "'after'", "'instead of'", "'delete'", "'insert'", "'update'", "'of'", "'for each row'", "'begin'", "'alter'", "'rename to'", "'add column'", "'drop'", "'if exists'", "'index'", "'primary key'", "'autoincrement'", "'default'", "'check'", "'constraint'", "'collate'", "'conflict'", "'replace'", "'into'", "'values'", "'set'", "'union all'", "'union'", "'intersect'", "'except'", "'text'", "'integer'", "'real'", "'blob'", "'none'", "'numeric'", "'boolean'", "'rollback'", "'abort'", "'fail'", "'ignore'"
    };
    public static final int T__50=50;
    public static final int T__59=59;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__137=137;
    public static final int T__52=52;
    public static final int T__136=136;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__138=138;
    public static final int T__133=133;
    public static final int T__132=132;
    public static final int T__60=60;
    public static final int T__135=135;
    public static final int T__61=61;
    public static final int T__134=134;
    public static final int RULE_ID=4;
    public static final int T__131=131;
    public static final int T__130=130;
    public static final int RULE_INT=7;
    public static final int T__66=66;
    public static final int RULE_ML_COMMENT=8;
    public static final int T__67=67;
    public static final int T__129=129;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__62=62;
    public static final int T__126=126;
    public static final int T__63=63;
    public static final int T__125=125;
    public static final int T__64=64;
    public static final int T__128=128;
    public static final int T__65=65;
    public static final int T__127=127;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__91=91;
    public static final int T__100=100;
    public static final int T__92=92;
    public static final int T__93=93;
    public static final int T__102=102;
    public static final int T__94=94;
    public static final int T__101=101;
    public static final int T__90=90;
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__99=99;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int T__95=95;
    public static final int T__96=96;
    public static final int T__97=97;
    public static final int T__98=98;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__122=122;
    public static final int T__70=70;
    public static final int T__121=121;
    public static final int T__71=71;
    public static final int T__124=124;
    public static final int T__72=72;
    public static final int T__123=123;
    public static final int T__120=120;
    public static final int RULE_STRING=5;
    public static final int RULE_SL_COMMENT=9;
    public static final int T__77=77;
    public static final int T__119=119;
    public static final int T__78=78;
    public static final int T__118=118;
    public static final int T__79=79;
    public static final int T__73=73;
    public static final int T__115=115;
    public static final int EOF=-1;
    public static final int T__74=74;
    public static final int T__114=114;
    public static final int T__75=75;
    public static final int T__117=117;
    public static final int T__76=76;
    public static final int T__116=116;
    public static final int T__80=80;
    public static final int T__111=111;
    public static final int T__81=81;
    public static final int T__110=110;
    public static final int T__82=82;
    public static final int T__113=113;
    public static final int T__83=83;
    public static final int T__112=112;
    public static final int RULE_WS=10;
    public static final int RULE_ANY_OTHER=11;
    public static final int RULE_NUMBER=6;
    public static final int T__88=88;
    public static final int T__108=108;
    public static final int T__89=89;
    public static final int T__107=107;
    public static final int T__109=109;
    public static final int T__84=84;
    public static final int T__104=104;
    public static final int T__85=85;
    public static final int T__103=103;
    public static final int T__86=86;
    public static final int T__106=106;
    public static final int T__87=87;
    public static final int T__105=105;

    // delegates
    // delegators


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

    public String[] getTokenNames() { return PsiInternalMickeyLangParser.tokenNames; }
    public String getGrammarFileName() { return "PsiInternalMickeyLang.g"; }



    	protected MickeyLangGrammarAccess grammarAccess;

    	protected MickeyLangElementTypeProvider elementTypeProvider;

    	public PsiInternalMickeyLangParser(PsiBuilder builder, TokenStream input, MickeyLangElementTypeProvider elementTypeProvider, MickeyLangGrammarAccess grammarAccess) {
    		this(input);
    		setPsiBuilder(builder);
        	this.grammarAccess = grammarAccess;
    		this.elementTypeProvider = elementTypeProvider;
    	}

    	@Override
    	protected String getFirstRuleName() {
    		return "MickeyFile";
    	}




    // $ANTLR start "entryRuleMickeyFile"
    // PsiInternalMickeyLang.g:52:1: entryRuleMickeyFile returns [Boolean current=false] : iv_ruleMickeyFile= ruleMickeyFile EOF ;
    public final Boolean entryRuleMickeyFile() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleMickeyFile = null;


        try {
            // PsiInternalMickeyLang.g:52:52: (iv_ruleMickeyFile= ruleMickeyFile EOF )
            // PsiInternalMickeyLang.g:53:2: iv_ruleMickeyFile= ruleMickeyFile EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getMickeyFileElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMickeyFile=ruleMickeyFile();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMickeyFile; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleMickeyFile"
    // PsiInternalMickeyLang.g:59:1: ruleMickeyFile returns [Boolean current=false] : (otherlv_0= 'database' ( (lv_databaseName_1_0= ruleQualifiedName ) ) ( (lv_blocks_2_0= ruleMickeyBlock ) )* ) ;
    public final Boolean ruleMickeyFile() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Boolean lv_databaseName_1_0 = null;

        Boolean lv_blocks_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:60:1: ( (otherlv_0= 'database' ( (lv_databaseName_1_0= ruleQualifiedName ) ) ( (lv_blocks_2_0= ruleMickeyBlock ) )* ) )
            // PsiInternalMickeyLang.g:61:2: (otherlv_0= 'database' ( (lv_databaseName_1_0= ruleQualifiedName ) ) ( (lv_blocks_2_0= ruleMickeyBlock ) )* )
            {
            // PsiInternalMickeyLang.g:61:2: (otherlv_0= 'database' ( (lv_databaseName_1_0= ruleQualifiedName ) ) ( (lv_blocks_2_0= ruleMickeyBlock ) )* )
            // PsiInternalMickeyLang.g:62:3: otherlv_0= 'database' ( (lv_databaseName_1_0= ruleQualifiedName ) ) ( (lv_blocks_2_0= ruleMickeyBlock ) )*
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFile_DatabaseKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,12,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:69:3: ( (lv_databaseName_1_0= ruleQualifiedName ) )
            // PsiInternalMickeyLang.g:70:4: (lv_databaseName_1_0= ruleQualifiedName )
            {
            // PsiInternalMickeyLang.g:70:4: (lv_databaseName_1_0= ruleQualifiedName )
            // PsiInternalMickeyLang.g:71:5: lv_databaseName_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getMickeyFile_DatabaseNameQualifiedNameParserRuleCall_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_4);
            lv_databaseName_1_0=ruleQualifiedName();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:84:3: ( (lv_blocks_2_0= ruleMickeyBlock ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==13||LA1_0==21||LA1_0==28||LA1_0==93||LA1_0==107||LA1_0==110) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:85:4: (lv_blocks_2_0= ruleMickeyBlock )
            	    {
            	    // PsiInternalMickeyLang.g:85:4: (lv_blocks_2_0= ruleMickeyBlock )
            	    // PsiInternalMickeyLang.g:86:5: lv_blocks_2_0= ruleMickeyBlock
            	    {
            	    if ( state.backtracking==0 ) {

            	      					markComposite(elementTypeProvider.getMickeyFile_BlocksMickeyBlockParserRuleCall_2_0ElementType());
            	      				
            	    }
            	    pushFollow(FOLLOW_4);
            	    lv_blocks_2_0=ruleMickeyBlock();

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

            	      					doneComposite();
            	      					if(!current) {
            	      						associateWithSemanticElement();
            	      						current = true;
            	      					}
            	      				
            	    }

            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleMickeyBlock"
    // PsiInternalMickeyLang.g:103:1: entryRuleMickeyBlock returns [Boolean current=false] : iv_ruleMickeyBlock= ruleMickeyBlock EOF ;
    public final Boolean entryRuleMickeyBlock() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleMickeyBlock = null;


        try {
            // PsiInternalMickeyLang.g:103:53: (iv_ruleMickeyBlock= ruleMickeyBlock EOF )
            // PsiInternalMickeyLang.g:104:2: iv_ruleMickeyBlock= ruleMickeyBlock EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getMickeyBlockElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMickeyBlock=ruleMickeyBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMickeyBlock; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleMickeyBlock"
    // PsiInternalMickeyLang.g:110:1: ruleMickeyBlock returns [Boolean current=false] : (this_MickeyFunction_0= ruleMickeyFunction | this_ActionStatement_1= ruleActionStatement | this_DDLStatement_2= ruleDDLStatement | this_MigrationBlock_3= ruleMigrationBlock ) ;
    public final Boolean ruleMickeyBlock() throws RecognitionException {
        Boolean current = false;

        Boolean this_MickeyFunction_0 = null;

        Boolean this_ActionStatement_1 = null;

        Boolean this_DDLStatement_2 = null;

        Boolean this_MigrationBlock_3 = null;


        try {
            // PsiInternalMickeyLang.g:111:1: ( (this_MickeyFunction_0= ruleMickeyFunction | this_ActionStatement_1= ruleActionStatement | this_DDLStatement_2= ruleDDLStatement | this_MigrationBlock_3= ruleMigrationBlock ) )
            // PsiInternalMickeyLang.g:112:2: (this_MickeyFunction_0= ruleMickeyFunction | this_ActionStatement_1= ruleActionStatement | this_DDLStatement_2= ruleDDLStatement | this_MigrationBlock_3= ruleMigrationBlock )
            {
            // PsiInternalMickeyLang.g:112:2: (this_MickeyFunction_0= ruleMickeyFunction | this_ActionStatement_1= ruleActionStatement | this_DDLStatement_2= ruleDDLStatement | this_MigrationBlock_3= ruleMigrationBlock )
            int alt2=4;
            switch ( input.LA(1) ) {
            case 13:
                {
                alt2=1;
                }
                break;
            case 21:
                {
                alt2=2;
                }
                break;
            case 93:
            case 107:
            case 110:
                {
                alt2=3;
                }
                break;
            case 28:
                {
                alt2=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // PsiInternalMickeyLang.g:113:3: this_MickeyFunction_0= ruleMickeyFunction
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getMickeyBlock_MickeyFunctionParserRuleCall_0ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_MickeyFunction_0=ruleMickeyFunction();

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

                      			current = this_MickeyFunction_0;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:122:3: this_ActionStatement_1= ruleActionStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getMickeyBlock_ActionStatementParserRuleCall_1ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_ActionStatement_1=ruleActionStatement();

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

                      			current = this_ActionStatement_1;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:131:3: this_DDLStatement_2= ruleDDLStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getMickeyBlock_DDLStatementParserRuleCall_2ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DDLStatement_2=ruleDDLStatement();

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

                      			current = this_DDLStatement_2;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:140:3: this_MigrationBlock_3= ruleMigrationBlock
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getMickeyBlock_MigrationBlockParserRuleCall_3ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_MigrationBlock_3=ruleMigrationBlock();

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

                      			current = this_MigrationBlock_3;
                      			doneComposite();
                      		
                    }

                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleMickeyFunction"
    // PsiInternalMickeyLang.g:152:1: entryRuleMickeyFunction returns [Boolean current=false] : iv_ruleMickeyFunction= ruleMickeyFunction EOF ;
    public final Boolean entryRuleMickeyFunction() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleMickeyFunction = null;


        try {
            // PsiInternalMickeyLang.g:152:56: (iv_ruleMickeyFunction= ruleMickeyFunction EOF )
            // PsiInternalMickeyLang.g:153:2: iv_ruleMickeyFunction= ruleMickeyFunction EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getMickeyFunctionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMickeyFunction=ruleMickeyFunction();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMickeyFunction; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleMickeyFunction"
    // PsiInternalMickeyLang.g:159:1: ruleMickeyFunction returns [Boolean current=false] : (otherlv_0= 'function' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )? otherlv_6= ')' (otherlv_7= ':' ( ( ruleQualifiedName ) ) )? otherlv_9= '{' ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )* otherlv_12= '}' ) ;
    public final Boolean ruleMickeyFunction() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Boolean lv_args_3_0 = null;

        Boolean lv_args_5_0 = null;

        Boolean lv_statements_10_0 = null;


        try {
            // PsiInternalMickeyLang.g:160:1: ( (otherlv_0= 'function' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )? otherlv_6= ')' (otherlv_7= ':' ( ( ruleQualifiedName ) ) )? otherlv_9= '{' ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )* otherlv_12= '}' ) )
            // PsiInternalMickeyLang.g:161:2: (otherlv_0= 'function' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )? otherlv_6= ')' (otherlv_7= ':' ( ( ruleQualifiedName ) ) )? otherlv_9= '{' ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )* otherlv_12= '}' )
            {
            // PsiInternalMickeyLang.g:161:2: (otherlv_0= 'function' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )? otherlv_6= ')' (otherlv_7= ':' ( ( ruleQualifiedName ) ) )? otherlv_9= '{' ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )* otherlv_12= '}' )
            // PsiInternalMickeyLang.g:162:3: otherlv_0= 'function' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )? otherlv_6= ')' (otherlv_7= ':' ( ( ruleQualifiedName ) ) )? otherlv_9= '{' ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )* otherlv_12= '}'
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFunction_FunctionKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,13,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:169:3: ( (lv_name_1_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:170:4: (lv_name_1_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:170:4: (lv_name_1_0= RULE_ID )
            // PsiInternalMickeyLang.g:171:5: lv_name_1_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getMickeyFunction_NameIDTerminalRuleCall_1_0ElementType());
              				
            }
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_1_0);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFunction_LeftParenthesisKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,14,FOLLOW_6); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            // PsiInternalMickeyLang.g:193:3: ( ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )* )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( ((LA4_0>=128 && LA4_0<=131)||LA4_0==134) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // PsiInternalMickeyLang.g:194:4: ( (lv_args_3_0= ruleFunctionArg ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )*
                    {
                    // PsiInternalMickeyLang.g:194:4: ( (lv_args_3_0= ruleFunctionArg ) )
                    // PsiInternalMickeyLang.g:195:5: (lv_args_3_0= ruleFunctionArg )
                    {
                    // PsiInternalMickeyLang.g:195:5: (lv_args_3_0= ruleFunctionArg )
                    // PsiInternalMickeyLang.g:196:6: lv_args_3_0= ruleFunctionArg
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getMickeyFunction_ArgsFunctionArgParserRuleCall_3_0_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_7);
                    lv_args_3_0=ruleFunctionArg();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    // PsiInternalMickeyLang.g:209:4: (otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) ) )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

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


                        switch (alt3) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:210:5: otherlv_4= ',' ( (lv_args_5_0= ruleFunctionArg ) )
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      					markLeaf(elementTypeProvider.getMickeyFunction_CommaKeyword_3_1_0ElementType());
                    	      				
                    	    }
                    	    otherlv_4=(Token)match(input,15,FOLLOW_8); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					doneLeaf(otherlv_4);
                    	      				
                    	    }
                    	    // PsiInternalMickeyLang.g:217:5: ( (lv_args_5_0= ruleFunctionArg ) )
                    	    // PsiInternalMickeyLang.g:218:6: (lv_args_5_0= ruleFunctionArg )
                    	    {
                    	    // PsiInternalMickeyLang.g:218:6: (lv_args_5_0= ruleFunctionArg )
                    	    // PsiInternalMickeyLang.g:219:7: lv_args_5_0= ruleFunctionArg
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							markComposite(elementTypeProvider.getMickeyFunction_ArgsFunctionArgParserRuleCall_3_1_1_0ElementType());
                    	      						
                    	    }
                    	    pushFollow(FOLLOW_7);
                    	    lv_args_5_0=ruleFunctionArg();

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

                    	      							doneComposite();
                    	      							if(!current) {
                    	      								associateWithSemanticElement();
                    	      								current = true;
                    	      							}
                    	      						
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFunction_RightParenthesisKeyword_4ElementType());
              		
            }
            otherlv_6=(Token)match(input,16,FOLLOW_9); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_6);
              		
            }
            // PsiInternalMickeyLang.g:241:3: (otherlv_7= ':' ( ( ruleQualifiedName ) ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==17) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // PsiInternalMickeyLang.g:242:4: otherlv_7= ':' ( ( ruleQualifiedName ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getMickeyFunction_ColonKeyword_5_0ElementType());
                      			
                    }
                    otherlv_7=(Token)match(input,17,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_7);
                      			
                    }
                    // PsiInternalMickeyLang.g:249:4: ( ( ruleQualifiedName ) )
                    // PsiInternalMickeyLang.g:250:5: ( ruleQualifiedName )
                    {
                    // PsiInternalMickeyLang.g:250:5: ( ruleQualifiedName )
                    // PsiInternalMickeyLang.g:251:6: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getMickeyFunction_TypeTableDefinitionCrossReference_5_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_10);
                    ruleQualifiedName();

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

                      						doneComposite();
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFunction_LeftCurlyBracketKeyword_6ElementType());
              		
            }
            otherlv_9=(Token)match(input,18,FOLLOW_11); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_9);
              		
            }
            // PsiInternalMickeyLang.g:274:3: ( ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';' )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==75||(LA6_0>=101 && LA6_0<=103)||LA6_0==120) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:275:4: ( (lv_statements_10_0= ruleDMLStatement ) ) otherlv_11= ';'
            	    {
            	    // PsiInternalMickeyLang.g:275:4: ( (lv_statements_10_0= ruleDMLStatement ) )
            	    // PsiInternalMickeyLang.g:276:5: (lv_statements_10_0= ruleDMLStatement )
            	    {
            	    // PsiInternalMickeyLang.g:276:5: (lv_statements_10_0= ruleDMLStatement )
            	    // PsiInternalMickeyLang.g:277:6: lv_statements_10_0= ruleDMLStatement
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getMickeyFunction_StatementsDMLStatementParserRuleCall_7_0_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_12);
            	    lv_statements_10_0=ruleDMLStatement();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getMickeyFunction_SemicolonKeyword_7_1ElementType());
            	      			
            	    }
            	    otherlv_11=(Token)match(input,19,FOLLOW_11); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_11);
            	      			
            	    }

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMickeyFunction_RightCurlyBracketKeyword_8ElementType());
              		
            }
            otherlv_12=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_12);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleActionStatement"
    // PsiInternalMickeyLang.g:309:1: entryRuleActionStatement returns [Boolean current=false] : iv_ruleActionStatement= ruleActionStatement EOF ;
    public final Boolean entryRuleActionStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleActionStatement = null;


        try {
            // PsiInternalMickeyLang.g:309:57: (iv_ruleActionStatement= ruleActionStatement EOF )
            // PsiInternalMickeyLang.g:310:2: iv_ruleActionStatement= ruleActionStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getActionStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActionStatement=ruleActionStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActionStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleActionStatement"
    // PsiInternalMickeyLang.g:316:1: ruleActionStatement returns [Boolean current=false] : (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) ) ( (lv_uri_2_0= ruleContentUri ) ) otherlv_3= 'on' ( ( ruleQualifiedName ) ) ( (lv_unique_5_0= 'unique' ) )? (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )? ) ;
    public final Boolean ruleActionStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_3=null;
        Token lv_unique_5_0=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        Boolean lv_uri_2_0 = null;

        Boolean lv_params_7_0 = null;

        Boolean lv_notifications_8_0 = null;


        try {
            // PsiInternalMickeyLang.g:317:1: ( (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) ) ( (lv_uri_2_0= ruleContentUri ) ) otherlv_3= 'on' ( ( ruleQualifiedName ) ) ( (lv_unique_5_0= 'unique' ) )? (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )? ) )
            // PsiInternalMickeyLang.g:318:2: (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) ) ( (lv_uri_2_0= ruleContentUri ) ) otherlv_3= 'on' ( ( ruleQualifiedName ) ) ( (lv_unique_5_0= 'unique' ) )? (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )? )
            {
            // PsiInternalMickeyLang.g:318:2: (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) ) ( (lv_uri_2_0= ruleContentUri ) ) otherlv_3= 'on' ( ( ruleQualifiedName ) ) ( (lv_unique_5_0= 'unique' ) )? (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )? )
            // PsiInternalMickeyLang.g:319:3: otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) ) ( (lv_uri_2_0= ruleContentUri ) ) otherlv_3= 'on' ( ( ruleQualifiedName ) ) ( (lv_unique_5_0= 'unique' ) )? (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )?
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getActionStatement_ActionKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,21,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:326:3: ( (lv_name_1_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:327:4: (lv_name_1_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:327:4: (lv_name_1_0= RULE_ID )
            // PsiInternalMickeyLang.g:328:5: lv_name_1_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getActionStatement_NameIDTerminalRuleCall_1_0ElementType());
              				
            }
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_13); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_1_0);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:343:3: ( (lv_uri_2_0= ruleContentUri ) )
            // PsiInternalMickeyLang.g:344:4: (lv_uri_2_0= ruleContentUri )
            {
            // PsiInternalMickeyLang.g:344:4: (lv_uri_2_0= ruleContentUri )
            // PsiInternalMickeyLang.g:345:5: lv_uri_2_0= ruleContentUri
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getActionStatement_UriContentUriParserRuleCall_2_0ElementType());
              				
            }
            pushFollow(FOLLOW_14);
            lv_uri_2_0=ruleContentUri();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getActionStatement_OnKeyword_3ElementType());
              		
            }
            otherlv_3=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:365:3: ( ( ruleQualifiedName ) )
            // PsiInternalMickeyLang.g:366:4: ( ruleQualifiedName )
            {
            // PsiInternalMickeyLang.g:366:4: ( ruleQualifiedName )
            // PsiInternalMickeyLang.g:367:5: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getActionStatement_TypeTableDefinitionCrossReference_4_0ElementType());
              				
            }
            pushFollow(FOLLOW_15);
            ruleQualifiedName();

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

              					doneComposite();
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:382:3: ( (lv_unique_5_0= 'unique' ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==23) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // PsiInternalMickeyLang.g:383:4: (lv_unique_5_0= 'unique' )
                    {
                    // PsiInternalMickeyLang.g:383:4: (lv_unique_5_0= 'unique' )
                    // PsiInternalMickeyLang.g:384:5: lv_unique_5_0= 'unique'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getActionStatement_UniqueUniqueKeyword_5_0ElementType());
                      				
                    }
                    lv_unique_5_0=(Token)match(input,23,FOLLOW_16); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_unique_5_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:399:3: (otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}' )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==18) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // PsiInternalMickeyLang.g:400:4: otherlv_6= '{' ( (lv_params_7_0= ruleContentUriQueryParam ) )* ( (lv_notifications_8_0= ruleContentNotificationUri ) )* otherlv_9= '}'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getActionStatement_LeftCurlyBracketKeyword_6_0ElementType());
                      			
                    }
                    otherlv_6=(Token)match(input,18,FOLLOW_17); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_6);
                      			
                    }
                    // PsiInternalMickeyLang.g:407:4: ( (lv_params_7_0= ruleContentUriQueryParam ) )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

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


                        switch (alt8) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:408:5: (lv_params_7_0= ruleContentUriQueryParam )
                    	    {
                    	    // PsiInternalMickeyLang.g:408:5: (lv_params_7_0= ruleContentUriQueryParam )
                    	    // PsiInternalMickeyLang.g:409:6: lv_params_7_0= ruleContentUriQueryParam
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      						markComposite(elementTypeProvider.getActionStatement_ParamsContentUriQueryParamParserRuleCall_6_1_0ElementType());
                    	      					
                    	    }
                    	    pushFollow(FOLLOW_17);
                    	    lv_params_7_0=ruleContentUriQueryParam();

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

                    	      						doneComposite();
                    	      						if(!current) {
                    	      							associateWithSemanticElement();
                    	      							current = true;
                    	      						}
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

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

                    // PsiInternalMickeyLang.g:422:4: ( (lv_notifications_8_0= ruleContentNotificationUri ) )*
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

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


                        switch (alt9) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:423:5: (lv_notifications_8_0= ruleContentNotificationUri )
                    	    {
                    	    // PsiInternalMickeyLang.g:423:5: (lv_notifications_8_0= ruleContentNotificationUri )
                    	    // PsiInternalMickeyLang.g:424:6: lv_notifications_8_0= ruleContentNotificationUri
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      						markComposite(elementTypeProvider.getActionStatement_NotificationsContentNotificationUriParserRuleCall_6_2_0ElementType());
                    	      					
                    	    }
                    	    pushFollow(FOLLOW_18);
                    	    lv_notifications_8_0=ruleContentNotificationUri();

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

                    	      						doneComposite();
                    	      						if(!current) {
                    	      							associateWithSemanticElement();
                    	      							current = true;
                    	      						}
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

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

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getActionStatement_RightCurlyBracketKeyword_6_3ElementType());
                      			
                    }
                    otherlv_9=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_9);
                      			
                    }

                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleContentNotificationUri"
    // PsiInternalMickeyLang.g:449:1: entryRuleContentNotificationUri returns [Boolean current=false] : iv_ruleContentNotificationUri= ruleContentNotificationUri EOF ;
    public final Boolean entryRuleContentNotificationUri() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleContentNotificationUri = null;


        try {
            // PsiInternalMickeyLang.g:449:64: (iv_ruleContentNotificationUri= ruleContentNotificationUri EOF )
            // PsiInternalMickeyLang.g:450:2: iv_ruleContentNotificationUri= ruleContentNotificationUri EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getContentNotificationUriElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleContentNotificationUri=ruleContentNotificationUri();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContentNotificationUri; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleContentNotificationUri"
    // PsiInternalMickeyLang.g:456:1: ruleContentNotificationUri returns [Boolean current=false] : (otherlv_0= 'notify' ( (lv_uri_1_0= ruleNotifyContentUri ) ) ) ;
    public final Boolean ruleContentNotificationUri() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Boolean lv_uri_1_0 = null;


        try {
            // PsiInternalMickeyLang.g:457:1: ( (otherlv_0= 'notify' ( (lv_uri_1_0= ruleNotifyContentUri ) ) ) )
            // PsiInternalMickeyLang.g:458:2: (otherlv_0= 'notify' ( (lv_uri_1_0= ruleNotifyContentUri ) ) )
            {
            // PsiInternalMickeyLang.g:458:2: (otherlv_0= 'notify' ( (lv_uri_1_0= ruleNotifyContentUri ) ) )
            // PsiInternalMickeyLang.g:459:3: otherlv_0= 'notify' ( (lv_uri_1_0= ruleNotifyContentUri ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getContentNotificationUri_NotifyKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,24,FOLLOW_19); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:466:3: ( (lv_uri_1_0= ruleNotifyContentUri ) )
            // PsiInternalMickeyLang.g:467:4: (lv_uri_1_0= ruleNotifyContentUri )
            {
            // PsiInternalMickeyLang.g:467:4: (lv_uri_1_0= ruleNotifyContentUri )
            // PsiInternalMickeyLang.g:468:5: lv_uri_1_0= ruleNotifyContentUri
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getContentNotificationUri_UriNotifyContentUriParserRuleCall_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_uri_1_0=ruleNotifyContentUri();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleFunctionArg"
    // PsiInternalMickeyLang.g:485:1: entryRuleFunctionArg returns [Boolean current=false] : iv_ruleFunctionArg= ruleFunctionArg EOF ;
    public final Boolean entryRuleFunctionArg() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleFunctionArg = null;


        try {
            // PsiInternalMickeyLang.g:485:53: (iv_ruleFunctionArg= ruleFunctionArg EOF )
            // PsiInternalMickeyLang.g:486:2: iv_ruleFunctionArg= ruleFunctionArg EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getFunctionArgElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFunctionArg=ruleFunctionArg();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFunctionArg; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleFunctionArg"
    // PsiInternalMickeyLang.g:492:1: ruleFunctionArg returns [Boolean current=false] : ( ( (lv_type_0_0= ruleColumnType ) ) ( (lv_name_1_0= RULE_ID ) ) ) ;
    public final Boolean ruleFunctionArg() throws RecognitionException {
        Boolean current = false;

        Token lv_name_1_0=null;
        Boolean lv_type_0_0 = null;


        try {
            // PsiInternalMickeyLang.g:493:1: ( ( ( (lv_type_0_0= ruleColumnType ) ) ( (lv_name_1_0= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:494:2: ( ( (lv_type_0_0= ruleColumnType ) ) ( (lv_name_1_0= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:494:2: ( ( (lv_type_0_0= ruleColumnType ) ) ( (lv_name_1_0= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:495:3: ( (lv_type_0_0= ruleColumnType ) ) ( (lv_name_1_0= RULE_ID ) )
            {
            // PsiInternalMickeyLang.g:495:3: ( (lv_type_0_0= ruleColumnType ) )
            // PsiInternalMickeyLang.g:496:4: (lv_type_0_0= ruleColumnType )
            {
            // PsiInternalMickeyLang.g:496:4: (lv_type_0_0= ruleColumnType )
            // PsiInternalMickeyLang.g:497:5: lv_type_0_0= ruleColumnType
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getFunctionArg_TypeColumnTypeEnumRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_3);
            lv_type_0_0=ruleColumnType();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:510:3: ( (lv_name_1_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:511:4: (lv_name_1_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:511:4: (lv_name_1_0= RULE_ID )
            // PsiInternalMickeyLang.g:512:5: lv_name_1_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getFunctionArg_NameIDTerminalRuleCall_1_0ElementType());
              				
            }
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_1_0);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleNotifyContentUri"
    // PsiInternalMickeyLang.g:531:1: entryRuleNotifyContentUri returns [Boolean current=false] : iv_ruleNotifyContentUri= ruleNotifyContentUri EOF ;
    public final Boolean entryRuleNotifyContentUri() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleNotifyContentUri = null;


        try {
            // PsiInternalMickeyLang.g:531:58: (iv_ruleNotifyContentUri= ruleNotifyContentUri EOF )
            // PsiInternalMickeyLang.g:532:2: iv_ruleNotifyContentUri= ruleNotifyContentUri EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getNotifyContentUriElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNotifyContentUri=ruleNotifyContentUri();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNotifyContentUri; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleNotifyContentUri"
    // PsiInternalMickeyLang.g:538:1: ruleNotifyContentUri returns [Boolean current=false] : ( () ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )* ) ;
    public final Boolean ruleNotifyContentUri() throws RecognitionException {
        Boolean current = false;

        Token otherlv_2=null;
        Boolean lv_segments_1_0 = null;

        Boolean lv_segments_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:539:1: ( ( () ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )* ) )
            // PsiInternalMickeyLang.g:540:2: ( () ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )* )
            {
            // PsiInternalMickeyLang.g:540:2: ( () ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )* )
            // PsiInternalMickeyLang.g:541:3: () ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )*
            {
            // PsiInternalMickeyLang.g:541:3: ()
            // PsiInternalMickeyLang.g:542:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getNotifyContentUri_NotifyContentUriAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:548:3: ( (lv_segments_1_0= ruleNotifyContentUriSegment ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==RULE_ID||LA11_0==18) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // PsiInternalMickeyLang.g:549:4: (lv_segments_1_0= ruleNotifyContentUriSegment )
                    {
                    // PsiInternalMickeyLang.g:549:4: (lv_segments_1_0= ruleNotifyContentUriSegment )
                    // PsiInternalMickeyLang.g:550:5: lv_segments_1_0= ruleNotifyContentUriSegment
                    {
                    if ( state.backtracking==0 ) {

                      					markComposite(elementTypeProvider.getNotifyContentUri_SegmentsNotifyContentUriSegmentParserRuleCall_1_0ElementType());
                      				
                    }
                    pushFollow(FOLLOW_20);
                    lv_segments_1_0=ruleNotifyContentUriSegment();

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

                      					doneComposite();
                      					if(!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:563:3: (otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) ) )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

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


                switch (alt12) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:564:4: otherlv_2= '/' ( (lv_segments_3_0= ruleNotifyContentUriSegment ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getNotifyContentUri_SolidusKeyword_2_0ElementType());
            	      			
            	    }
            	    otherlv_2=(Token)match(input,25,FOLLOW_21); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_2);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:571:4: ( (lv_segments_3_0= ruleNotifyContentUriSegment ) )
            	    // PsiInternalMickeyLang.g:572:5: (lv_segments_3_0= ruleNotifyContentUriSegment )
            	    {
            	    // PsiInternalMickeyLang.g:572:5: (lv_segments_3_0= ruleNotifyContentUriSegment )
            	    // PsiInternalMickeyLang.g:573:6: lv_segments_3_0= ruleNotifyContentUriSegment
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getNotifyContentUri_SegmentsNotifyContentUriSegmentParserRuleCall_2_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_20);
            	    lv_segments_3_0=ruleNotifyContentUriSegment();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleNotifyContentUriSegment"
    // PsiInternalMickeyLang.g:591:1: entryRuleNotifyContentUriSegment returns [Boolean current=false] : iv_ruleNotifyContentUriSegment= ruleNotifyContentUriSegment EOF ;
    public final Boolean entryRuleNotifyContentUriSegment() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleNotifyContentUriSegment = null;


        try {
            // PsiInternalMickeyLang.g:591:65: (iv_ruleNotifyContentUriSegment= ruleNotifyContentUriSegment EOF )
            // PsiInternalMickeyLang.g:592:2: iv_ruleNotifyContentUriSegment= ruleNotifyContentUriSegment EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getNotifyContentUriSegmentElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNotifyContentUriSegment=ruleNotifyContentUriSegment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNotifyContentUriSegment; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleNotifyContentUriSegment"
    // PsiInternalMickeyLang.g:598:1: ruleNotifyContentUriSegment returns [Boolean current=false] : ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' ) ) ;
    public final Boolean ruleNotifyContentUriSegment() throws RecognitionException {
        Boolean current = false;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        Token lv_name_3_0=null;
        Token otherlv_4=null;

        try {
            // PsiInternalMickeyLang.g:599:1: ( ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' ) ) )
            // PsiInternalMickeyLang.g:600:2: ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' ) )
            {
            // PsiInternalMickeyLang.g:600:2: ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' ) )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==RULE_ID) ) {
                alt13=1;
            }
            else if ( (LA13_0==18) ) {
                alt13=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // PsiInternalMickeyLang.g:601:3: ( (lv_name_0_0= RULE_ID ) )
                    {
                    // PsiInternalMickeyLang.g:601:3: ( (lv_name_0_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:602:4: (lv_name_0_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:602:4: (lv_name_0_0= RULE_ID )
                    // PsiInternalMickeyLang.g:603:5: lv_name_0_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getNotifyContentUriSegment_NameIDTerminalRuleCall_0_0ElementType());
                      				
                    }
                    lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					if(!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_name_0_0);
                      				
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:619:3: ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' )
                    {
                    // PsiInternalMickeyLang.g:619:3: ( () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}' )
                    // PsiInternalMickeyLang.g:620:4: () otherlv_2= '{' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '}'
                    {
                    // PsiInternalMickeyLang.g:620:4: ()
                    // PsiInternalMickeyLang.g:621:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getNotifyContentUriSegment_NotifyContentUriParamSegmentAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getNotifyContentUriSegment_LeftCurlyBracketKeyword_1_1ElementType());
                      			
                    }
                    otherlv_2=(Token)match(input,18,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_2);
                      			
                    }
                    // PsiInternalMickeyLang.g:634:4: ( (lv_name_3_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:635:5: (lv_name_3_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:635:5: (lv_name_3_0= RULE_ID )
                    // PsiInternalMickeyLang.g:636:6: lv_name_3_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getNotifyContentUriSegment_NameIDTerminalRuleCall_1_2_0ElementType());
                      					
                    }
                    lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_3_0);
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getNotifyContentUriSegment_RightCurlyBracketKeyword_1_3ElementType());
                      			
                    }
                    otherlv_4=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_4);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleContentUri"
    // PsiInternalMickeyLang.g:663:1: entryRuleContentUri returns [Boolean current=false] : iv_ruleContentUri= ruleContentUri EOF ;
    public final Boolean entryRuleContentUri() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleContentUri = null;


        try {
            // PsiInternalMickeyLang.g:663:52: (iv_ruleContentUri= ruleContentUri EOF )
            // PsiInternalMickeyLang.g:664:2: iv_ruleContentUri= ruleContentUri EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getContentUriElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleContentUri=ruleContentUri();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContentUri; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleContentUri"
    // PsiInternalMickeyLang.g:670:1: ruleContentUri returns [Boolean current=false] : ( () ( (lv_segments_1_0= ruleContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )* ) ;
    public final Boolean ruleContentUri() throws RecognitionException {
        Boolean current = false;

        Token otherlv_2=null;
        Boolean lv_segments_1_0 = null;

        Boolean lv_segments_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:671:1: ( ( () ( (lv_segments_1_0= ruleContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )* ) )
            // PsiInternalMickeyLang.g:672:2: ( () ( (lv_segments_1_0= ruleContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )* )
            {
            // PsiInternalMickeyLang.g:672:2: ( () ( (lv_segments_1_0= ruleContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )* )
            // PsiInternalMickeyLang.g:673:3: () ( (lv_segments_1_0= ruleContentUriSegment ) )? (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )*
            {
            // PsiInternalMickeyLang.g:673:3: ()
            // PsiInternalMickeyLang.g:674:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getContentUri_ContentUriAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:680:3: ( (lv_segments_1_0= ruleContentUriSegment ) )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==RULE_ID||LA14_0==18) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // PsiInternalMickeyLang.g:681:4: (lv_segments_1_0= ruleContentUriSegment )
                    {
                    // PsiInternalMickeyLang.g:681:4: (lv_segments_1_0= ruleContentUriSegment )
                    // PsiInternalMickeyLang.g:682:5: lv_segments_1_0= ruleContentUriSegment
                    {
                    if ( state.backtracking==0 ) {

                      					markComposite(elementTypeProvider.getContentUri_SegmentsContentUriSegmentParserRuleCall_1_0ElementType());
                      				
                    }
                    pushFollow(FOLLOW_20);
                    lv_segments_1_0=ruleContentUriSegment();

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

                      					doneComposite();
                      					if(!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:695:3: (otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

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


                switch (alt15) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:696:4: otherlv_2= '/' ( (lv_segments_3_0= ruleContentUriSegment ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getContentUri_SolidusKeyword_2_0ElementType());
            	      			
            	    }
            	    otherlv_2=(Token)match(input,25,FOLLOW_21); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_2);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:703:4: ( (lv_segments_3_0= ruleContentUriSegment ) )
            	    // PsiInternalMickeyLang.g:704:5: (lv_segments_3_0= ruleContentUriSegment )
            	    {
            	    // PsiInternalMickeyLang.g:704:5: (lv_segments_3_0= ruleContentUriSegment )
            	    // PsiInternalMickeyLang.g:705:6: lv_segments_3_0= ruleContentUriSegment
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getContentUri_SegmentsContentUriSegmentParserRuleCall_2_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_20);
            	    lv_segments_3_0=ruleContentUriSegment();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleContentUriQueryParam"
    // PsiInternalMickeyLang.g:723:1: entryRuleContentUriQueryParam returns [Boolean current=false] : iv_ruleContentUriQueryParam= ruleContentUriQueryParam EOF ;
    public final Boolean entryRuleContentUriQueryParam() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleContentUriQueryParam = null;


        try {
            // PsiInternalMickeyLang.g:723:62: (iv_ruleContentUriQueryParam= ruleContentUriQueryParam EOF )
            // PsiInternalMickeyLang.g:724:2: iv_ruleContentUriQueryParam= ruleContentUriQueryParam EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getContentUriQueryParamElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleContentUriQueryParam=ruleContentUriQueryParam();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContentUriQueryParam; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleContentUriQueryParam"
    // PsiInternalMickeyLang.g:730:1: ruleContentUriQueryParam returns [Boolean current=false] : (otherlv_0= 'param' ( (lv_like_1_0= 'like' ) )? ( (otherlv_2= RULE_ID ) ) ) ;
    public final Boolean ruleContentUriQueryParam() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_like_1_0=null;
        Token otherlv_2=null;

        try {
            // PsiInternalMickeyLang.g:731:1: ( (otherlv_0= 'param' ( (lv_like_1_0= 'like' ) )? ( (otherlv_2= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:732:2: (otherlv_0= 'param' ( (lv_like_1_0= 'like' ) )? ( (otherlv_2= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:732:2: (otherlv_0= 'param' ( (lv_like_1_0= 'like' ) )? ( (otherlv_2= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:733:3: otherlv_0= 'param' ( (lv_like_1_0= 'like' ) )? ( (otherlv_2= RULE_ID ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getContentUriQueryParam_ParamKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,26,FOLLOW_23); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:740:3: ( (lv_like_1_0= 'like' ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==27) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // PsiInternalMickeyLang.g:741:4: (lv_like_1_0= 'like' )
                    {
                    // PsiInternalMickeyLang.g:741:4: (lv_like_1_0= 'like' )
                    // PsiInternalMickeyLang.g:742:5: lv_like_1_0= 'like'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getContentUriQueryParam_LikeLikeKeyword_1_0ElementType());
                      				
                    }
                    lv_like_1_0=(Token)match(input,27,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_like_1_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:757:3: ( (otherlv_2= RULE_ID ) )
            // PsiInternalMickeyLang.g:758:4: (otherlv_2= RULE_ID )
            {
            // PsiInternalMickeyLang.g:758:4: (otherlv_2= RULE_ID )
            // PsiInternalMickeyLang.g:759:5: otherlv_2= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getContentUriQueryParam_ColumnColumnSourceCrossReference_2_0ElementType());
              				
            }
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_2);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleContentUriSegment"
    // PsiInternalMickeyLang.g:778:1: entryRuleContentUriSegment returns [Boolean current=false] : iv_ruleContentUriSegment= ruleContentUriSegment EOF ;
    public final Boolean entryRuleContentUriSegment() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleContentUriSegment = null;


        try {
            // PsiInternalMickeyLang.g:778:59: (iv_ruleContentUriSegment= ruleContentUriSegment EOF )
            // PsiInternalMickeyLang.g:779:2: iv_ruleContentUriSegment= ruleContentUriSegment EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getContentUriSegmentElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleContentUriSegment=ruleContentUriSegment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContentUriSegment; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleContentUriSegment"
    // PsiInternalMickeyLang.g:785:1: ruleContentUriSegment returns [Boolean current=false] : ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' ) ) ;
    public final Boolean ruleContentUriSegment() throws RecognitionException {
        Boolean current = false;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;

        try {
            // PsiInternalMickeyLang.g:786:1: ( ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' ) ) )
            // PsiInternalMickeyLang.g:787:2: ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' ) )
            {
            // PsiInternalMickeyLang.g:787:2: ( ( (lv_name_0_0= RULE_ID ) ) | ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' ) )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==RULE_ID) ) {
                alt17=1;
            }
            else if ( (LA17_0==18) ) {
                alt17=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // PsiInternalMickeyLang.g:788:3: ( (lv_name_0_0= RULE_ID ) )
                    {
                    // PsiInternalMickeyLang.g:788:3: ( (lv_name_0_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:789:4: (lv_name_0_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:789:4: (lv_name_0_0= RULE_ID )
                    // PsiInternalMickeyLang.g:790:5: lv_name_0_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getContentUriSegment_NameIDTerminalRuleCall_0_0ElementType());
                      				
                    }
                    lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					if(!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_name_0_0);
                      				
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:806:3: ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' )
                    {
                    // PsiInternalMickeyLang.g:806:3: ( () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}' )
                    // PsiInternalMickeyLang.g:807:4: () otherlv_2= '{' ( (otherlv_3= RULE_ID ) ) otherlv_4= '}'
                    {
                    // PsiInternalMickeyLang.g:807:4: ()
                    // PsiInternalMickeyLang.g:808:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getContentUriSegment_ContentUriParamSegmentAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getContentUriSegment_LeftCurlyBracketKeyword_1_1ElementType());
                      			
                    }
                    otherlv_2=(Token)match(input,18,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_2);
                      			
                    }
                    // PsiInternalMickeyLang.g:821:4: ( (otherlv_3= RULE_ID ) )
                    // PsiInternalMickeyLang.g:822:5: (otherlv_3= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:822:5: (otherlv_3= RULE_ID )
                    // PsiInternalMickeyLang.g:823:6: otherlv_3= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getContentUriSegment_ParamColumnSourceCrossReference_1_2_0ElementType());
                      					
                    }
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(otherlv_3);
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getContentUriSegment_RightCurlyBracketKeyword_1_3ElementType());
                      			
                    }
                    otherlv_4=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_4);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleMigrationBlock"
    // PsiInternalMickeyLang.g:850:1: entryRuleMigrationBlock returns [Boolean current=false] : iv_ruleMigrationBlock= ruleMigrationBlock EOF ;
    public final Boolean entryRuleMigrationBlock() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleMigrationBlock = null;


        try {
            // PsiInternalMickeyLang.g:850:56: (iv_ruleMigrationBlock= ruleMigrationBlock EOF )
            // PsiInternalMickeyLang.g:851:2: iv_ruleMigrationBlock= ruleMigrationBlock EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getMigrationBlockElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMigrationBlock=ruleMigrationBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMigrationBlock; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleMigrationBlock"
    // PsiInternalMickeyLang.g:857:1: ruleMigrationBlock returns [Boolean current=false] : ( () otherlv_1= 'migrate' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )* otherlv_8= '}' ) ;
    public final Boolean ruleMigrationBlock() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Boolean lv_statements_6_0 = null;


        try {
            // PsiInternalMickeyLang.g:858:1: ( ( () otherlv_1= 'migrate' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )* otherlv_8= '}' ) )
            // PsiInternalMickeyLang.g:859:2: ( () otherlv_1= 'migrate' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )* otherlv_8= '}' )
            {
            // PsiInternalMickeyLang.g:859:2: ( () otherlv_1= 'migrate' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )* otherlv_8= '}' )
            // PsiInternalMickeyLang.g:860:3: () otherlv_1= 'migrate' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )* otherlv_8= '}'
            {
            // PsiInternalMickeyLang.g:860:3: ()
            // PsiInternalMickeyLang.g:861:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getMigrationBlock_MigrationBlockAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMigrationBlock_MigrateKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,28,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:874:3: ( (lv_name_2_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:875:4: (lv_name_2_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:875:4: (lv_name_2_0= RULE_ID )
            // PsiInternalMickeyLang.g:876:5: lv_name_2_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getMigrationBlock_NameIDTerminalRuleCall_2_0ElementType());
              				
            }
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_24); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_2_0);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:891:3: (otherlv_3= 'from' ( ( ruleQualifiedName ) ) )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==29) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // PsiInternalMickeyLang.g:892:4: otherlv_3= 'from' ( ( ruleQualifiedName ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getMigrationBlock_FromKeyword_3_0ElementType());
                      			
                    }
                    otherlv_3=(Token)match(input,29,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_3);
                      			
                    }
                    // PsiInternalMickeyLang.g:899:4: ( ( ruleQualifiedName ) )
                    // PsiInternalMickeyLang.g:900:5: ( ruleQualifiedName )
                    {
                    // PsiInternalMickeyLang.g:900:5: ( ruleQualifiedName )
                    // PsiInternalMickeyLang.g:901:6: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getMigrationBlock_FromMigrationBlockCrossReference_3_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_10);
                    ruleQualifiedName();

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

                      						doneComposite();
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMigrationBlock_LeftCurlyBracketKeyword_4ElementType());
              		
            }
            otherlv_5=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_5);
              		
            }
            // PsiInternalMickeyLang.g:924:3: ( ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';' )*
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==93||LA19_0==107||LA19_0==110) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:925:4: ( (lv_statements_6_0= ruleDDLStatement ) ) otherlv_7= ';'
            	    {
            	    // PsiInternalMickeyLang.g:925:4: ( (lv_statements_6_0= ruleDDLStatement ) )
            	    // PsiInternalMickeyLang.g:926:5: (lv_statements_6_0= ruleDDLStatement )
            	    {
            	    // PsiInternalMickeyLang.g:926:5: (lv_statements_6_0= ruleDDLStatement )
            	    // PsiInternalMickeyLang.g:927:6: lv_statements_6_0= ruleDDLStatement
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getMigrationBlock_StatementsDDLStatementParserRuleCall_5_0_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_12);
            	    lv_statements_6_0=ruleDDLStatement();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getMigrationBlock_SemicolonKeyword_5_1ElementType());
            	      			
            	    }
            	    otherlv_7=(Token)match(input,19,FOLLOW_25); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_7);
            	      			
            	    }

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getMigrationBlock_RightCurlyBracketKeyword_6ElementType());
              		
            }
            otherlv_8=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_8);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleSqlExpression"
    // PsiInternalMickeyLang.g:959:1: entryRuleSqlExpression returns [Boolean current=false] : iv_ruleSqlExpression= ruleSqlExpression EOF ;
    public final Boolean entryRuleSqlExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSqlExpression = null;


        try {
            // PsiInternalMickeyLang.g:959:55: (iv_ruleSqlExpression= ruleSqlExpression EOF )
            // PsiInternalMickeyLang.g:960:2: iv_ruleSqlExpression= ruleSqlExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSqlExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSqlExpression=ruleSqlExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSqlExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSqlExpression"
    // PsiInternalMickeyLang.g:966:1: ruleSqlExpression returns [Boolean current=false] : this_ExprConcat_0= ruleExprConcat ;
    public final Boolean ruleSqlExpression() throws RecognitionException {
        Boolean current = false;

        Boolean this_ExprConcat_0 = null;


        try {
            // PsiInternalMickeyLang.g:967:1: (this_ExprConcat_0= ruleExprConcat )
            // PsiInternalMickeyLang.g:968:2: this_ExprConcat_0= ruleExprConcat
            {
            if ( state.backtracking==0 ) {

              		markComposite(elementTypeProvider.getSqlExpression_ExprConcatParserRuleCallElementType());
              	
            }
            pushFollow(FOLLOW_2);
            this_ExprConcat_0=ruleExprConcat();

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

              		current = this_ExprConcat_0;
              		doneComposite();
              	
            }

            }

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


    // $ANTLR start "entryRuleExprConcat"
    // PsiInternalMickeyLang.g:979:1: entryRuleExprConcat returns [Boolean current=false] : iv_ruleExprConcat= ruleExprConcat EOF ;
    public final Boolean entryRuleExprConcat() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprConcat = null;


        try {
            // PsiInternalMickeyLang.g:979:52: (iv_ruleExprConcat= ruleExprConcat EOF )
            // PsiInternalMickeyLang.g:980:2: iv_ruleExprConcat= ruleExprConcat EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprConcatElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprConcat=ruleExprConcat();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprConcat; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprConcat"
    // PsiInternalMickeyLang.g:986:1: ruleExprConcat returns [Boolean current=false] : (this_ExprMult_0= ruleExprMult ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )* ) ;
    public final Boolean ruleExprConcat() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_0=null;
        Boolean this_ExprMult_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:987:1: ( (this_ExprMult_0= ruleExprMult ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )* ) )
            // PsiInternalMickeyLang.g:988:2: (this_ExprMult_0= ruleExprMult ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )* )
            {
            // PsiInternalMickeyLang.g:988:2: (this_ExprMult_0= ruleExprMult ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )* )
            // PsiInternalMickeyLang.g:989:3: this_ExprMult_0= ruleExprMult ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprConcat_ExprMultParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_26);
            this_ExprMult_0=ruleExprMult();

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

              			current = this_ExprMult_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:997:3: ( () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

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


                switch (alt20) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:998:4: () ( (lv_op_2_0= '||' ) ) ( (lv_right_3_0= ruleExprMult ) )
            	    {
            	    // PsiInternalMickeyLang.g:998:4: ()
            	    // PsiInternalMickeyLang.g:999:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprConcat_ExprConcatLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1005:4: ( (lv_op_2_0= '||' ) )
            	    // PsiInternalMickeyLang.g:1006:5: (lv_op_2_0= '||' )
            	    {
            	    // PsiInternalMickeyLang.g:1006:5: (lv_op_2_0= '||' )
            	    // PsiInternalMickeyLang.g:1007:6: lv_op_2_0= '||'
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markLeaf(elementTypeProvider.getExprConcat_OpVerticalLineVerticalLineKeyword_1_1_0ElementType());
            	      					
            	    }
            	    lv_op_2_0=(Token)match(input,30,FOLLOW_27); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						doneLeaf(lv_op_2_0);
            	      					
            	    }
            	    if ( state.backtracking==0 ) {

            	      						if (!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1022:4: ( (lv_right_3_0= ruleExprMult ) )
            	    // PsiInternalMickeyLang.g:1023:5: (lv_right_3_0= ruleExprMult )
            	    {
            	    // PsiInternalMickeyLang.g:1023:5: (lv_right_3_0= ruleExprMult )
            	    // PsiInternalMickeyLang.g:1024:6: lv_right_3_0= ruleExprMult
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprConcat_RightExprMultParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_26);
            	    lv_right_3_0=ruleExprMult();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprMult"
    // PsiInternalMickeyLang.g:1042:1: entryRuleExprMult returns [Boolean current=false] : iv_ruleExprMult= ruleExprMult EOF ;
    public final Boolean entryRuleExprMult() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprMult = null;


        try {
            // PsiInternalMickeyLang.g:1042:50: (iv_ruleExprMult= ruleExprMult EOF )
            // PsiInternalMickeyLang.g:1043:2: iv_ruleExprMult= ruleExprMult EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprMultElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprMult=ruleExprMult();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprMult; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprMult"
    // PsiInternalMickeyLang.g:1049:1: ruleExprMult returns [Boolean current=false] : (this_ExprAdd_0= ruleExprAdd ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )* ) ;
    public final Boolean ruleExprMult() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_1=null;
        Token lv_op_2_2=null;
        Token lv_op_2_3=null;
        Boolean this_ExprAdd_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1050:1: ( (this_ExprAdd_0= ruleExprAdd ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )* ) )
            // PsiInternalMickeyLang.g:1051:2: (this_ExprAdd_0= ruleExprAdd ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )* )
            {
            // PsiInternalMickeyLang.g:1051:2: (this_ExprAdd_0= ruleExprAdd ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )* )
            // PsiInternalMickeyLang.g:1052:3: this_ExprAdd_0= ruleExprAdd ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprMult_ExprAddParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_28);
            this_ExprAdd_0=ruleExprAdd();

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

              			current = this_ExprAdd_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1060:3: ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==25||(LA22_0>=31 && LA22_0<=32)) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1061:4: () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) ) ( (lv_right_3_0= ruleExprAdd ) )
            	    {
            	    // PsiInternalMickeyLang.g:1061:4: ()
            	    // PsiInternalMickeyLang.g:1062:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprMult_ExprMultLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1068:4: ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) ) )
            	    // PsiInternalMickeyLang.g:1069:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) )
            	    {
            	    // PsiInternalMickeyLang.g:1069:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' ) )
            	    // PsiInternalMickeyLang.g:1070:6: (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' )
            	    {
            	    // PsiInternalMickeyLang.g:1070:6: (lv_op_2_1= '*' | lv_op_2_2= '/' | lv_op_2_3= '%' )
            	    int alt21=3;
            	    switch ( input.LA(1) ) {
            	    case 31:
            	        {
            	        alt21=1;
            	        }
            	        break;
            	    case 25:
            	        {
            	        alt21=2;
            	        }
            	        break;
            	    case 32:
            	        {
            	        alt21=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 21, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt21) {
            	        case 1 :
            	            // PsiInternalMickeyLang.g:1071:7: lv_op_2_1= '*'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprMult_OpAsteriskKeyword_1_1_0_0ElementType());
            	              						
            	            }
            	            lv_op_2_1=(Token)match(input,31,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_1);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // PsiInternalMickeyLang.g:1085:7: lv_op_2_2= '/'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprMult_OpSolidusKeyword_1_1_0_1ElementType());
            	              						
            	            }
            	            lv_op_2_2=(Token)match(input,25,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_2);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // PsiInternalMickeyLang.g:1099:7: lv_op_2_3= '%'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprMult_OpPercentSignKeyword_1_1_0_2ElementType());
            	              						
            	            }
            	            lv_op_2_3=(Token)match(input,32,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_3);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1115:4: ( (lv_right_3_0= ruleExprAdd ) )
            	    // PsiInternalMickeyLang.g:1116:5: (lv_right_3_0= ruleExprAdd )
            	    {
            	    // PsiInternalMickeyLang.g:1116:5: (lv_right_3_0= ruleExprAdd )
            	    // PsiInternalMickeyLang.g:1117:6: lv_right_3_0= ruleExprAdd
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprMult_RightExprAddParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_28);
            	    lv_right_3_0=ruleExprAdd();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprAdd"
    // PsiInternalMickeyLang.g:1135:1: entryRuleExprAdd returns [Boolean current=false] : iv_ruleExprAdd= ruleExprAdd EOF ;
    public final Boolean entryRuleExprAdd() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprAdd = null;


        try {
            // PsiInternalMickeyLang.g:1135:49: (iv_ruleExprAdd= ruleExprAdd EOF )
            // PsiInternalMickeyLang.g:1136:2: iv_ruleExprAdd= ruleExprAdd EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprAddElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprAdd=ruleExprAdd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprAdd; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprAdd"
    // PsiInternalMickeyLang.g:1142:1: ruleExprAdd returns [Boolean current=false] : (this_ExprBit_0= ruleExprBit ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )* ) ;
    public final Boolean ruleExprAdd() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_1=null;
        Token lv_op_2_2=null;
        Boolean this_ExprBit_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1143:1: ( (this_ExprBit_0= ruleExprBit ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )* ) )
            // PsiInternalMickeyLang.g:1144:2: (this_ExprBit_0= ruleExprBit ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )* )
            {
            // PsiInternalMickeyLang.g:1144:2: (this_ExprBit_0= ruleExprBit ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )* )
            // PsiInternalMickeyLang.g:1145:3: this_ExprBit_0= ruleExprBit ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprAdd_ExprBitParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_29);
            this_ExprBit_0=ruleExprBit();

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

              			current = this_ExprBit_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1153:3: ( () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( ((LA24_0>=33 && LA24_0<=34)) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1154:4: () ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) ) ( (lv_right_3_0= ruleExprBit ) )
            	    {
            	    // PsiInternalMickeyLang.g:1154:4: ()
            	    // PsiInternalMickeyLang.g:1155:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprAdd_ExprAddLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1161:4: ( ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) ) )
            	    // PsiInternalMickeyLang.g:1162:5: ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) )
            	    {
            	    // PsiInternalMickeyLang.g:1162:5: ( (lv_op_2_1= '+' | lv_op_2_2= '-' ) )
            	    // PsiInternalMickeyLang.g:1163:6: (lv_op_2_1= '+' | lv_op_2_2= '-' )
            	    {
            	    // PsiInternalMickeyLang.g:1163:6: (lv_op_2_1= '+' | lv_op_2_2= '-' )
            	    int alt23=2;
            	    int LA23_0 = input.LA(1);

            	    if ( (LA23_0==33) ) {
            	        alt23=1;
            	    }
            	    else if ( (LA23_0==34) ) {
            	        alt23=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 23, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt23) {
            	        case 1 :
            	            // PsiInternalMickeyLang.g:1164:7: lv_op_2_1= '+'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprAdd_OpPlusSignKeyword_1_1_0_0ElementType());
            	              						
            	            }
            	            lv_op_2_1=(Token)match(input,33,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_1);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // PsiInternalMickeyLang.g:1178:7: lv_op_2_2= '-'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprAdd_OpHyphenMinusKeyword_1_1_0_1ElementType());
            	              						
            	            }
            	            lv_op_2_2=(Token)match(input,34,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_2);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1194:4: ( (lv_right_3_0= ruleExprBit ) )
            	    // PsiInternalMickeyLang.g:1195:5: (lv_right_3_0= ruleExprBit )
            	    {
            	    // PsiInternalMickeyLang.g:1195:5: (lv_right_3_0= ruleExprBit )
            	    // PsiInternalMickeyLang.g:1196:6: lv_right_3_0= ruleExprBit
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprAdd_RightExprBitParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_29);
            	    lv_right_3_0=ruleExprBit();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprBit"
    // PsiInternalMickeyLang.g:1214:1: entryRuleExprBit returns [Boolean current=false] : iv_ruleExprBit= ruleExprBit EOF ;
    public final Boolean entryRuleExprBit() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprBit = null;


        try {
            // PsiInternalMickeyLang.g:1214:49: (iv_ruleExprBit= ruleExprBit EOF )
            // PsiInternalMickeyLang.g:1215:2: iv_ruleExprBit= ruleExprBit EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprBitElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprBit=ruleExprBit();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprBit; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprBit"
    // PsiInternalMickeyLang.g:1221:1: ruleExprBit returns [Boolean current=false] : (this_ExprRelate_0= ruleExprRelate ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )* ) ;
    public final Boolean ruleExprBit() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_1=null;
        Token lv_op_2_2=null;
        Token lv_op_2_3=null;
        Token lv_op_2_4=null;
        Boolean this_ExprRelate_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1222:1: ( (this_ExprRelate_0= ruleExprRelate ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )* ) )
            // PsiInternalMickeyLang.g:1223:2: (this_ExprRelate_0= ruleExprRelate ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )* )
            {
            // PsiInternalMickeyLang.g:1223:2: (this_ExprRelate_0= ruleExprRelate ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )* )
            // PsiInternalMickeyLang.g:1224:3: this_ExprRelate_0= ruleExprRelate ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprBit_ExprRelateParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_30);
            this_ExprRelate_0=ruleExprRelate();

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

              			current = this_ExprRelate_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1232:3: ( () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) ) )*
            loop26:
            do {
                int alt26=2;
                int LA26_0 = input.LA(1);

                if ( ((LA26_0>=35 && LA26_0<=38)) ) {
                    alt26=1;
                }


                switch (alt26) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1233:4: () ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) ) ( (lv_right_3_0= ruleExprRelate ) )
            	    {
            	    // PsiInternalMickeyLang.g:1233:4: ()
            	    // PsiInternalMickeyLang.g:1234:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprBit_ExprBitLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1240:4: ( ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) ) )
            	    // PsiInternalMickeyLang.g:1241:5: ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) )
            	    {
            	    // PsiInternalMickeyLang.g:1241:5: ( (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' ) )
            	    // PsiInternalMickeyLang.g:1242:6: (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' )
            	    {
            	    // PsiInternalMickeyLang.g:1242:6: (lv_op_2_1= '<<' | lv_op_2_2= '>>' | lv_op_2_3= '&' | lv_op_2_4= '|' )
            	    int alt25=4;
            	    switch ( input.LA(1) ) {
            	    case 35:
            	        {
            	        alt25=1;
            	        }
            	        break;
            	    case 36:
            	        {
            	        alt25=2;
            	        }
            	        break;
            	    case 37:
            	        {
            	        alt25=3;
            	        }
            	        break;
            	    case 38:
            	        {
            	        alt25=4;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 25, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt25) {
            	        case 1 :
            	            // PsiInternalMickeyLang.g:1243:7: lv_op_2_1= '<<'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprBit_OpLessThanSignLessThanSignKeyword_1_1_0_0ElementType());
            	              						
            	            }
            	            lv_op_2_1=(Token)match(input,35,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_1);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // PsiInternalMickeyLang.g:1257:7: lv_op_2_2= '>>'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprBit_OpGreaterThanSignGreaterThanSignKeyword_1_1_0_1ElementType());
            	              						
            	            }
            	            lv_op_2_2=(Token)match(input,36,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_2);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // PsiInternalMickeyLang.g:1271:7: lv_op_2_3= '&'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprBit_OpAmpersandKeyword_1_1_0_2ElementType());
            	              						
            	            }
            	            lv_op_2_3=(Token)match(input,37,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_3);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // PsiInternalMickeyLang.g:1285:7: lv_op_2_4= '|'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprBit_OpVerticalLineKeyword_1_1_0_3ElementType());
            	              						
            	            }
            	            lv_op_2_4=(Token)match(input,38,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_4);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1301:4: ( (lv_right_3_0= ruleExprRelate ) )
            	    // PsiInternalMickeyLang.g:1302:5: (lv_right_3_0= ruleExprRelate )
            	    {
            	    // PsiInternalMickeyLang.g:1302:5: (lv_right_3_0= ruleExprRelate )
            	    // PsiInternalMickeyLang.g:1303:6: lv_right_3_0= ruleExprRelate
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprBit_RightExprRelateParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_30);
            	    lv_right_3_0=ruleExprRelate();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprRelate"
    // PsiInternalMickeyLang.g:1321:1: entryRuleExprRelate returns [Boolean current=false] : iv_ruleExprRelate= ruleExprRelate EOF ;
    public final Boolean entryRuleExprRelate() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprRelate = null;


        try {
            // PsiInternalMickeyLang.g:1321:52: (iv_ruleExprRelate= ruleExprRelate EOF )
            // PsiInternalMickeyLang.g:1322:2: iv_ruleExprRelate= ruleExprRelate EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprRelateElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprRelate=ruleExprRelate();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprRelate; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprRelate"
    // PsiInternalMickeyLang.g:1328:1: ruleExprRelate returns [Boolean current=false] : (this_ExprEqual_0= ruleExprEqual ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )* ) ;
    public final Boolean ruleExprRelate() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_1=null;
        Token lv_op_2_2=null;
        Token lv_op_2_3=null;
        Token lv_op_2_4=null;
        Boolean this_ExprEqual_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1329:1: ( (this_ExprEqual_0= ruleExprEqual ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )* ) )
            // PsiInternalMickeyLang.g:1330:2: (this_ExprEqual_0= ruleExprEqual ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )* )
            {
            // PsiInternalMickeyLang.g:1330:2: (this_ExprEqual_0= ruleExprEqual ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )* )
            // PsiInternalMickeyLang.g:1331:3: this_ExprEqual_0= ruleExprEqual ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprRelate_ExprEqualParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_31);
            this_ExprEqual_0=ruleExprEqual();

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

              			current = this_ExprEqual_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1339:3: ( () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) ) )*
            loop28:
            do {
                int alt28=2;
                int LA28_0 = input.LA(1);

                if ( ((LA28_0>=39 && LA28_0<=42)) ) {
                    alt28=1;
                }


                switch (alt28) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1340:4: () ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) ) ( (lv_right_3_0= ruleExprEqual ) )
            	    {
            	    // PsiInternalMickeyLang.g:1340:4: ()
            	    // PsiInternalMickeyLang.g:1341:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprRelate_ExprRelateLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1347:4: ( ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) ) )
            	    // PsiInternalMickeyLang.g:1348:5: ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) )
            	    {
            	    // PsiInternalMickeyLang.g:1348:5: ( (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' ) )
            	    // PsiInternalMickeyLang.g:1349:6: (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' )
            	    {
            	    // PsiInternalMickeyLang.g:1349:6: (lv_op_2_1= '<' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '>=' )
            	    int alt27=4;
            	    switch ( input.LA(1) ) {
            	    case 39:
            	        {
            	        alt27=1;
            	        }
            	        break;
            	    case 40:
            	        {
            	        alt27=2;
            	        }
            	        break;
            	    case 41:
            	        {
            	        alt27=3;
            	        }
            	        break;
            	    case 42:
            	        {
            	        alt27=4;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 27, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt27) {
            	        case 1 :
            	            // PsiInternalMickeyLang.g:1350:7: lv_op_2_1= '<'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprRelate_OpLessThanSignKeyword_1_1_0_0ElementType());
            	              						
            	            }
            	            lv_op_2_1=(Token)match(input,39,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_1);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // PsiInternalMickeyLang.g:1364:7: lv_op_2_2= '<='
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprRelate_OpLessThanSignEqualsSignKeyword_1_1_0_1ElementType());
            	              						
            	            }
            	            lv_op_2_2=(Token)match(input,40,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_2);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // PsiInternalMickeyLang.g:1378:7: lv_op_2_3= '>'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprRelate_OpGreaterThanSignKeyword_1_1_0_2ElementType());
            	              						
            	            }
            	            lv_op_2_3=(Token)match(input,41,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_3);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // PsiInternalMickeyLang.g:1392:7: lv_op_2_4= '>='
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprRelate_OpGreaterThanSignEqualsSignKeyword_1_1_0_3ElementType());
            	              						
            	            }
            	            lv_op_2_4=(Token)match(input,42,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_4);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1408:4: ( (lv_right_3_0= ruleExprEqual ) )
            	    // PsiInternalMickeyLang.g:1409:5: (lv_right_3_0= ruleExprEqual )
            	    {
            	    // PsiInternalMickeyLang.g:1409:5: (lv_right_3_0= ruleExprEqual )
            	    // PsiInternalMickeyLang.g:1410:6: lv_right_3_0= ruleExprEqual
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprRelate_RightExprEqualParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_31);
            	    lv_right_3_0=ruleExprEqual();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprEqual"
    // PsiInternalMickeyLang.g:1428:1: entryRuleExprEqual returns [Boolean current=false] : iv_ruleExprEqual= ruleExprEqual EOF ;
    public final Boolean entryRuleExprEqual() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprEqual = null;


        try {
            // PsiInternalMickeyLang.g:1428:51: (iv_ruleExprEqual= ruleExprEqual EOF )
            // PsiInternalMickeyLang.g:1429:2: iv_ruleExprEqual= ruleExprEqual EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprEqualElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprEqual=ruleExprEqual();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprEqual; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprEqual"
    // PsiInternalMickeyLang.g:1435:1: ruleExprEqual returns [Boolean current=false] : (this_ExprAnd_0= ruleExprAnd ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )* ) ;
    public final Boolean ruleExprEqual() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_1=null;
        Token lv_op_2_2=null;
        Token lv_op_2_3=null;
        Token lv_op_2_4=null;
        Token lv_op_2_5=null;
        Token lv_op_2_6=null;
        Token lv_op_2_7=null;
        Token lv_op_2_8=null;
        Token lv_op_2_9=null;
        Token lv_op_2_10=null;
        Token lv_op_2_11=null;
        Token lv_op_2_12=null;
        Boolean this_ExprAnd_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1436:1: ( (this_ExprAnd_0= ruleExprAnd ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )* ) )
            // PsiInternalMickeyLang.g:1437:2: (this_ExprAnd_0= ruleExprAnd ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )* )
            {
            // PsiInternalMickeyLang.g:1437:2: (this_ExprAnd_0= ruleExprAnd ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )* )
            // PsiInternalMickeyLang.g:1438:3: this_ExprAnd_0= ruleExprAnd ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprEqual_ExprAndParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_32);
            this_ExprAnd_0=ruleExprAnd();

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

              			current = this_ExprAnd_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1446:3: ( () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) ) )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==27||(LA30_0>=43 && LA30_0<=53)) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1447:4: () ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) ) ( (lv_right_3_0= ruleExprAnd ) )
            	    {
            	    // PsiInternalMickeyLang.g:1447:4: ()
            	    // PsiInternalMickeyLang.g:1448:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprEqual_ExprEqualLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1454:4: ( ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) ) )
            	    // PsiInternalMickeyLang.g:1455:5: ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) )
            	    {
            	    // PsiInternalMickeyLang.g:1455:5: ( (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' ) )
            	    // PsiInternalMickeyLang.g:1456:6: (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' )
            	    {
            	    // PsiInternalMickeyLang.g:1456:6: (lv_op_2_1= '=' | lv_op_2_2= '==' | lv_op_2_3= '!=' | lv_op_2_4= '<>' | lv_op_2_5= 'is' | lv_op_2_6= 'is not' | lv_op_2_7= 'in' | lv_op_2_8= 'not in' | lv_op_2_9= 'like' | lv_op_2_10= 'glob' | lv_op_2_11= 'match' | lv_op_2_12= 'regexp' )
            	    int alt29=12;
            	    switch ( input.LA(1) ) {
            	    case 43:
            	        {
            	        alt29=1;
            	        }
            	        break;
            	    case 44:
            	        {
            	        alt29=2;
            	        }
            	        break;
            	    case 45:
            	        {
            	        alt29=3;
            	        }
            	        break;
            	    case 46:
            	        {
            	        alt29=4;
            	        }
            	        break;
            	    case 47:
            	        {
            	        alt29=5;
            	        }
            	        break;
            	    case 48:
            	        {
            	        alt29=6;
            	        }
            	        break;
            	    case 49:
            	        {
            	        alt29=7;
            	        }
            	        break;
            	    case 50:
            	        {
            	        alt29=8;
            	        }
            	        break;
            	    case 27:
            	        {
            	        alt29=9;
            	        }
            	        break;
            	    case 51:
            	        {
            	        alt29=10;
            	        }
            	        break;
            	    case 52:
            	        {
            	        alt29=11;
            	        }
            	        break;
            	    case 53:
            	        {
            	        alt29=12;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 29, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt29) {
            	        case 1 :
            	            // PsiInternalMickeyLang.g:1457:7: lv_op_2_1= '='
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpEqualsSignKeyword_1_1_0_0ElementType());
            	              						
            	            }
            	            lv_op_2_1=(Token)match(input,43,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_1);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // PsiInternalMickeyLang.g:1471:7: lv_op_2_2= '=='
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpEqualsSignEqualsSignKeyword_1_1_0_1ElementType());
            	              						
            	            }
            	            lv_op_2_2=(Token)match(input,44,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_2);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // PsiInternalMickeyLang.g:1485:7: lv_op_2_3= '!='
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpExclamationMarkEqualsSignKeyword_1_1_0_2ElementType());
            	              						
            	            }
            	            lv_op_2_3=(Token)match(input,45,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_3);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // PsiInternalMickeyLang.g:1499:7: lv_op_2_4= '<>'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpLessThanSignGreaterThanSignKeyword_1_1_0_3ElementType());
            	              						
            	            }
            	            lv_op_2_4=(Token)match(input,46,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_4);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 5 :
            	            // PsiInternalMickeyLang.g:1513:7: lv_op_2_5= 'is'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpIsKeyword_1_1_0_4ElementType());
            	              						
            	            }
            	            lv_op_2_5=(Token)match(input,47,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_5);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 6 :
            	            // PsiInternalMickeyLang.g:1527:7: lv_op_2_6= 'is not'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpIsNotKeyword_1_1_0_5ElementType());
            	              						
            	            }
            	            lv_op_2_6=(Token)match(input,48,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_6);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 7 :
            	            // PsiInternalMickeyLang.g:1541:7: lv_op_2_7= 'in'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpInKeyword_1_1_0_6ElementType());
            	              						
            	            }
            	            lv_op_2_7=(Token)match(input,49,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_7);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 8 :
            	            // PsiInternalMickeyLang.g:1555:7: lv_op_2_8= 'not in'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpNotInKeyword_1_1_0_7ElementType());
            	              						
            	            }
            	            lv_op_2_8=(Token)match(input,50,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_8);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 9 :
            	            // PsiInternalMickeyLang.g:1569:7: lv_op_2_9= 'like'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpLikeKeyword_1_1_0_8ElementType());
            	              						
            	            }
            	            lv_op_2_9=(Token)match(input,27,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_9);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 10 :
            	            // PsiInternalMickeyLang.g:1583:7: lv_op_2_10= 'glob'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpGlobKeyword_1_1_0_9ElementType());
            	              						
            	            }
            	            lv_op_2_10=(Token)match(input,51,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_10);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 11 :
            	            // PsiInternalMickeyLang.g:1597:7: lv_op_2_11= 'match'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpMatchKeyword_1_1_0_10ElementType());
            	              						
            	            }
            	            lv_op_2_11=(Token)match(input,52,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_11);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;
            	        case 12 :
            	            // PsiInternalMickeyLang.g:1611:7: lv_op_2_12= 'regexp'
            	            {
            	            if ( state.backtracking==0 ) {

            	              							markLeaf(elementTypeProvider.getExprEqual_OpRegexpKeyword_1_1_0_11ElementType());
            	              						
            	            }
            	            lv_op_2_12=(Token)match(input,53,FOLLOW_27); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              							doneLeaf(lv_op_2_12);
            	              						
            	            }
            	            if ( state.backtracking==0 ) {

            	              							if (!current) {
            	              								associateWithSemanticElement();
            	              								current = true;
            	              							}
            	              						
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1627:4: ( (lv_right_3_0= ruleExprAnd ) )
            	    // PsiInternalMickeyLang.g:1628:5: (lv_right_3_0= ruleExprAnd )
            	    {
            	    // PsiInternalMickeyLang.g:1628:5: (lv_right_3_0= ruleExprAnd )
            	    // PsiInternalMickeyLang.g:1629:6: lv_right_3_0= ruleExprAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprEqual_RightExprAndParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_32);
            	    lv_right_3_0=ruleExprAnd();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprAnd"
    // PsiInternalMickeyLang.g:1647:1: entryRuleExprAnd returns [Boolean current=false] : iv_ruleExprAnd= ruleExprAnd EOF ;
    public final Boolean entryRuleExprAnd() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprAnd = null;


        try {
            // PsiInternalMickeyLang.g:1647:49: (iv_ruleExprAnd= ruleExprAnd EOF )
            // PsiInternalMickeyLang.g:1648:2: iv_ruleExprAnd= ruleExprAnd EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprAndElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprAnd=ruleExprAnd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprAnd; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprAnd"
    // PsiInternalMickeyLang.g:1654:1: ruleExprAnd returns [Boolean current=false] : (this_ExprOr_0= ruleExprOr ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )* ) ;
    public final Boolean ruleExprAnd() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_0=null;
        Boolean this_ExprOr_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1655:1: ( (this_ExprOr_0= ruleExprOr ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )* ) )
            // PsiInternalMickeyLang.g:1656:2: (this_ExprOr_0= ruleExprOr ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )* )
            {
            // PsiInternalMickeyLang.g:1656:2: (this_ExprOr_0= ruleExprOr ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )* )
            // PsiInternalMickeyLang.g:1657:3: this_ExprOr_0= ruleExprOr ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprAnd_ExprOrParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_33);
            this_ExprOr_0=ruleExprOr();

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

              			current = this_ExprOr_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1665:3: ( () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) ) )*
            loop31:
            do {
                int alt31=2;
                int LA31_0 = input.LA(1);

                if ( (LA31_0==54) ) {
                    alt31=1;
                }


                switch (alt31) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1666:4: () ( (lv_op_2_0= 'and' ) ) ( (lv_right_3_0= ruleExprOr ) )
            	    {
            	    // PsiInternalMickeyLang.g:1666:4: ()
            	    // PsiInternalMickeyLang.g:1667:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprAnd_ExprAndLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1673:4: ( (lv_op_2_0= 'and' ) )
            	    // PsiInternalMickeyLang.g:1674:5: (lv_op_2_0= 'and' )
            	    {
            	    // PsiInternalMickeyLang.g:1674:5: (lv_op_2_0= 'and' )
            	    // PsiInternalMickeyLang.g:1675:6: lv_op_2_0= 'and'
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markLeaf(elementTypeProvider.getExprAnd_OpAndKeyword_1_1_0ElementType());
            	      					
            	    }
            	    lv_op_2_0=(Token)match(input,54,FOLLOW_27); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						doneLeaf(lv_op_2_0);
            	      					
            	    }
            	    if ( state.backtracking==0 ) {

            	      						if (!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1690:4: ( (lv_right_3_0= ruleExprOr ) )
            	    // PsiInternalMickeyLang.g:1691:5: (lv_right_3_0= ruleExprOr )
            	    {
            	    // PsiInternalMickeyLang.g:1691:5: (lv_right_3_0= ruleExprOr )
            	    // PsiInternalMickeyLang.g:1692:6: lv_right_3_0= ruleExprOr
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprAnd_RightExprOrParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_33);
            	    lv_right_3_0=ruleExprOr();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleExprOr"
    // PsiInternalMickeyLang.g:1710:1: entryRuleExprOr returns [Boolean current=false] : iv_ruleExprOr= ruleExprOr EOF ;
    public final Boolean entryRuleExprOr() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleExprOr = null;


        try {
            // PsiInternalMickeyLang.g:1710:48: (iv_ruleExprOr= ruleExprOr EOF )
            // PsiInternalMickeyLang.g:1711:2: iv_ruleExprOr= ruleExprOr EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getExprOrElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExprOr=ruleExprOr();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExprOr; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleExprOr"
    // PsiInternalMickeyLang.g:1717:1: ruleExprOr returns [Boolean current=false] : (this_NullCheckExpression_0= ruleNullCheckExpression ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )* ) ;
    public final Boolean ruleExprOr() throws RecognitionException {
        Boolean current = false;

        Token lv_op_2_0=null;
        Boolean this_NullCheckExpression_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:1718:1: ( (this_NullCheckExpression_0= ruleNullCheckExpression ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )* ) )
            // PsiInternalMickeyLang.g:1719:2: (this_NullCheckExpression_0= ruleNullCheckExpression ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )* )
            {
            // PsiInternalMickeyLang.g:1719:2: (this_NullCheckExpression_0= ruleNullCheckExpression ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )* )
            // PsiInternalMickeyLang.g:1720:3: this_NullCheckExpression_0= ruleNullCheckExpression ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getExprOr_NullCheckExpressionParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_34);
            this_NullCheckExpression_0=ruleNullCheckExpression();

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

              			current = this_NullCheckExpression_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1728:3: ( () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) ) )*
            loop32:
            do {
                int alt32=2;
                int LA32_0 = input.LA(1);

                if ( (LA32_0==55) ) {
                    alt32=1;
                }


                switch (alt32) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:1729:4: () ( (lv_op_2_0= 'or' ) ) ( (lv_right_3_0= ruleNullCheckExpression ) )
            	    {
            	    // PsiInternalMickeyLang.g:1729:4: ()
            	    // PsiInternalMickeyLang.g:1730:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getExprOr_ExprOrLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:1736:4: ( (lv_op_2_0= 'or' ) )
            	    // PsiInternalMickeyLang.g:1737:5: (lv_op_2_0= 'or' )
            	    {
            	    // PsiInternalMickeyLang.g:1737:5: (lv_op_2_0= 'or' )
            	    // PsiInternalMickeyLang.g:1738:6: lv_op_2_0= 'or'
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markLeaf(elementTypeProvider.getExprOr_OpOrKeyword_1_1_0ElementType());
            	      					
            	    }
            	    lv_op_2_0=(Token)match(input,55,FOLLOW_27); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						doneLeaf(lv_op_2_0);
            	      					
            	    }
            	    if ( state.backtracking==0 ) {

            	      						if (!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    // PsiInternalMickeyLang.g:1753:4: ( (lv_right_3_0= ruleNullCheckExpression ) )
            	    // PsiInternalMickeyLang.g:1754:5: (lv_right_3_0= ruleNullCheckExpression )
            	    {
            	    // PsiInternalMickeyLang.g:1754:5: (lv_right_3_0= ruleNullCheckExpression )
            	    // PsiInternalMickeyLang.g:1755:6: lv_right_3_0= ruleNullCheckExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getExprOr_RightNullCheckExpressionParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_34);
            	    lv_right_3_0=ruleNullCheckExpression();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleNullCheckExpression"
    // PsiInternalMickeyLang.g:1773:1: entryRuleNullCheckExpression returns [Boolean current=false] : iv_ruleNullCheckExpression= ruleNullCheckExpression EOF ;
    public final Boolean entryRuleNullCheckExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleNullCheckExpression = null;


        try {
            // PsiInternalMickeyLang.g:1773:61: (iv_ruleNullCheckExpression= ruleNullCheckExpression EOF )
            // PsiInternalMickeyLang.g:1774:2: iv_ruleNullCheckExpression= ruleNullCheckExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getNullCheckExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNullCheckExpression=ruleNullCheckExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNullCheckExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleNullCheckExpression"
    // PsiInternalMickeyLang.g:1780:1: ruleNullCheckExpression returns [Boolean current=false] : (this_PrimaryExpression_0= rulePrimaryExpression ( () ( (lv_right_2_0= ruleNullExpression ) ) )? ) ;
    public final Boolean ruleNullCheckExpression() throws RecognitionException {
        Boolean current = false;

        Boolean this_PrimaryExpression_0 = null;

        Boolean lv_right_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:1781:1: ( (this_PrimaryExpression_0= rulePrimaryExpression ( () ( (lv_right_2_0= ruleNullExpression ) ) )? ) )
            // PsiInternalMickeyLang.g:1782:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( (lv_right_2_0= ruleNullExpression ) ) )? )
            {
            // PsiInternalMickeyLang.g:1782:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( (lv_right_2_0= ruleNullExpression ) ) )? )
            // PsiInternalMickeyLang.g:1783:3: this_PrimaryExpression_0= rulePrimaryExpression ( () ( (lv_right_2_0= ruleNullExpression ) ) )?
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getNullCheckExpression_PrimaryExpressionParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_35);
            this_PrimaryExpression_0=rulePrimaryExpression();

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

              			current = this_PrimaryExpression_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:1791:3: ( () ( (lv_right_2_0= ruleNullExpression ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( ((LA33_0>=56 && LA33_0<=58)) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // PsiInternalMickeyLang.g:1792:4: () ( (lv_right_2_0= ruleNullExpression ) )
                    {
                    // PsiInternalMickeyLang.g:1792:4: ()
                    // PsiInternalMickeyLang.g:1793:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getNullCheckExpression_NullCheckExpressionLeftAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:1799:4: ( (lv_right_2_0= ruleNullExpression ) )
                    // PsiInternalMickeyLang.g:1800:5: (lv_right_2_0= ruleNullExpression )
                    {
                    // PsiInternalMickeyLang.g:1800:5: (lv_right_2_0= ruleNullExpression )
                    // PsiInternalMickeyLang.g:1801:6: lv_right_2_0= ruleNullExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getNullCheckExpression_RightNullExpressionParserRuleCall_1_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_right_2_0=ruleNullExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleNullExpression"
    // PsiInternalMickeyLang.g:1819:1: entryRuleNullExpression returns [Boolean current=false] : iv_ruleNullExpression= ruleNullExpression EOF ;
    public final Boolean entryRuleNullExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleNullExpression = null;


        try {
            // PsiInternalMickeyLang.g:1819:56: (iv_ruleNullExpression= ruleNullExpression EOF )
            // PsiInternalMickeyLang.g:1820:2: iv_ruleNullExpression= ruleNullExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getNullExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNullExpression=ruleNullExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNullExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleNullExpression"
    // PsiInternalMickeyLang.g:1826:1: ruleNullExpression returns [Boolean current=false] : ( ( () otherlv_1= 'is null' ) | ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) ) ) ;
    public final Boolean ruleNullExpression() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;

        try {
            // PsiInternalMickeyLang.g:1827:1: ( ( ( () otherlv_1= 'is null' ) | ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) ) ) )
            // PsiInternalMickeyLang.g:1828:2: ( ( () otherlv_1= 'is null' ) | ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) ) )
            {
            // PsiInternalMickeyLang.g:1828:2: ( ( () otherlv_1= 'is null' ) | ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) ) )
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==56) ) {
                alt35=1;
            }
            else if ( ((LA35_0>=57 && LA35_0<=58)) ) {
                alt35=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 35, 0, input);

                throw nvae;
            }
            switch (alt35) {
                case 1 :
                    // PsiInternalMickeyLang.g:1829:3: ( () otherlv_1= 'is null' )
                    {
                    // PsiInternalMickeyLang.g:1829:3: ( () otherlv_1= 'is null' )
                    // PsiInternalMickeyLang.g:1830:4: () otherlv_1= 'is null'
                    {
                    // PsiInternalMickeyLang.g:1830:4: ()
                    // PsiInternalMickeyLang.g:1831:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getNullExpression_IsNullAction_0_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getNullExpression_IsNullKeyword_0_1ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:1846:3: ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) )
                    {
                    // PsiInternalMickeyLang.g:1846:3: ( () (otherlv_3= 'not null' | otherlv_4= 'notnull' ) )
                    // PsiInternalMickeyLang.g:1847:4: () (otherlv_3= 'not null' | otherlv_4= 'notnull' )
                    {
                    // PsiInternalMickeyLang.g:1847:4: ()
                    // PsiInternalMickeyLang.g:1848:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getNullExpression_NotNullAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:1854:4: (otherlv_3= 'not null' | otherlv_4= 'notnull' )
                    int alt34=2;
                    int LA34_0 = input.LA(1);

                    if ( (LA34_0==57) ) {
                        alt34=1;
                    }
                    else if ( (LA34_0==58) ) {
                        alt34=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 34, 0, input);

                        throw nvae;
                    }
                    switch (alt34) {
                        case 1 :
                            // PsiInternalMickeyLang.g:1855:5: otherlv_3= 'not null'
                            {
                            if ( state.backtracking==0 ) {

                              					markLeaf(elementTypeProvider.getNullExpression_NotNullKeyword_1_1_0ElementType());
                              				
                            }
                            otherlv_3=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              					doneLeaf(otherlv_3);
                              				
                            }

                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:1863:5: otherlv_4= 'notnull'
                            {
                            if ( state.backtracking==0 ) {

                              					markLeaf(elementTypeProvider.getNullExpression_NotnullKeyword_1_1_1ElementType());
                              				
                            }
                            otherlv_4=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              					doneLeaf(otherlv_4);
                              				
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRulePrimaryExpression"
    // PsiInternalMickeyLang.g:1876:1: entryRulePrimaryExpression returns [Boolean current=false] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
    public final Boolean entryRulePrimaryExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_rulePrimaryExpression = null;


        try {
            // PsiInternalMickeyLang.g:1876:59: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
            // PsiInternalMickeyLang.g:1877:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getPrimaryExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePrimaryExpression=rulePrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrimaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "rulePrimaryExpression"
    // PsiInternalMickeyLang.g:1883:1: rulePrimaryExpression returns [Boolean current=false] : ( ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) ) | ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) ) | ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) ) | ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) ) | ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' ) | ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' ) | ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' ) | ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' ) | ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' ) | ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) ) ) ;
    public final Boolean rulePrimaryExpression() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_all_11_0=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token lv_not_21_0=null;
        Token lv_exists_22_0=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_30=null;
        Token otherlv_32=null;
        Token lv_name_34_0=null;
        Token otherlv_35=null;
        Token lv_all_36_0=null;
        Token otherlv_38=null;
        Token otherlv_40=null;
        Token otherlv_42=null;
        Token otherlv_43=null;
        Token otherlv_45=null;
        Token otherlv_47=null;
        Token otherlv_49=null;
        Token otherlv_50=null;
        Boolean lv_literalValue_15_0 = null;

        Boolean lv_expression_18_0 = null;

        Boolean lv_select_24_0 = null;

        Boolean lv_caseExpression_28_0 = null;

        Boolean lv_cases_29_0 = null;

        Boolean lv_elseExpression_31_0 = null;

        Boolean lv_arguments_37_0 = null;

        Boolean lv_arguments_39_0 = null;

        Boolean lv_expression_44_0 = null;

        Boolean lv_type_46_0 = null;


        try {
            // PsiInternalMickeyLang.g:1884:1: ( ( ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) ) | ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) ) | ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) ) | ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) ) | ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' ) | ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' ) | ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' ) | ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' ) | ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' ) | ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) ) ) )
            // PsiInternalMickeyLang.g:1885:2: ( ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) ) | ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) ) | ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) ) | ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) ) | ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' ) | ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' ) | ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' ) | ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' ) | ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' ) | ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) ) )
            {
            // PsiInternalMickeyLang.g:1885:2: ( ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) ) | ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) ) | ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) ) | ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) ) | ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' ) | ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' ) | ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' ) | ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' ) | ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' ) | ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) ) )
            int alt45=10;
            alt45 = dfa45.predict(input);
            switch (alt45) {
                case 1 :
                    // PsiInternalMickeyLang.g:1886:3: ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) )
                    {
                    // PsiInternalMickeyLang.g:1886:3: ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) )
                    // PsiInternalMickeyLang.g:1887:4: () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) )
                    {
                    // PsiInternalMickeyLang.g:1887:4: ()
                    // PsiInternalMickeyLang.g:1888:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_NewColumnAction_0_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_NewKeyword_0_1ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,59,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }
                    // PsiInternalMickeyLang.g:1901:4: ( (otherlv_2= RULE_ID ) )
                    // PsiInternalMickeyLang.g:1902:5: (otherlv_2= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:1902:5: (otherlv_2= RULE_ID )
                    // PsiInternalMickeyLang.g:1903:6: otherlv_2= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getPrimaryExpression_ColumnColumnSourceCrossReference_0_2_0ElementType());
                      					
                    }
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(otherlv_2);
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:1920:3: ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) )
                    {
                    // PsiInternalMickeyLang.g:1920:3: ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) )
                    // PsiInternalMickeyLang.g:1921:4: () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) )
                    {
                    // PsiInternalMickeyLang.g:1921:4: ()
                    // PsiInternalMickeyLang.g:1922:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_OldColumnAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_OldKeyword_1_1ElementType());
                      			
                    }
                    otherlv_4=(Token)match(input,60,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_4);
                      			
                    }
                    // PsiInternalMickeyLang.g:1935:4: ( (otherlv_5= RULE_ID ) )
                    // PsiInternalMickeyLang.g:1936:5: (otherlv_5= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:1936:5: (otherlv_5= RULE_ID )
                    // PsiInternalMickeyLang.g:1937:6: otherlv_5= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getPrimaryExpression_ColumnColumnSourceCrossReference_1_2_0ElementType());
                      					
                    }
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(otherlv_5);
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:1954:3: ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) )
                    {
                    // PsiInternalMickeyLang.g:1954:3: ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) )
                    // PsiInternalMickeyLang.g:1955:4: () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) )
                    {
                    // PsiInternalMickeyLang.g:1955:4: ()
                    // PsiInternalMickeyLang.g:1956:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_ColumnSourceRefAction_2_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:1962:4: ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) )
                    int alt37=3;
                    alt37 = dfa37.predict(input);
                    switch (alt37) {
                        case 1 :
                            // PsiInternalMickeyLang.g:1963:5: ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' )
                            {
                            // PsiInternalMickeyLang.g:1963:5: ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' )
                            // PsiInternalMickeyLang.g:1964:6: ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.'
                            {
                            // PsiInternalMickeyLang.g:1964:6: ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) )
                            // PsiInternalMickeyLang.g:1965:7: ( ( RULE_ID ) )=> (otherlv_7= RULE_ID )
                            {
                            // PsiInternalMickeyLang.g:1969:7: (otherlv_7= RULE_ID )
                            // PsiInternalMickeyLang.g:1970:8: otherlv_7= RULE_ID
                            {
                            if ( state.backtracking==0 ) {

                              								if (!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }
                            if ( state.backtracking==0 ) {

                              								markLeaf(elementTypeProvider.getPrimaryExpression_SourceSelectSourceCrossReference_2_1_0_0_0ElementType());
                              							
                            }
                            otherlv_7=(Token)match(input,RULE_ID,FOLLOW_36); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              								doneLeaf(otherlv_7);
                              							
                            }

                            }


                            }

                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getPrimaryExpression_FullStopKeyword_2_1_0_1ElementType());
                              					
                            }
                            otherlv_8=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_8);
                              					
                            }

                            }


                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:1994:5: ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) )
                            {
                            // PsiInternalMickeyLang.g:1994:5: ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) )
                            // PsiInternalMickeyLang.g:1995:6: ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) )
                            {
                            // PsiInternalMickeyLang.g:1995:6: ( (otherlv_9= RULE_ID ) )
                            // PsiInternalMickeyLang.g:1996:7: (otherlv_9= RULE_ID )
                            {
                            // PsiInternalMickeyLang.g:1996:7: (otherlv_9= RULE_ID )
                            // PsiInternalMickeyLang.g:1997:8: otherlv_9= RULE_ID
                            {
                            if ( state.backtracking==0 ) {

                              								if (!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }
                            if ( state.backtracking==0 ) {

                              								markLeaf(elementTypeProvider.getPrimaryExpression_SourceSelectSourceCrossReference_2_1_1_0_0ElementType());
                              							
                            }
                            otherlv_9=(Token)match(input,RULE_ID,FOLLOW_36); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              								doneLeaf(otherlv_9);
                              							
                            }

                            }


                            }

                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getPrimaryExpression_FullStopKeyword_2_1_1_1ElementType());
                              					
                            }
                            otherlv_10=(Token)match(input,61,FOLLOW_37); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_10);
                              					
                            }
                            // PsiInternalMickeyLang.g:2019:6: ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) )
                            int alt36=2;
                            int LA36_0 = input.LA(1);

                            if ( (LA36_0==31) ) {
                                alt36=1;
                            }
                            else if ( (LA36_0==RULE_ID) ) {
                                alt36=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 36, 0, input);

                                throw nvae;
                            }
                            switch (alt36) {
                                case 1 :
                                    // PsiInternalMickeyLang.g:2020:7: ( (lv_all_11_0= '*' ) )
                                    {
                                    // PsiInternalMickeyLang.g:2020:7: ( (lv_all_11_0= '*' ) )
                                    // PsiInternalMickeyLang.g:2021:8: (lv_all_11_0= '*' )
                                    {
                                    // PsiInternalMickeyLang.g:2021:8: (lv_all_11_0= '*' )
                                    // PsiInternalMickeyLang.g:2022:9: lv_all_11_0= '*'
                                    {
                                    if ( state.backtracking==0 ) {

                                      									markLeaf(elementTypeProvider.getPrimaryExpression_AllAsteriskKeyword_2_1_1_2_0_0ElementType());
                                      								
                                    }
                                    lv_all_11_0=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      									doneLeaf(lv_all_11_0);
                                      								
                                    }
                                    if ( state.backtracking==0 ) {

                                      									if (!current) {
                                      										associateWithSemanticElement();
                                      										current = true;
                                      									}
                                      								
                                    }

                                    }


                                    }


                                    }
                                    break;
                                case 2 :
                                    // PsiInternalMickeyLang.g:2038:7: ( (otherlv_12= RULE_ID ) )
                                    {
                                    // PsiInternalMickeyLang.g:2038:7: ( (otherlv_12= RULE_ID ) )
                                    // PsiInternalMickeyLang.g:2039:8: (otherlv_12= RULE_ID )
                                    {
                                    // PsiInternalMickeyLang.g:2039:8: (otherlv_12= RULE_ID )
                                    // PsiInternalMickeyLang.g:2040:9: otherlv_12= RULE_ID
                                    {
                                    if ( state.backtracking==0 ) {

                                      									if (!current) {
                                      										associateWithSemanticElement();
                                      										current = true;
                                      									}
                                      								
                                    }
                                    if ( state.backtracking==0 ) {

                                      									markLeaf(elementTypeProvider.getPrimaryExpression_ColumnColumnSourceCrossReference_2_1_1_2_1_0ElementType());
                                      								
                                    }
                                    otherlv_12=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      									doneLeaf(otherlv_12);
                                      								
                                    }

                                    }


                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 3 :
                            // PsiInternalMickeyLang.g:2058:5: ( (otherlv_13= RULE_ID ) )
                            {
                            // PsiInternalMickeyLang.g:2058:5: ( (otherlv_13= RULE_ID ) )
                            // PsiInternalMickeyLang.g:2059:6: (otherlv_13= RULE_ID )
                            {
                            // PsiInternalMickeyLang.g:2059:6: (otherlv_13= RULE_ID )
                            // PsiInternalMickeyLang.g:2060:7: otherlv_13= RULE_ID
                            {
                            if ( state.backtracking==0 ) {

                              							if (!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }
                            if ( state.backtracking==0 ) {

                              							markLeaf(elementTypeProvider.getPrimaryExpression_ColumnColumnSourceCrossReference_2_1_2_0ElementType());
                              						
                            }
                            otherlv_13=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							doneLeaf(otherlv_13);
                              						
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:2078:3: ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) )
                    {
                    // PsiInternalMickeyLang.g:2078:3: ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) )
                    // PsiInternalMickeyLang.g:2079:4: () ( (lv_literalValue_15_0= ruleLiteralValue ) )
                    {
                    // PsiInternalMickeyLang.g:2079:4: ()
                    // PsiInternalMickeyLang.g:2080:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_LiteralAction_3_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:2086:4: ( (lv_literalValue_15_0= ruleLiteralValue ) )
                    // PsiInternalMickeyLang.g:2087:5: (lv_literalValue_15_0= ruleLiteralValue )
                    {
                    // PsiInternalMickeyLang.g:2087:5: (lv_literalValue_15_0= ruleLiteralValue )
                    // PsiInternalMickeyLang.g:2088:6: lv_literalValue_15_0= ruleLiteralValue
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getPrimaryExpression_LiteralValueLiteralValueParserRuleCall_3_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_literalValue_15_0=ruleLiteralValue();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:2103:3: ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' )
                    {
                    // PsiInternalMickeyLang.g:2103:3: ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' )
                    // PsiInternalMickeyLang.g:2104:4: () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')'
                    {
                    // PsiInternalMickeyLang.g:2104:4: ()
                    // PsiInternalMickeyLang.g:2105:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_NestedExpressionAction_4_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_LeftParenthesisKeyword_4_1ElementType());
                      			
                    }
                    otherlv_17=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_17);
                      			
                    }
                    // PsiInternalMickeyLang.g:2118:4: ( (lv_expression_18_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:2119:5: (lv_expression_18_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:2119:5: (lv_expression_18_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:2120:6: lv_expression_18_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getPrimaryExpression_ExpressionSqlExpressionParserRuleCall_4_2_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_38);
                    lv_expression_18_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_RightParenthesisKeyword_4_3ElementType());
                      			
                    }
                    otherlv_19=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_19);
                      			
                    }

                    }


                    }
                    break;
                case 6 :
                    // PsiInternalMickeyLang.g:2142:3: ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' )
                    {
                    // PsiInternalMickeyLang.g:2142:3: ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' )
                    // PsiInternalMickeyLang.g:2143:4: () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')'
                    {
                    // PsiInternalMickeyLang.g:2143:4: ()
                    // PsiInternalMickeyLang.g:2144:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_SelectStatementExpressionAction_5_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:2150:4: ( (lv_not_21_0= 'not' ) )?
                    int alt38=2;
                    int LA38_0 = input.LA(1);

                    if ( (LA38_0==62) ) {
                        alt38=1;
                    }
                    switch (alt38) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2151:5: (lv_not_21_0= 'not' )
                            {
                            // PsiInternalMickeyLang.g:2151:5: (lv_not_21_0= 'not' )
                            // PsiInternalMickeyLang.g:2152:6: lv_not_21_0= 'not'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getPrimaryExpression_NotNotKeyword_5_1_0ElementType());
                              					
                            }
                            lv_not_21_0=(Token)match(input,62,FOLLOW_39); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_not_21_0);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }

                    // PsiInternalMickeyLang.g:2167:4: ( (lv_exists_22_0= 'exists' ) )?
                    int alt39=2;
                    int LA39_0 = input.LA(1);

                    if ( (LA39_0==63) ) {
                        alt39=1;
                    }
                    switch (alt39) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2168:5: (lv_exists_22_0= 'exists' )
                            {
                            // PsiInternalMickeyLang.g:2168:5: (lv_exists_22_0= 'exists' )
                            // PsiInternalMickeyLang.g:2169:6: lv_exists_22_0= 'exists'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getPrimaryExpression_ExistsExistsKeyword_5_2_0ElementType());
                              					
                            }
                            lv_exists_22_0=(Token)match(input,63,FOLLOW_5); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_exists_22_0);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_LeftParenthesisKeyword_5_3ElementType());
                      			
                    }
                    otherlv_23=(Token)match(input,14,FOLLOW_40); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_23);
                      			
                    }
                    // PsiInternalMickeyLang.g:2191:4: ( (lv_select_24_0= ruleSelectStatement ) )
                    // PsiInternalMickeyLang.g:2192:5: (lv_select_24_0= ruleSelectStatement )
                    {
                    // PsiInternalMickeyLang.g:2192:5: (lv_select_24_0= ruleSelectStatement )
                    // PsiInternalMickeyLang.g:2193:6: lv_select_24_0= ruleSelectStatement
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getPrimaryExpression_SelectSelectStatementParserRuleCall_5_4_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_38);
                    lv_select_24_0=ruleSelectStatement();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_RightParenthesisKeyword_5_5ElementType());
                      			
                    }
                    otherlv_25=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_25);
                      			
                    }

                    }


                    }
                    break;
                case 7 :
                    // PsiInternalMickeyLang.g:2215:3: ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' )
                    {
                    // PsiInternalMickeyLang.g:2215:3: ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' )
                    // PsiInternalMickeyLang.g:2216:4: () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end'
                    {
                    // PsiInternalMickeyLang.g:2216:4: ()
                    // PsiInternalMickeyLang.g:2217:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_CaseExpressionAction_6_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_CaseKeyword_6_1ElementType());
                      			
                    }
                    otherlv_27=(Token)match(input,64,FOLLOW_41); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_27);
                      			
                    }
                    // PsiInternalMickeyLang.g:2230:4: ( (lv_caseExpression_28_0= ruleSqlExpression ) )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( ((LA40_0>=RULE_ID && LA40_0<=RULE_NUMBER)||LA40_0==14||LA40_0==34||(LA40_0>=59 && LA40_0<=60)||(LA40_0>=62 && LA40_0<=64)||LA40_0==67||LA40_0==69||(LA40_0>=89 && LA40_0<=92)) ) {
                        alt40=1;
                    }
                    switch (alt40) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2231:5: (lv_caseExpression_28_0= ruleSqlExpression )
                            {
                            // PsiInternalMickeyLang.g:2231:5: (lv_caseExpression_28_0= ruleSqlExpression )
                            // PsiInternalMickeyLang.g:2232:6: lv_caseExpression_28_0= ruleSqlExpression
                            {
                            if ( state.backtracking==0 ) {

                              						markComposite(elementTypeProvider.getPrimaryExpression_CaseExpressionSqlExpressionParserRuleCall_6_2_0ElementType());
                              					
                            }
                            pushFollow(FOLLOW_41);
                            lv_caseExpression_28_0=ruleSqlExpression();

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

                              						doneComposite();
                              						if(!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }

                    // PsiInternalMickeyLang.g:2245:4: ( (lv_cases_29_0= ruleCase ) )+
                    int cnt41=0;
                    loop41:
                    do {
                        int alt41=2;
                        int LA41_0 = input.LA(1);

                        if ( (LA41_0==70) ) {
                            alt41=1;
                        }


                        switch (alt41) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:2246:5: (lv_cases_29_0= ruleCase )
                    	    {
                    	    // PsiInternalMickeyLang.g:2246:5: (lv_cases_29_0= ruleCase )
                    	    // PsiInternalMickeyLang.g:2247:6: lv_cases_29_0= ruleCase
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      						markComposite(elementTypeProvider.getPrimaryExpression_CasesCaseParserRuleCall_6_3_0ElementType());
                    	      					
                    	    }
                    	    pushFollow(FOLLOW_42);
                    	    lv_cases_29_0=ruleCase();

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

                    	      						doneComposite();
                    	      						if(!current) {
                    	      							associateWithSemanticElement();
                    	      							current = true;
                    	      						}
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt41 >= 1 ) break loop41;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(41, input);
                                throw eee;
                        }
                        cnt41++;
                    } while (true);

                    // PsiInternalMickeyLang.g:2260:4: (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )?
                    int alt42=2;
                    int LA42_0 = input.LA(1);

                    if ( (LA42_0==65) ) {
                        alt42=1;
                    }
                    switch (alt42) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2261:5: otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) )
                            {
                            if ( state.backtracking==0 ) {

                              					markLeaf(elementTypeProvider.getPrimaryExpression_ElseKeyword_6_4_0ElementType());
                              				
                            }
                            otherlv_30=(Token)match(input,65,FOLLOW_27); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              					doneLeaf(otherlv_30);
                              				
                            }
                            // PsiInternalMickeyLang.g:2268:5: ( (lv_elseExpression_31_0= ruleSqlExpression ) )
                            // PsiInternalMickeyLang.g:2269:6: (lv_elseExpression_31_0= ruleSqlExpression )
                            {
                            // PsiInternalMickeyLang.g:2269:6: (lv_elseExpression_31_0= ruleSqlExpression )
                            // PsiInternalMickeyLang.g:2270:7: lv_elseExpression_31_0= ruleSqlExpression
                            {
                            if ( state.backtracking==0 ) {

                              							markComposite(elementTypeProvider.getPrimaryExpression_ElseExpressionSqlExpressionParserRuleCall_6_4_1_0ElementType());
                              						
                            }
                            pushFollow(FOLLOW_43);
                            lv_elseExpression_31_0=ruleSqlExpression();

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

                              							doneComposite();
                              							if(!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_EndKeyword_6_5ElementType());
                      			
                    }
                    otherlv_32=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_32);
                      			
                    }

                    }


                    }
                    break;
                case 8 :
                    // PsiInternalMickeyLang.g:2293:3: ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' )
                    {
                    // PsiInternalMickeyLang.g:2293:3: ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' )
                    // PsiInternalMickeyLang.g:2294:4: () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')'
                    {
                    // PsiInternalMickeyLang.g:2294:4: ()
                    // PsiInternalMickeyLang.g:2295:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_FunctionAction_7_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:2301:4: ( (lv_name_34_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:2302:5: (lv_name_34_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:2302:5: (lv_name_34_0= RULE_ID )
                    // PsiInternalMickeyLang.g:2303:6: lv_name_34_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getPrimaryExpression_NameIDTerminalRuleCall_7_1_0ElementType());
                      					
                    }
                    lv_name_34_0=(Token)match(input,RULE_ID,FOLLOW_5); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_34_0);
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_LeftParenthesisKeyword_7_2ElementType());
                      			
                    }
                    otherlv_35=(Token)match(input,14,FOLLOW_44); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_35);
                      			
                    }
                    // PsiInternalMickeyLang.g:2325:4: ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) )
                    int alt44=2;
                    int LA44_0 = input.LA(1);

                    if ( (LA44_0==31) ) {
                        alt44=1;
                    }
                    else if ( ((LA44_0>=RULE_ID && LA44_0<=RULE_NUMBER)||LA44_0==14||LA44_0==34||(LA44_0>=59 && LA44_0<=60)||(LA44_0>=62 && LA44_0<=64)||LA44_0==67||LA44_0==69||(LA44_0>=89 && LA44_0<=92)) ) {
                        alt44=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 44, 0, input);

                        throw nvae;
                    }
                    switch (alt44) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2326:5: ( (lv_all_36_0= '*' ) )
                            {
                            // PsiInternalMickeyLang.g:2326:5: ( (lv_all_36_0= '*' ) )
                            // PsiInternalMickeyLang.g:2327:6: (lv_all_36_0= '*' )
                            {
                            // PsiInternalMickeyLang.g:2327:6: (lv_all_36_0= '*' )
                            // PsiInternalMickeyLang.g:2328:7: lv_all_36_0= '*'
                            {
                            if ( state.backtracking==0 ) {

                              							markLeaf(elementTypeProvider.getPrimaryExpression_AllAsteriskKeyword_7_3_0_0ElementType());
                              						
                            }
                            lv_all_36_0=(Token)match(input,31,FOLLOW_38); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							doneLeaf(lv_all_36_0);
                              						
                            }
                            if ( state.backtracking==0 ) {

                              							if (!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:2344:5: ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* )
                            {
                            // PsiInternalMickeyLang.g:2344:5: ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* )
                            // PsiInternalMickeyLang.g:2345:6: ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )*
                            {
                            // PsiInternalMickeyLang.g:2345:6: ( (lv_arguments_37_0= ruleSqlExpression ) )
                            // PsiInternalMickeyLang.g:2346:7: (lv_arguments_37_0= ruleSqlExpression )
                            {
                            // PsiInternalMickeyLang.g:2346:7: (lv_arguments_37_0= ruleSqlExpression )
                            // PsiInternalMickeyLang.g:2347:8: lv_arguments_37_0= ruleSqlExpression
                            {
                            if ( state.backtracking==0 ) {

                              								markComposite(elementTypeProvider.getPrimaryExpression_ArgumentsSqlExpressionParserRuleCall_7_3_1_0_0ElementType());
                              							
                            }
                            pushFollow(FOLLOW_7);
                            lv_arguments_37_0=ruleSqlExpression();

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

                              								doneComposite();
                              								if(!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }

                            }


                            }

                            // PsiInternalMickeyLang.g:2360:6: (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )*
                            loop43:
                            do {
                                int alt43=2;
                                int LA43_0 = input.LA(1);

                                if ( (LA43_0==15) ) {
                                    alt43=1;
                                }


                                switch (alt43) {
                            	case 1 :
                            	    // PsiInternalMickeyLang.g:2361:7: otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) )
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      							markLeaf(elementTypeProvider.getPrimaryExpression_CommaKeyword_7_3_1_1_0ElementType());
                            	      						
                            	    }
                            	    otherlv_38=(Token)match(input,15,FOLLOW_27); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      							doneLeaf(otherlv_38);
                            	      						
                            	    }
                            	    // PsiInternalMickeyLang.g:2368:7: ( (lv_arguments_39_0= ruleSqlExpression ) )
                            	    // PsiInternalMickeyLang.g:2369:8: (lv_arguments_39_0= ruleSqlExpression )
                            	    {
                            	    // PsiInternalMickeyLang.g:2369:8: (lv_arguments_39_0= ruleSqlExpression )
                            	    // PsiInternalMickeyLang.g:2370:9: lv_arguments_39_0= ruleSqlExpression
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      									markComposite(elementTypeProvider.getPrimaryExpression_ArgumentsSqlExpressionParserRuleCall_7_3_1_1_1_0ElementType());
                            	      								
                            	    }
                            	    pushFollow(FOLLOW_7);
                            	    lv_arguments_39_0=ruleSqlExpression();

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

                            	      									doneComposite();
                            	      									if(!current) {
                            	      										associateWithSemanticElement();
                            	      										current = true;
                            	      									}
                            	      								
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

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


                            }


                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_RightParenthesisKeyword_7_4ElementType());
                      			
                    }
                    otherlv_40=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_40);
                      			
                    }

                    }


                    }
                    break;
                case 9 :
                    // PsiInternalMickeyLang.g:2395:3: ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' )
                    {
                    // PsiInternalMickeyLang.g:2395:3: ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' )
                    // PsiInternalMickeyLang.g:2396:4: () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')'
                    {
                    // PsiInternalMickeyLang.g:2396:4: ()
                    // PsiInternalMickeyLang.g:2397:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_CastExpressionAction_8_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_CastKeyword_8_1ElementType());
                      			
                    }
                    otherlv_42=(Token)match(input,67,FOLLOW_5); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_42);
                      			
                    }
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_LeftParenthesisKeyword_8_2ElementType());
                      			
                    }
                    otherlv_43=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_43);
                      			
                    }
                    // PsiInternalMickeyLang.g:2417:4: ( (lv_expression_44_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:2418:5: (lv_expression_44_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:2418:5: (lv_expression_44_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:2419:6: lv_expression_44_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getPrimaryExpression_ExpressionSqlExpressionParserRuleCall_8_3_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_45);
                    lv_expression_44_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_AsKeyword_8_4ElementType());
                      			
                    }
                    otherlv_45=(Token)match(input,68,FOLLOW_46); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_45);
                      			
                    }
                    // PsiInternalMickeyLang.g:2439:4: ( (lv_type_46_0= ruleSqliteDataType ) )
                    // PsiInternalMickeyLang.g:2440:5: (lv_type_46_0= ruleSqliteDataType )
                    {
                    // PsiInternalMickeyLang.g:2440:5: (lv_type_46_0= ruleSqliteDataType )
                    // PsiInternalMickeyLang.g:2441:6: lv_type_46_0= ruleSqliteDataType
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getPrimaryExpression_TypeSqliteDataTypeEnumRuleCall_8_5_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_38);
                    lv_type_46_0=ruleSqliteDataType();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_RightParenthesisKeyword_8_6ElementType());
                      			
                    }
                    otherlv_47=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_47);
                      			
                    }

                    }


                    }
                    break;
                case 10 :
                    // PsiInternalMickeyLang.g:2463:3: ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) )
                    {
                    // PsiInternalMickeyLang.g:2463:3: ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) )
                    // PsiInternalMickeyLang.g:2464:4: () otherlv_49= '$' ( (otherlv_50= RULE_ID ) )
                    {
                    // PsiInternalMickeyLang.g:2464:4: ()
                    // PsiInternalMickeyLang.g:2465:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getPrimaryExpression_FunctionArgumentAction_9_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryExpression_DollarSignKeyword_9_1ElementType());
                      			
                    }
                    otherlv_49=(Token)match(input,69,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_49);
                      			
                    }
                    // PsiInternalMickeyLang.g:2478:4: ( (otherlv_50= RULE_ID ) )
                    // PsiInternalMickeyLang.g:2479:5: (otherlv_50= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:2479:5: (otherlv_50= RULE_ID )
                    // PsiInternalMickeyLang.g:2480:6: otherlv_50= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getPrimaryExpression_ArgFunctionArgCrossReference_9_2_0ElementType());
                      					
                    }
                    otherlv_50=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(otherlv_50);
                      					
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleCase"
    // PsiInternalMickeyLang.g:2500:1: entryRuleCase returns [Boolean current=false] : iv_ruleCase= ruleCase EOF ;
    public final Boolean entryRuleCase() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCase = null;


        try {
            // PsiInternalMickeyLang.g:2500:46: (iv_ruleCase= ruleCase EOF )
            // PsiInternalMickeyLang.g:2501:2: iv_ruleCase= ruleCase EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCaseElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCase=ruleCase();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCase; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCase"
    // PsiInternalMickeyLang.g:2507:1: ruleCase returns [Boolean current=false] : (otherlv_0= 'when' ( (lv_whenExpression_1_0= ruleSqlExpression ) ) otherlv_2= 'then' ( (lv_thenExpression_3_0= ruleSqlExpression ) ) ) ;
    public final Boolean ruleCase() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Boolean lv_whenExpression_1_0 = null;

        Boolean lv_thenExpression_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:2508:1: ( (otherlv_0= 'when' ( (lv_whenExpression_1_0= ruleSqlExpression ) ) otherlv_2= 'then' ( (lv_thenExpression_3_0= ruleSqlExpression ) ) ) )
            // PsiInternalMickeyLang.g:2509:2: (otherlv_0= 'when' ( (lv_whenExpression_1_0= ruleSqlExpression ) ) otherlv_2= 'then' ( (lv_thenExpression_3_0= ruleSqlExpression ) ) )
            {
            // PsiInternalMickeyLang.g:2509:2: (otherlv_0= 'when' ( (lv_whenExpression_1_0= ruleSqlExpression ) ) otherlv_2= 'then' ( (lv_thenExpression_3_0= ruleSqlExpression ) ) )
            // PsiInternalMickeyLang.g:2510:3: otherlv_0= 'when' ( (lv_whenExpression_1_0= ruleSqlExpression ) ) otherlv_2= 'then' ( (lv_thenExpression_3_0= ruleSqlExpression ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCase_WhenKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,70,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:2517:3: ( (lv_whenExpression_1_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:2518:4: (lv_whenExpression_1_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:2518:4: (lv_whenExpression_1_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:2519:5: lv_whenExpression_1_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCase_WhenExpressionSqlExpressionParserRuleCall_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_47);
            lv_whenExpression_1_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCase_ThenKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,71,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            // PsiInternalMickeyLang.g:2539:3: ( (lv_thenExpression_3_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:2540:4: (lv_thenExpression_3_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:2540:4: (lv_thenExpression_3_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:2541:5: lv_thenExpression_3_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCase_ThenExpressionSqlExpressionParserRuleCall_3_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_thenExpression_3_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleSelectStatement"
    // PsiInternalMickeyLang.g:2558:1: entryRuleSelectStatement returns [Boolean current=false] : iv_ruleSelectStatement= ruleSelectStatement EOF ;
    public final Boolean entryRuleSelectStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSelectStatement = null;


        try {
            // PsiInternalMickeyLang.g:2558:57: (iv_ruleSelectStatement= ruleSelectStatement EOF )
            // PsiInternalMickeyLang.g:2559:2: iv_ruleSelectStatement= ruleSelectStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSelectStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSelectStatement=ruleSelectStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSelectStatement"
    // PsiInternalMickeyLang.g:2565:1: ruleSelectStatement returns [Boolean current=false] : ( ( (lv_core_0_0= ruleSelectCore ) ) (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )? (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )? ) ;
    public final Boolean ruleSelectStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Boolean lv_core_0_0 = null;

        Boolean lv_orderby_2_0 = null;

        Boolean lv_limit_4_0 = null;

        Boolean lv_limitOffset_7_0 = null;


        try {
            // PsiInternalMickeyLang.g:2566:1: ( ( ( (lv_core_0_0= ruleSelectCore ) ) (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )? (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )? ) )
            // PsiInternalMickeyLang.g:2567:2: ( ( (lv_core_0_0= ruleSelectCore ) ) (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )? (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )? )
            {
            // PsiInternalMickeyLang.g:2567:2: ( ( (lv_core_0_0= ruleSelectCore ) ) (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )? (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )? )
            // PsiInternalMickeyLang.g:2568:3: ( (lv_core_0_0= ruleSelectCore ) ) (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )? (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )?
            {
            // PsiInternalMickeyLang.g:2568:3: ( (lv_core_0_0= ruleSelectCore ) )
            // PsiInternalMickeyLang.g:2569:4: (lv_core_0_0= ruleSelectCore )
            {
            // PsiInternalMickeyLang.g:2569:4: (lv_core_0_0= ruleSelectCore )
            // PsiInternalMickeyLang.g:2570:5: lv_core_0_0= ruleSelectCore
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getSelectStatement_CoreSelectCoreParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_48);
            lv_core_0_0=ruleSelectCore();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:2583:3: (otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) ) )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==72) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // PsiInternalMickeyLang.g:2584:4: otherlv_1= 'order by' ( (lv_orderby_2_0= ruleOrderingTermList ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectStatement_OrderByKeyword_1_0ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,72,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }
                    // PsiInternalMickeyLang.g:2591:4: ( (lv_orderby_2_0= ruleOrderingTermList ) )
                    // PsiInternalMickeyLang.g:2592:5: (lv_orderby_2_0= ruleOrderingTermList )
                    {
                    // PsiInternalMickeyLang.g:2592:5: (lv_orderby_2_0= ruleOrderingTermList )
                    // PsiInternalMickeyLang.g:2593:6: lv_orderby_2_0= ruleOrderingTermList
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectStatement_OrderbyOrderingTermListParserRuleCall_1_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_49);
                    lv_orderby_2_0=ruleOrderingTermList();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2607:3: (otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )? )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==73) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // PsiInternalMickeyLang.g:2608:4: otherlv_3= 'limit' ( (lv_limit_4_0= ruleSqlExpression ) ) ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )?
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectStatement_LimitKeyword_2_0ElementType());
                      			
                    }
                    otherlv_3=(Token)match(input,73,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_3);
                      			
                    }
                    // PsiInternalMickeyLang.g:2615:4: ( (lv_limit_4_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:2616:5: (lv_limit_4_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:2616:5: (lv_limit_4_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:2617:6: lv_limit_4_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectStatement_LimitSqlExpressionParserRuleCall_2_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_50);
                    lv_limit_4_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    // PsiInternalMickeyLang.g:2630:4: ( (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) ) )?
                    int alt48=2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0==15||LA48_0==74) ) {
                        alt48=1;
                    }
                    switch (alt48) {
                        case 1 :
                            // PsiInternalMickeyLang.g:2631:5: (otherlv_5= 'offset' | otherlv_6= ',' ) ( (lv_limitOffset_7_0= ruleSqlExpression ) )
                            {
                            // PsiInternalMickeyLang.g:2631:5: (otherlv_5= 'offset' | otherlv_6= ',' )
                            int alt47=2;
                            int LA47_0 = input.LA(1);

                            if ( (LA47_0==74) ) {
                                alt47=1;
                            }
                            else if ( (LA47_0==15) ) {
                                alt47=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 47, 0, input);

                                throw nvae;
                            }
                            switch (alt47) {
                                case 1 :
                                    // PsiInternalMickeyLang.g:2632:6: otherlv_5= 'offset'
                                    {
                                    if ( state.backtracking==0 ) {

                                      						markLeaf(elementTypeProvider.getSelectStatement_OffsetKeyword_2_2_0_0ElementType());
                                      					
                                    }
                                    otherlv_5=(Token)match(input,74,FOLLOW_27); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      						doneLeaf(otherlv_5);
                                      					
                                    }

                                    }
                                    break;
                                case 2 :
                                    // PsiInternalMickeyLang.g:2640:6: otherlv_6= ','
                                    {
                                    if ( state.backtracking==0 ) {

                                      						markLeaf(elementTypeProvider.getSelectStatement_CommaKeyword_2_2_0_1ElementType());
                                      					
                                    }
                                    otherlv_6=(Token)match(input,15,FOLLOW_27); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      						doneLeaf(otherlv_6);
                                      					
                                    }

                                    }
                                    break;

                            }

                            // PsiInternalMickeyLang.g:2648:5: ( (lv_limitOffset_7_0= ruleSqlExpression ) )
                            // PsiInternalMickeyLang.g:2649:6: (lv_limitOffset_7_0= ruleSqlExpression )
                            {
                            // PsiInternalMickeyLang.g:2649:6: (lv_limitOffset_7_0= ruleSqlExpression )
                            // PsiInternalMickeyLang.g:2650:7: lv_limitOffset_7_0= ruleSqlExpression
                            {
                            if ( state.backtracking==0 ) {

                              							markComposite(elementTypeProvider.getSelectStatement_LimitOffsetSqlExpressionParserRuleCall_2_2_1_0ElementType());
                              						
                            }
                            pushFollow(FOLLOW_2);
                            lv_limitOffset_7_0=ruleSqlExpression();

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

                              							doneComposite();
                              							if(!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleOrderingTermList"
    // PsiInternalMickeyLang.g:2669:1: entryRuleOrderingTermList returns [Boolean current=false] : iv_ruleOrderingTermList= ruleOrderingTermList EOF ;
    public final Boolean entryRuleOrderingTermList() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleOrderingTermList = null;


        try {
            // PsiInternalMickeyLang.g:2669:58: (iv_ruleOrderingTermList= ruleOrderingTermList EOF )
            // PsiInternalMickeyLang.g:2670:2: iv_ruleOrderingTermList= ruleOrderingTermList EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getOrderingTermListElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleOrderingTermList=ruleOrderingTermList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOrderingTermList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleOrderingTermList"
    // PsiInternalMickeyLang.g:2676:1: ruleOrderingTermList returns [Boolean current=false] : ( ( (lv_orderingTerms_0_0= ruleOrderingTerm ) ) (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )* ) ;
    public final Boolean ruleOrderingTermList() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Boolean lv_orderingTerms_0_0 = null;

        Boolean lv_orderingTerms_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:2677:1: ( ( ( (lv_orderingTerms_0_0= ruleOrderingTerm ) ) (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )* ) )
            // PsiInternalMickeyLang.g:2678:2: ( ( (lv_orderingTerms_0_0= ruleOrderingTerm ) ) (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )* )
            {
            // PsiInternalMickeyLang.g:2678:2: ( ( (lv_orderingTerms_0_0= ruleOrderingTerm ) ) (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )* )
            // PsiInternalMickeyLang.g:2679:3: ( (lv_orderingTerms_0_0= ruleOrderingTerm ) ) (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )*
            {
            // PsiInternalMickeyLang.g:2679:3: ( (lv_orderingTerms_0_0= ruleOrderingTerm ) )
            // PsiInternalMickeyLang.g:2680:4: (lv_orderingTerms_0_0= ruleOrderingTerm )
            {
            // PsiInternalMickeyLang.g:2680:4: (lv_orderingTerms_0_0= ruleOrderingTerm )
            // PsiInternalMickeyLang.g:2681:5: lv_orderingTerms_0_0= ruleOrderingTerm
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getOrderingTermList_OrderingTermsOrderingTermParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_51);
            lv_orderingTerms_0_0=ruleOrderingTerm();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:2694:3: (otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) ) )*
            loop50:
            do {
                int alt50=2;
                int LA50_0 = input.LA(1);

                if ( (LA50_0==15) ) {
                    alt50=1;
                }


                switch (alt50) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:2695:4: otherlv_1= ',' ( (lv_orderingTerms_2_0= ruleOrderingTerm ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getOrderingTermList_CommaKeyword_1_0ElementType());
            	      			
            	    }
            	    otherlv_1=(Token)match(input,15,FOLLOW_27); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_1);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:2702:4: ( (lv_orderingTerms_2_0= ruleOrderingTerm ) )
            	    // PsiInternalMickeyLang.g:2703:5: (lv_orderingTerms_2_0= ruleOrderingTerm )
            	    {
            	    // PsiInternalMickeyLang.g:2703:5: (lv_orderingTerms_2_0= ruleOrderingTerm )
            	    // PsiInternalMickeyLang.g:2704:6: lv_orderingTerms_2_0= ruleOrderingTerm
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getOrderingTermList_OrderingTermsOrderingTermParserRuleCall_1_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_51);
            	    lv_orderingTerms_2_0=ruleOrderingTerm();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleSelectCore"
    // PsiInternalMickeyLang.g:2722:1: entryRuleSelectCore returns [Boolean current=false] : iv_ruleSelectCore= ruleSelectCore EOF ;
    public final Boolean entryRuleSelectCore() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSelectCore = null;


        try {
            // PsiInternalMickeyLang.g:2722:52: (iv_ruleSelectCore= ruleSelectCore EOF )
            // PsiInternalMickeyLang.g:2723:2: iv_ruleSelectCore= ruleSelectCore EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSelectCoreElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSelectCore=ruleSelectCore();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectCore; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSelectCore"
    // PsiInternalMickeyLang.g:2729:1: ruleSelectCore returns [Boolean current=false] : (this_SelectExpression_0= ruleSelectExpression ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )* ) ;
    public final Boolean ruleSelectCore() throws RecognitionException {
        Boolean current = false;

        Boolean this_SelectExpression_0 = null;

        Boolean lv_op_2_0 = null;

        Boolean lv_right_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:2730:1: ( (this_SelectExpression_0= ruleSelectExpression ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )* ) )
            // PsiInternalMickeyLang.g:2731:2: (this_SelectExpression_0= ruleSelectExpression ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )* )
            {
            // PsiInternalMickeyLang.g:2731:2: (this_SelectExpression_0= ruleSelectExpression ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )* )
            // PsiInternalMickeyLang.g:2732:3: this_SelectExpression_0= ruleSelectExpression ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )*
            {
            if ( state.backtracking==0 ) {

              			markComposite(elementTypeProvider.getSelectCore_SelectExpressionParserRuleCall_0ElementType());
              		
            }
            pushFollow(FOLLOW_52);
            this_SelectExpression_0=ruleSelectExpression();

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

              			current = this_SelectExpression_0;
              			doneComposite();
              		
            }
            // PsiInternalMickeyLang.g:2740:3: ( () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) ) )*
            loop51:
            do {
                int alt51=2;
                int LA51_0 = input.LA(1);

                if ( ((LA51_0>=124 && LA51_0<=127)) ) {
                    alt51=1;
                }


                switch (alt51) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:2741:4: () ( (lv_op_2_0= ruleCompoundOperator ) ) ( (lv_right_3_0= ruleSelectExpression ) )
            	    {
            	    // PsiInternalMickeyLang.g:2741:4: ()
            	    // PsiInternalMickeyLang.g:2742:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      					precedeComposite(elementTypeProvider.getSelectCore_SelectCoreLeftAction_1_0ElementType());
            	      					doneComposite();
            	      					associateWithSemanticElement();
            	      				
            	    }

            	    }

            	    // PsiInternalMickeyLang.g:2748:4: ( (lv_op_2_0= ruleCompoundOperator ) )
            	    // PsiInternalMickeyLang.g:2749:5: (lv_op_2_0= ruleCompoundOperator )
            	    {
            	    // PsiInternalMickeyLang.g:2749:5: (lv_op_2_0= ruleCompoundOperator )
            	    // PsiInternalMickeyLang.g:2750:6: lv_op_2_0= ruleCompoundOperator
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getSelectCore_OpCompoundOperatorEnumRuleCall_1_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_40);
            	    lv_op_2_0=ruleCompoundOperator();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }

            	    // PsiInternalMickeyLang.g:2763:4: ( (lv_right_3_0= ruleSelectExpression ) )
            	    // PsiInternalMickeyLang.g:2764:5: (lv_right_3_0= ruleSelectExpression )
            	    {
            	    // PsiInternalMickeyLang.g:2764:5: (lv_right_3_0= ruleSelectExpression )
            	    // PsiInternalMickeyLang.g:2765:6: lv_right_3_0= ruleSelectExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getSelectCore_RightSelectExpressionParserRuleCall_1_2_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_52);
            	    lv_right_3_0=ruleSelectExpression();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleSelectExpression"
    // PsiInternalMickeyLang.g:2783:1: entryRuleSelectExpression returns [Boolean current=false] : iv_ruleSelectExpression= ruleSelectExpression EOF ;
    public final Boolean entryRuleSelectExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSelectExpression = null;


        try {
            // PsiInternalMickeyLang.g:2783:58: (iv_ruleSelectExpression= ruleSelectExpression EOF )
            // PsiInternalMickeyLang.g:2784:2: iv_ruleSelectExpression= ruleSelectExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSelectExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSelectExpression=ruleSelectExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSelectExpression"
    // PsiInternalMickeyLang.g:2790:1: ruleSelectExpression returns [Boolean current=false] : ( () otherlv_1= 'select' ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )? ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) ) (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )? (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )? (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )? (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )? ) ;
    public final Boolean ruleSelectExpression() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token lv_distinct_2_0=null;
        Token lv_all_3_0=null;
        Token lv_allColumns_4_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Boolean lv_selectList_5_0 = null;

        Boolean lv_source_7_0 = null;

        Boolean lv_where_9_0 = null;

        Boolean lv_groupBy_11_0 = null;

        Boolean lv_having_13_0 = null;


        try {
            // PsiInternalMickeyLang.g:2791:1: ( ( () otherlv_1= 'select' ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )? ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) ) (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )? (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )? (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )? (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )? ) )
            // PsiInternalMickeyLang.g:2792:2: ( () otherlv_1= 'select' ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )? ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) ) (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )? (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )? (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )? (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )? )
            {
            // PsiInternalMickeyLang.g:2792:2: ( () otherlv_1= 'select' ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )? ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) ) (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )? (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )? (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )? (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )? )
            // PsiInternalMickeyLang.g:2793:3: () otherlv_1= 'select' ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )? ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) ) (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )? (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )? (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )? (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )?
            {
            // PsiInternalMickeyLang.g:2793:3: ()
            // PsiInternalMickeyLang.g:2794:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getSelectExpression_SelectExpressionAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSelectExpression_SelectKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,75,FOLLOW_53); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:2807:3: ( ( (lv_distinct_2_0= 'distinct' ) ) | ( (lv_all_3_0= 'all' ) ) )?
            int alt52=3;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==76) ) {
                alt52=1;
            }
            else if ( (LA52_0==77) ) {
                alt52=2;
            }
            switch (alt52) {
                case 1 :
                    // PsiInternalMickeyLang.g:2808:4: ( (lv_distinct_2_0= 'distinct' ) )
                    {
                    // PsiInternalMickeyLang.g:2808:4: ( (lv_distinct_2_0= 'distinct' ) )
                    // PsiInternalMickeyLang.g:2809:5: (lv_distinct_2_0= 'distinct' )
                    {
                    // PsiInternalMickeyLang.g:2809:5: (lv_distinct_2_0= 'distinct' )
                    // PsiInternalMickeyLang.g:2810:6: lv_distinct_2_0= 'distinct'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getSelectExpression_DistinctDistinctKeyword_2_0_0ElementType());
                      					
                    }
                    lv_distinct_2_0=(Token)match(input,76,FOLLOW_53); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_distinct_2_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:2826:4: ( (lv_all_3_0= 'all' ) )
                    {
                    // PsiInternalMickeyLang.g:2826:4: ( (lv_all_3_0= 'all' ) )
                    // PsiInternalMickeyLang.g:2827:5: (lv_all_3_0= 'all' )
                    {
                    // PsiInternalMickeyLang.g:2827:5: (lv_all_3_0= 'all' )
                    // PsiInternalMickeyLang.g:2828:6: lv_all_3_0= 'all'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getSelectExpression_AllAllKeyword_2_1_0ElementType());
                      					
                    }
                    lv_all_3_0=(Token)match(input,77,FOLLOW_53); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_all_3_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2844:3: ( ( (lv_allColumns_4_0= '*' ) ) | ( (lv_selectList_5_0= ruleSelectList ) ) )
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==31) ) {
                alt53=1;
            }
            else if ( ((LA53_0>=RULE_ID && LA53_0<=RULE_NUMBER)||LA53_0==14||LA53_0==34||(LA53_0>=59 && LA53_0<=60)||(LA53_0>=62 && LA53_0<=64)||LA53_0==67||LA53_0==69||(LA53_0>=89 && LA53_0<=92)) ) {
                alt53=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;
            }
            switch (alt53) {
                case 1 :
                    // PsiInternalMickeyLang.g:2845:4: ( (lv_allColumns_4_0= '*' ) )
                    {
                    // PsiInternalMickeyLang.g:2845:4: ( (lv_allColumns_4_0= '*' ) )
                    // PsiInternalMickeyLang.g:2846:5: (lv_allColumns_4_0= '*' )
                    {
                    // PsiInternalMickeyLang.g:2846:5: (lv_allColumns_4_0= '*' )
                    // PsiInternalMickeyLang.g:2847:6: lv_allColumns_4_0= '*'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getSelectExpression_AllColumnsAsteriskKeyword_3_0_0ElementType());
                      					
                    }
                    lv_allColumns_4_0=(Token)match(input,31,FOLLOW_54); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_allColumns_4_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:2863:4: ( (lv_selectList_5_0= ruleSelectList ) )
                    {
                    // PsiInternalMickeyLang.g:2863:4: ( (lv_selectList_5_0= ruleSelectList ) )
                    // PsiInternalMickeyLang.g:2864:5: (lv_selectList_5_0= ruleSelectList )
                    {
                    // PsiInternalMickeyLang.g:2864:5: (lv_selectList_5_0= ruleSelectList )
                    // PsiInternalMickeyLang.g:2865:6: lv_selectList_5_0= ruleSelectList
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectExpression_SelectListSelectListParserRuleCall_3_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_54);
                    lv_selectList_5_0=ruleSelectList();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2879:3: (otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) ) )?
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==29) ) {
                alt54=1;
            }
            switch (alt54) {
                case 1 :
                    // PsiInternalMickeyLang.g:2880:4: otherlv_6= 'from' ( (lv_source_7_0= ruleJoinSource ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectExpression_FromKeyword_4_0ElementType());
                      			
                    }
                    otherlv_6=(Token)match(input,29,FOLLOW_55); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_6);
                      			
                    }
                    // PsiInternalMickeyLang.g:2887:4: ( (lv_source_7_0= ruleJoinSource ) )
                    // PsiInternalMickeyLang.g:2888:5: (lv_source_7_0= ruleJoinSource )
                    {
                    // PsiInternalMickeyLang.g:2888:5: (lv_source_7_0= ruleJoinSource )
                    // PsiInternalMickeyLang.g:2889:6: lv_source_7_0= ruleJoinSource
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectExpression_SourceJoinSourceParserRuleCall_4_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_56);
                    lv_source_7_0=ruleJoinSource();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2903:3: (otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) ) )?
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==78) ) {
                alt55=1;
            }
            switch (alt55) {
                case 1 :
                    // PsiInternalMickeyLang.g:2904:4: otherlv_8= 'where' ( (lv_where_9_0= ruleWhereExpressions ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectExpression_WhereKeyword_5_0ElementType());
                      			
                    }
                    otherlv_8=(Token)match(input,78,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_8);
                      			
                    }
                    // PsiInternalMickeyLang.g:2911:4: ( (lv_where_9_0= ruleWhereExpressions ) )
                    // PsiInternalMickeyLang.g:2912:5: (lv_where_9_0= ruleWhereExpressions )
                    {
                    // PsiInternalMickeyLang.g:2912:5: (lv_where_9_0= ruleWhereExpressions )
                    // PsiInternalMickeyLang.g:2913:6: lv_where_9_0= ruleWhereExpressions
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectExpression_WhereWhereExpressionsParserRuleCall_5_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_57);
                    lv_where_9_0=ruleWhereExpressions();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2927:3: (otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) ) )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==79) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // PsiInternalMickeyLang.g:2928:4: otherlv_10= 'group by' ( (lv_groupBy_11_0= ruleGroupByExpressions ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectExpression_GroupByKeyword_6_0ElementType());
                      			
                    }
                    otherlv_10=(Token)match(input,79,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_10);
                      			
                    }
                    // PsiInternalMickeyLang.g:2935:4: ( (lv_groupBy_11_0= ruleGroupByExpressions ) )
                    // PsiInternalMickeyLang.g:2936:5: (lv_groupBy_11_0= ruleGroupByExpressions )
                    {
                    // PsiInternalMickeyLang.g:2936:5: (lv_groupBy_11_0= ruleGroupByExpressions )
                    // PsiInternalMickeyLang.g:2937:6: lv_groupBy_11_0= ruleGroupByExpressions
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectExpression_GroupByGroupByExpressionsParserRuleCall_6_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_58);
                    lv_groupBy_11_0=ruleGroupByExpressions();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:2951:3: (otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) ) )?
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==80) ) {
                alt57=1;
            }
            switch (alt57) {
                case 1 :
                    // PsiInternalMickeyLang.g:2952:4: otherlv_12= 'having' ( (lv_having_13_0= ruleHavingExpressions ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSelectExpression_HavingKeyword_7_0ElementType());
                      			
                    }
                    otherlv_12=(Token)match(input,80,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_12);
                      			
                    }
                    // PsiInternalMickeyLang.g:2959:4: ( (lv_having_13_0= ruleHavingExpressions ) )
                    // PsiInternalMickeyLang.g:2960:5: (lv_having_13_0= ruleHavingExpressions )
                    {
                    // PsiInternalMickeyLang.g:2960:5: (lv_having_13_0= ruleHavingExpressions )
                    // PsiInternalMickeyLang.g:2961:6: lv_having_13_0= ruleHavingExpressions
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getSelectExpression_HavingHavingExpressionsParserRuleCall_7_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_having_13_0=ruleHavingExpressions();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleSelectList"
    // PsiInternalMickeyLang.g:2979:1: entryRuleSelectList returns [Boolean current=false] : iv_ruleSelectList= ruleSelectList EOF ;
    public final Boolean entryRuleSelectList() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSelectList = null;


        try {
            // PsiInternalMickeyLang.g:2979:52: (iv_ruleSelectList= ruleSelectList EOF )
            // PsiInternalMickeyLang.g:2980:2: iv_ruleSelectList= ruleSelectList EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSelectListElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSelectList=ruleSelectList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSelectList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSelectList"
    // PsiInternalMickeyLang.g:2986:1: ruleSelectList returns [Boolean current=false] : ( ( (lv_resultColumns_0_0= ruleResultColumn ) ) (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )* ) ;
    public final Boolean ruleSelectList() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Boolean lv_resultColumns_0_0 = null;

        Boolean lv_resultColumns_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:2987:1: ( ( ( (lv_resultColumns_0_0= ruleResultColumn ) ) (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )* ) )
            // PsiInternalMickeyLang.g:2988:2: ( ( (lv_resultColumns_0_0= ruleResultColumn ) ) (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )* )
            {
            // PsiInternalMickeyLang.g:2988:2: ( ( (lv_resultColumns_0_0= ruleResultColumn ) ) (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )* )
            // PsiInternalMickeyLang.g:2989:3: ( (lv_resultColumns_0_0= ruleResultColumn ) ) (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )*
            {
            // PsiInternalMickeyLang.g:2989:3: ( (lv_resultColumns_0_0= ruleResultColumn ) )
            // PsiInternalMickeyLang.g:2990:4: (lv_resultColumns_0_0= ruleResultColumn )
            {
            // PsiInternalMickeyLang.g:2990:4: (lv_resultColumns_0_0= ruleResultColumn )
            // PsiInternalMickeyLang.g:2991:5: lv_resultColumns_0_0= ruleResultColumn
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getSelectList_ResultColumnsResultColumnParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_51);
            lv_resultColumns_0_0=ruleResultColumn();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3004:3: (otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) ) )*
            loop58:
            do {
                int alt58=2;
                int LA58_0 = input.LA(1);

                if ( (LA58_0==15) ) {
                    alt58=1;
                }


                switch (alt58) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:3005:4: otherlv_1= ',' ( (lv_resultColumns_2_0= ruleResultColumn ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getSelectList_CommaKeyword_1_0ElementType());
            	      			
            	    }
            	    otherlv_1=(Token)match(input,15,FOLLOW_53); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_1);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:3012:4: ( (lv_resultColumns_2_0= ruleResultColumn ) )
            	    // PsiInternalMickeyLang.g:3013:5: (lv_resultColumns_2_0= ruleResultColumn )
            	    {
            	    // PsiInternalMickeyLang.g:3013:5: (lv_resultColumns_2_0= ruleResultColumn )
            	    // PsiInternalMickeyLang.g:3014:6: lv_resultColumns_2_0= ruleResultColumn
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getSelectList_ResultColumnsResultColumnParserRuleCall_1_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_51);
            	    lv_resultColumns_2_0=ruleResultColumn();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleWhereExpressions"
    // PsiInternalMickeyLang.g:3032:1: entryRuleWhereExpressions returns [Boolean current=false] : iv_ruleWhereExpressions= ruleWhereExpressions EOF ;
    public final Boolean entryRuleWhereExpressions() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleWhereExpressions = null;


        try {
            // PsiInternalMickeyLang.g:3032:58: (iv_ruleWhereExpressions= ruleWhereExpressions EOF )
            // PsiInternalMickeyLang.g:3033:2: iv_ruleWhereExpressions= ruleWhereExpressions EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getWhereExpressionsElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleWhereExpressions=ruleWhereExpressions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleWhereExpressions; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleWhereExpressions"
    // PsiInternalMickeyLang.g:3039:1: ruleWhereExpressions returns [Boolean current=false] : ( (lv_expression_0_0= ruleSqlExpression ) ) ;
    public final Boolean ruleWhereExpressions() throws RecognitionException {
        Boolean current = false;

        Boolean lv_expression_0_0 = null;


        try {
            // PsiInternalMickeyLang.g:3040:1: ( ( (lv_expression_0_0= ruleSqlExpression ) ) )
            // PsiInternalMickeyLang.g:3041:2: ( (lv_expression_0_0= ruleSqlExpression ) )
            {
            // PsiInternalMickeyLang.g:3041:2: ( (lv_expression_0_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3042:3: (lv_expression_0_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3042:3: (lv_expression_0_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3043:4: lv_expression_0_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              				markComposite(elementTypeProvider.getWhereExpressions_ExpressionSqlExpressionParserRuleCall_0ElementType());
              			
            }
            pushFollow(FOLLOW_2);
            lv_expression_0_0=ruleSqlExpression();

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

              				doneComposite();
              				if(!current) {
              					associateWithSemanticElement();
              					current = true;
              				}
              			
            }

            }


            }


            }

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


    // $ANTLR start "entryRuleGroupByExpressions"
    // PsiInternalMickeyLang.g:3059:1: entryRuleGroupByExpressions returns [Boolean current=false] : iv_ruleGroupByExpressions= ruleGroupByExpressions EOF ;
    public final Boolean entryRuleGroupByExpressions() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleGroupByExpressions = null;


        try {
            // PsiInternalMickeyLang.g:3059:60: (iv_ruleGroupByExpressions= ruleGroupByExpressions EOF )
            // PsiInternalMickeyLang.g:3060:2: iv_ruleGroupByExpressions= ruleGroupByExpressions EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getGroupByExpressionsElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleGroupByExpressions=ruleGroupByExpressions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleGroupByExpressions; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleGroupByExpressions"
    // PsiInternalMickeyLang.g:3066:1: ruleGroupByExpressions returns [Boolean current=false] : ( ( (lv_groupByExpressions_0_0= ruleSqlExpression ) ) (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )* ) ;
    public final Boolean ruleGroupByExpressions() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Boolean lv_groupByExpressions_0_0 = null;

        Boolean lv_groupByExpressions_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:3067:1: ( ( ( (lv_groupByExpressions_0_0= ruleSqlExpression ) ) (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )* ) )
            // PsiInternalMickeyLang.g:3068:2: ( ( (lv_groupByExpressions_0_0= ruleSqlExpression ) ) (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )* )
            {
            // PsiInternalMickeyLang.g:3068:2: ( ( (lv_groupByExpressions_0_0= ruleSqlExpression ) ) (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )* )
            // PsiInternalMickeyLang.g:3069:3: ( (lv_groupByExpressions_0_0= ruleSqlExpression ) ) (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )*
            {
            // PsiInternalMickeyLang.g:3069:3: ( (lv_groupByExpressions_0_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3070:4: (lv_groupByExpressions_0_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3070:4: (lv_groupByExpressions_0_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3071:5: lv_groupByExpressions_0_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getGroupByExpressions_GroupByExpressionsSqlExpressionParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_51);
            lv_groupByExpressions_0_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3084:3: (otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) ) )*
            loop59:
            do {
                int alt59=2;
                int LA59_0 = input.LA(1);

                if ( (LA59_0==15) ) {
                    alt59=1;
                }


                switch (alt59) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:3085:4: otherlv_1= ',' ( (lv_groupByExpressions_2_0= ruleSqlExpression ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getGroupByExpressions_CommaKeyword_1_0ElementType());
            	      			
            	    }
            	    otherlv_1=(Token)match(input,15,FOLLOW_27); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_1);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:3092:4: ( (lv_groupByExpressions_2_0= ruleSqlExpression ) )
            	    // PsiInternalMickeyLang.g:3093:5: (lv_groupByExpressions_2_0= ruleSqlExpression )
            	    {
            	    // PsiInternalMickeyLang.g:3093:5: (lv_groupByExpressions_2_0= ruleSqlExpression )
            	    // PsiInternalMickeyLang.g:3094:6: lv_groupByExpressions_2_0= ruleSqlExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getGroupByExpressions_GroupByExpressionsSqlExpressionParserRuleCall_1_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_51);
            	    lv_groupByExpressions_2_0=ruleSqlExpression();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleHavingExpressions"
    // PsiInternalMickeyLang.g:3112:1: entryRuleHavingExpressions returns [Boolean current=false] : iv_ruleHavingExpressions= ruleHavingExpressions EOF ;
    public final Boolean entryRuleHavingExpressions() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleHavingExpressions = null;


        try {
            // PsiInternalMickeyLang.g:3112:59: (iv_ruleHavingExpressions= ruleHavingExpressions EOF )
            // PsiInternalMickeyLang.g:3113:2: iv_ruleHavingExpressions= ruleHavingExpressions EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getHavingExpressionsElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleHavingExpressions=ruleHavingExpressions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleHavingExpressions; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleHavingExpressions"
    // PsiInternalMickeyLang.g:3119:1: ruleHavingExpressions returns [Boolean current=false] : ( (lv_expression_0_0= ruleSqlExpression ) ) ;
    public final Boolean ruleHavingExpressions() throws RecognitionException {
        Boolean current = false;

        Boolean lv_expression_0_0 = null;


        try {
            // PsiInternalMickeyLang.g:3120:1: ( ( (lv_expression_0_0= ruleSqlExpression ) ) )
            // PsiInternalMickeyLang.g:3121:2: ( (lv_expression_0_0= ruleSqlExpression ) )
            {
            // PsiInternalMickeyLang.g:3121:2: ( (lv_expression_0_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3122:3: (lv_expression_0_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3122:3: (lv_expression_0_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3123:4: lv_expression_0_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              				markComposite(elementTypeProvider.getHavingExpressions_ExpressionSqlExpressionParserRuleCall_0ElementType());
              			
            }
            pushFollow(FOLLOW_2);
            lv_expression_0_0=ruleSqlExpression();

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

              				doneComposite();
              				if(!current) {
              					associateWithSemanticElement();
              					current = true;
              				}
              			
            }

            }


            }


            }

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


    // $ANTLR start "entryRuleOrderingTerm"
    // PsiInternalMickeyLang.g:3139:1: entryRuleOrderingTerm returns [Boolean current=false] : iv_ruleOrderingTerm= ruleOrderingTerm EOF ;
    public final Boolean entryRuleOrderingTerm() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleOrderingTerm = null;


        try {
            // PsiInternalMickeyLang.g:3139:54: (iv_ruleOrderingTerm= ruleOrderingTerm EOF )
            // PsiInternalMickeyLang.g:3140:2: iv_ruleOrderingTerm= ruleOrderingTerm EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getOrderingTermElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleOrderingTerm=ruleOrderingTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOrderingTerm; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleOrderingTerm"
    // PsiInternalMickeyLang.g:3146:1: ruleOrderingTerm returns [Boolean current=false] : ( ( (lv_expression_0_0= ruleSqlExpression ) ) ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )? ) ;
    public final Boolean ruleOrderingTerm() throws RecognitionException {
        Boolean current = false;

        Token lv_asc_1_0=null;
        Token lv_desc_2_0=null;
        Boolean lv_expression_0_0 = null;


        try {
            // PsiInternalMickeyLang.g:3147:1: ( ( ( (lv_expression_0_0= ruleSqlExpression ) ) ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )? ) )
            // PsiInternalMickeyLang.g:3148:2: ( ( (lv_expression_0_0= ruleSqlExpression ) ) ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )? )
            {
            // PsiInternalMickeyLang.g:3148:2: ( ( (lv_expression_0_0= ruleSqlExpression ) ) ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )? )
            // PsiInternalMickeyLang.g:3149:3: ( (lv_expression_0_0= ruleSqlExpression ) ) ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )?
            {
            // PsiInternalMickeyLang.g:3149:3: ( (lv_expression_0_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3150:4: (lv_expression_0_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3150:4: (lv_expression_0_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3151:5: lv_expression_0_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getOrderingTerm_ExpressionSqlExpressionParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_59);
            lv_expression_0_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3164:3: ( ( (lv_asc_1_0= 'asc' ) ) | ( (lv_desc_2_0= 'desc' ) ) )?
            int alt60=3;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==81) ) {
                alt60=1;
            }
            else if ( (LA60_0==82) ) {
                alt60=2;
            }
            switch (alt60) {
                case 1 :
                    // PsiInternalMickeyLang.g:3165:4: ( (lv_asc_1_0= 'asc' ) )
                    {
                    // PsiInternalMickeyLang.g:3165:4: ( (lv_asc_1_0= 'asc' ) )
                    // PsiInternalMickeyLang.g:3166:5: (lv_asc_1_0= 'asc' )
                    {
                    // PsiInternalMickeyLang.g:3166:5: (lv_asc_1_0= 'asc' )
                    // PsiInternalMickeyLang.g:3167:6: lv_asc_1_0= 'asc'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getOrderingTerm_AscAscKeyword_1_0_0ElementType());
                      					
                    }
                    lv_asc_1_0=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_asc_1_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:3183:4: ( (lv_desc_2_0= 'desc' ) )
                    {
                    // PsiInternalMickeyLang.g:3183:4: ( (lv_desc_2_0= 'desc' ) )
                    // PsiInternalMickeyLang.g:3184:5: (lv_desc_2_0= 'desc' )
                    {
                    // PsiInternalMickeyLang.g:3184:5: (lv_desc_2_0= 'desc' )
                    // PsiInternalMickeyLang.g:3185:6: lv_desc_2_0= 'desc'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getOrderingTerm_DescDescKeyword_1_1_0ElementType());
                      					
                    }
                    lv_desc_2_0=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_desc_2_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleJoinSource"
    // PsiInternalMickeyLang.g:3205:1: entryRuleJoinSource returns [Boolean current=false] : iv_ruleJoinSource= ruleJoinSource EOF ;
    public final Boolean entryRuleJoinSource() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleJoinSource = null;


        try {
            // PsiInternalMickeyLang.g:3205:52: (iv_ruleJoinSource= ruleJoinSource EOF )
            // PsiInternalMickeyLang.g:3206:2: iv_ruleJoinSource= ruleJoinSource EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getJoinSourceElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleJoinSource=ruleJoinSource();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJoinSource; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleJoinSource"
    // PsiInternalMickeyLang.g:3212:1: ruleJoinSource returns [Boolean current=false] : ( ( (lv_source_0_0= ruleSingleSource ) ) ( (lv_joinStatements_1_0= ruleJoinStatement ) )* ) ;
    public final Boolean ruleJoinSource() throws RecognitionException {
        Boolean current = false;

        Boolean lv_source_0_0 = null;

        Boolean lv_joinStatements_1_0 = null;


        try {
            // PsiInternalMickeyLang.g:3213:1: ( ( ( (lv_source_0_0= ruleSingleSource ) ) ( (lv_joinStatements_1_0= ruleJoinStatement ) )* ) )
            // PsiInternalMickeyLang.g:3214:2: ( ( (lv_source_0_0= ruleSingleSource ) ) ( (lv_joinStatements_1_0= ruleJoinStatement ) )* )
            {
            // PsiInternalMickeyLang.g:3214:2: ( ( (lv_source_0_0= ruleSingleSource ) ) ( (lv_joinStatements_1_0= ruleJoinStatement ) )* )
            // PsiInternalMickeyLang.g:3215:3: ( (lv_source_0_0= ruleSingleSource ) ) ( (lv_joinStatements_1_0= ruleJoinStatement ) )*
            {
            // PsiInternalMickeyLang.g:3215:3: ( (lv_source_0_0= ruleSingleSource ) )
            // PsiInternalMickeyLang.g:3216:4: (lv_source_0_0= ruleSingleSource )
            {
            // PsiInternalMickeyLang.g:3216:4: (lv_source_0_0= ruleSingleSource )
            // PsiInternalMickeyLang.g:3217:5: lv_source_0_0= ruleSingleSource
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getJoinSource_SourceSingleSourceParserRuleCall_0_0ElementType());
              				
            }
            pushFollow(FOLLOW_60);
            lv_source_0_0=ruleSingleSource();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3230:3: ( (lv_joinStatements_1_0= ruleJoinStatement ) )*
            loop61:
            do {
                int alt61=2;
                int LA61_0 = input.LA(1);

                if ( ((LA61_0>=83 && LA61_0<=84)||(LA61_0>=86 && LA61_0<=88)) ) {
                    alt61=1;
                }


                switch (alt61) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:3231:4: (lv_joinStatements_1_0= ruleJoinStatement )
            	    {
            	    // PsiInternalMickeyLang.g:3231:4: (lv_joinStatements_1_0= ruleJoinStatement )
            	    // PsiInternalMickeyLang.g:3232:5: lv_joinStatements_1_0= ruleJoinStatement
            	    {
            	    if ( state.backtracking==0 ) {

            	      					markComposite(elementTypeProvider.getJoinSource_JoinStatementsJoinStatementParserRuleCall_1_0ElementType());
            	      				
            	    }
            	    pushFollow(FOLLOW_60);
            	    lv_joinStatements_1_0=ruleJoinStatement();

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

            	      					doneComposite();
            	      					if(!current) {
            	      						associateWithSemanticElement();
            	      						current = true;
            	      					}
            	      				
            	    }

            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleSingleSource"
    // PsiInternalMickeyLang.g:3249:1: entryRuleSingleSource returns [Boolean current=false] : iv_ruleSingleSource= ruleSingleSource EOF ;
    public final Boolean entryRuleSingleSource() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSingleSource = null;


        try {
            // PsiInternalMickeyLang.g:3249:54: (iv_ruleSingleSource= ruleSingleSource EOF )
            // PsiInternalMickeyLang.g:3250:2: iv_ruleSingleSource= ruleSingleSource EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSingleSourceElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSingleSource=ruleSingleSource();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSingleSource; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSingleSource"
    // PsiInternalMickeyLang.g:3256:1: ruleSingleSource returns [Boolean current=false] : (this_SingleSourceTable_0= ruleSingleSourceTable | this_SingleSourceSelectStatement_1= ruleSingleSourceSelectStatement | this_SingleSourceJoin_2= ruleSingleSourceJoin ) ;
    public final Boolean ruleSingleSource() throws RecognitionException {
        Boolean current = false;

        Boolean this_SingleSourceTable_0 = null;

        Boolean this_SingleSourceSelectStatement_1 = null;

        Boolean this_SingleSourceJoin_2 = null;


        try {
            // PsiInternalMickeyLang.g:3257:1: ( (this_SingleSourceTable_0= ruleSingleSourceTable | this_SingleSourceSelectStatement_1= ruleSingleSourceSelectStatement | this_SingleSourceJoin_2= ruleSingleSourceJoin ) )
            // PsiInternalMickeyLang.g:3258:2: (this_SingleSourceTable_0= ruleSingleSourceTable | this_SingleSourceSelectStatement_1= ruleSingleSourceSelectStatement | this_SingleSourceJoin_2= ruleSingleSourceJoin )
            {
            // PsiInternalMickeyLang.g:3258:2: (this_SingleSourceTable_0= ruleSingleSourceTable | this_SingleSourceSelectStatement_1= ruleSingleSourceSelectStatement | this_SingleSourceJoin_2= ruleSingleSourceJoin )
            int alt62=3;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==RULE_ID) ) {
                alt62=1;
            }
            else if ( (LA62_0==14) ) {
                int LA62_2 = input.LA(2);

                if ( (LA62_2==75) ) {
                    alt62=2;
                }
                else if ( (LA62_2==RULE_ID||LA62_2==14) ) {
                    alt62=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 62, 2, input);

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

                throw nvae;
            }
            switch (alt62) {
                case 1 :
                    // PsiInternalMickeyLang.g:3259:3: this_SingleSourceTable_0= ruleSingleSourceTable
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getSingleSource_SingleSourceTableParserRuleCall_0ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_SingleSourceTable_0=ruleSingleSourceTable();

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

                      			current = this_SingleSourceTable_0;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:3268:3: this_SingleSourceSelectStatement_1= ruleSingleSourceSelectStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getSingleSource_SingleSourceSelectStatementParserRuleCall_1ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_SingleSourceSelectStatement_1=ruleSingleSourceSelectStatement();

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

                      			current = this_SingleSourceSelectStatement_1;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:3277:3: this_SingleSourceJoin_2= ruleSingleSourceJoin
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getSingleSource_SingleSourceJoinParserRuleCall_2ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_SingleSourceJoin_2=ruleSingleSourceJoin();

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

                      			current = this_SingleSourceJoin_2;
                      			doneComposite();
                      		
                    }

                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleSingleSourceTable"
    // PsiInternalMickeyLang.g:3289:1: entryRuleSingleSourceTable returns [Boolean current=false] : iv_ruleSingleSourceTable= ruleSingleSourceTable EOF ;
    public final Boolean entryRuleSingleSourceTable() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSingleSourceTable = null;


        try {
            // PsiInternalMickeyLang.g:3289:59: (iv_ruleSingleSourceTable= ruleSingleSourceTable EOF )
            // PsiInternalMickeyLang.g:3290:2: iv_ruleSingleSourceTable= ruleSingleSourceTable EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSingleSourceTableElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSingleSourceTable=ruleSingleSourceTable();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSingleSourceTable; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSingleSourceTable"
    // PsiInternalMickeyLang.g:3296:1: ruleSingleSourceTable returns [Boolean current=false] : ( () ( ( ruleQualifiedName ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? ) ;
    public final Boolean ruleSingleSourceTable() throws RecognitionException {
        Boolean current = false;

        Token otherlv_2=null;
        Token lv_name_3_0=null;

        try {
            // PsiInternalMickeyLang.g:3297:1: ( ( () ( ( ruleQualifiedName ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? ) )
            // PsiInternalMickeyLang.g:3298:2: ( () ( ( ruleQualifiedName ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? )
            {
            // PsiInternalMickeyLang.g:3298:2: ( () ( ( ruleQualifiedName ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? )
            // PsiInternalMickeyLang.g:3299:3: () ( ( ruleQualifiedName ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )?
            {
            // PsiInternalMickeyLang.g:3299:3: ()
            // PsiInternalMickeyLang.g:3300:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getSingleSourceTable_SingleSourceTableAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:3306:3: ( ( ruleQualifiedName ) )
            // PsiInternalMickeyLang.g:3307:4: ( ruleQualifiedName )
            {
            // PsiInternalMickeyLang.g:3307:4: ( ruleQualifiedName )
            // PsiInternalMickeyLang.g:3308:5: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getSingleSourceTable_TableReferenceTableDefinitionCrossReference_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_61);
            ruleQualifiedName();

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

              					doneComposite();
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3323:3: (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )?
            int alt63=2;
            int LA63_0 = input.LA(1);

            if ( (LA63_0==68) ) {
                alt63=1;
            }
            switch (alt63) {
                case 1 :
                    // PsiInternalMickeyLang.g:3324:4: otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSingleSourceTable_AsKeyword_2_0ElementType());
                      			
                    }
                    otherlv_2=(Token)match(input,68,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_2);
                      			
                    }
                    // PsiInternalMickeyLang.g:3331:4: ( (lv_name_3_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:3332:5: (lv_name_3_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:3332:5: (lv_name_3_0= RULE_ID )
                    // PsiInternalMickeyLang.g:3333:6: lv_name_3_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getSingleSourceTable_NameIDTerminalRuleCall_2_1_0ElementType());
                      					
                    }
                    lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_3_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleSingleSourceSelectStatement"
    // PsiInternalMickeyLang.g:3353:1: entryRuleSingleSourceSelectStatement returns [Boolean current=false] : iv_ruleSingleSourceSelectStatement= ruleSingleSourceSelectStatement EOF ;
    public final Boolean entryRuleSingleSourceSelectStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSingleSourceSelectStatement = null;


        try {
            // PsiInternalMickeyLang.g:3353:69: (iv_ruleSingleSourceSelectStatement= ruleSingleSourceSelectStatement EOF )
            // PsiInternalMickeyLang.g:3354:2: iv_ruleSingleSourceSelectStatement= ruleSingleSourceSelectStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSingleSourceSelectStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSingleSourceSelectStatement=ruleSingleSourceSelectStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSingleSourceSelectStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSingleSourceSelectStatement"
    // PsiInternalMickeyLang.g:3360:1: ruleSingleSourceSelectStatement returns [Boolean current=false] : ( () otherlv_1= '(' ( (lv_selectStatement_2_0= ruleSelectStatement ) ) otherlv_3= ')' (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? ) ;
    public final Boolean ruleSingleSourceSelectStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_name_5_0=null;
        Boolean lv_selectStatement_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:3361:1: ( ( () otherlv_1= '(' ( (lv_selectStatement_2_0= ruleSelectStatement ) ) otherlv_3= ')' (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? ) )
            // PsiInternalMickeyLang.g:3362:2: ( () otherlv_1= '(' ( (lv_selectStatement_2_0= ruleSelectStatement ) ) otherlv_3= ')' (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? )
            {
            // PsiInternalMickeyLang.g:3362:2: ( () otherlv_1= '(' ( (lv_selectStatement_2_0= ruleSelectStatement ) ) otherlv_3= ')' (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? )
            // PsiInternalMickeyLang.g:3363:3: () otherlv_1= '(' ( (lv_selectStatement_2_0= ruleSelectStatement ) ) otherlv_3= ')' (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )?
            {
            // PsiInternalMickeyLang.g:3363:3: ()
            // PsiInternalMickeyLang.g:3364:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getSingleSourceSelectStatement_SingleSourceSelectStatementAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSingleSourceSelectStatement_LeftParenthesisKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,14,FOLLOW_40); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:3377:3: ( (lv_selectStatement_2_0= ruleSelectStatement ) )
            // PsiInternalMickeyLang.g:3378:4: (lv_selectStatement_2_0= ruleSelectStatement )
            {
            // PsiInternalMickeyLang.g:3378:4: (lv_selectStatement_2_0= ruleSelectStatement )
            // PsiInternalMickeyLang.g:3379:5: lv_selectStatement_2_0= ruleSelectStatement
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getSingleSourceSelectStatement_SelectStatementSelectStatementParserRuleCall_2_0ElementType());
              				
            }
            pushFollow(FOLLOW_38);
            lv_selectStatement_2_0=ruleSelectStatement();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSingleSourceSelectStatement_RightParenthesisKeyword_3ElementType());
              		
            }
            otherlv_3=(Token)match(input,16,FOLLOW_61); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:3399:3: (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )?
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==68) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // PsiInternalMickeyLang.g:3400:4: otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSingleSourceSelectStatement_AsKeyword_4_0ElementType());
                      			
                    }
                    otherlv_4=(Token)match(input,68,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_4);
                      			
                    }
                    // PsiInternalMickeyLang.g:3407:4: ( (lv_name_5_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:3408:5: (lv_name_5_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:3408:5: (lv_name_5_0= RULE_ID )
                    // PsiInternalMickeyLang.g:3409:6: lv_name_5_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getSingleSourceSelectStatement_NameIDTerminalRuleCall_4_1_0ElementType());
                      					
                    }
                    lv_name_5_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_5_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleSingleSourceJoin"
    // PsiInternalMickeyLang.g:3429:1: entryRuleSingleSourceJoin returns [Boolean current=false] : iv_ruleSingleSourceJoin= ruleSingleSourceJoin EOF ;
    public final Boolean entryRuleSingleSourceJoin() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSingleSourceJoin = null;


        try {
            // PsiInternalMickeyLang.g:3429:58: (iv_ruleSingleSourceJoin= ruleSingleSourceJoin EOF )
            // PsiInternalMickeyLang.g:3430:2: iv_ruleSingleSourceJoin= ruleSingleSourceJoin EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSingleSourceJoinElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSingleSourceJoin=ruleSingleSourceJoin();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSingleSourceJoin; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSingleSourceJoin"
    // PsiInternalMickeyLang.g:3436:1: ruleSingleSourceJoin returns [Boolean current=false] : (otherlv_0= '(' ( (lv_joinSource_1_0= ruleJoinSource ) ) otherlv_2= ')' ) ;
    public final Boolean ruleSingleSourceJoin() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Boolean lv_joinSource_1_0 = null;


        try {
            // PsiInternalMickeyLang.g:3437:1: ( (otherlv_0= '(' ( (lv_joinSource_1_0= ruleJoinSource ) ) otherlv_2= ')' ) )
            // PsiInternalMickeyLang.g:3438:2: (otherlv_0= '(' ( (lv_joinSource_1_0= ruleJoinSource ) ) otherlv_2= ')' )
            {
            // PsiInternalMickeyLang.g:3438:2: (otherlv_0= '(' ( (lv_joinSource_1_0= ruleJoinSource ) ) otherlv_2= ')' )
            // PsiInternalMickeyLang.g:3439:3: otherlv_0= '(' ( (lv_joinSource_1_0= ruleJoinSource ) ) otherlv_2= ')'
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSingleSourceJoin_LeftParenthesisKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,14,FOLLOW_55); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:3446:3: ( (lv_joinSource_1_0= ruleJoinSource ) )
            // PsiInternalMickeyLang.g:3447:4: (lv_joinSource_1_0= ruleJoinSource )
            {
            // PsiInternalMickeyLang.g:3447:4: (lv_joinSource_1_0= ruleJoinSource )
            // PsiInternalMickeyLang.g:3448:5: lv_joinSource_1_0= ruleJoinSource
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getSingleSourceJoin_JoinSourceJoinSourceParserRuleCall_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_38);
            lv_joinSource_1_0=ruleJoinSource();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSingleSourceJoin_RightParenthesisKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleJoinStatement"
    // PsiInternalMickeyLang.g:3472:1: entryRuleJoinStatement returns [Boolean current=false] : iv_ruleJoinStatement= ruleJoinStatement EOF ;
    public final Boolean entryRuleJoinStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleJoinStatement = null;


        try {
            // PsiInternalMickeyLang.g:3472:55: (iv_ruleJoinStatement= ruleJoinStatement EOF )
            // PsiInternalMickeyLang.g:3473:2: iv_ruleJoinStatement= ruleJoinStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getJoinStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleJoinStatement=ruleJoinStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJoinStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleJoinStatement"
    // PsiInternalMickeyLang.g:3479:1: ruleJoinStatement returns [Boolean current=false] : ( () ( (lv_natural_1_0= 'natural' ) )? ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )? otherlv_6= 'join' ( (lv_singleSource_7_0= ruleSingleSource ) ) otherlv_8= 'on' ( (lv_expression_9_0= ruleSqlExpression ) ) ) ;
    public final Boolean ruleJoinStatement() throws RecognitionException {
        Boolean current = false;

        Token lv_natural_1_0=null;
        Token lv_left_2_0=null;
        Token lv_outer_3_0=null;
        Token lv_inner_4_0=null;
        Token lv_cross_5_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Boolean lv_singleSource_7_0 = null;

        Boolean lv_expression_9_0 = null;


        try {
            // PsiInternalMickeyLang.g:3480:1: ( ( () ( (lv_natural_1_0= 'natural' ) )? ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )? otherlv_6= 'join' ( (lv_singleSource_7_0= ruleSingleSource ) ) otherlv_8= 'on' ( (lv_expression_9_0= ruleSqlExpression ) ) ) )
            // PsiInternalMickeyLang.g:3481:2: ( () ( (lv_natural_1_0= 'natural' ) )? ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )? otherlv_6= 'join' ( (lv_singleSource_7_0= ruleSingleSource ) ) otherlv_8= 'on' ( (lv_expression_9_0= ruleSqlExpression ) ) )
            {
            // PsiInternalMickeyLang.g:3481:2: ( () ( (lv_natural_1_0= 'natural' ) )? ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )? otherlv_6= 'join' ( (lv_singleSource_7_0= ruleSingleSource ) ) otherlv_8= 'on' ( (lv_expression_9_0= ruleSqlExpression ) ) )
            // PsiInternalMickeyLang.g:3482:3: () ( (lv_natural_1_0= 'natural' ) )? ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )? otherlv_6= 'join' ( (lv_singleSource_7_0= ruleSingleSource ) ) otherlv_8= 'on' ( (lv_expression_9_0= ruleSqlExpression ) )
            {
            // PsiInternalMickeyLang.g:3482:3: ()
            // PsiInternalMickeyLang.g:3483:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getJoinStatement_JoinStatementAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:3489:3: ( (lv_natural_1_0= 'natural' ) )?
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==83) ) {
                alt65=1;
            }
            switch (alt65) {
                case 1 :
                    // PsiInternalMickeyLang.g:3490:4: (lv_natural_1_0= 'natural' )
                    {
                    // PsiInternalMickeyLang.g:3490:4: (lv_natural_1_0= 'natural' )
                    // PsiInternalMickeyLang.g:3491:5: lv_natural_1_0= 'natural'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getJoinStatement_NaturalNaturalKeyword_1_0ElementType());
                      				
                    }
                    lv_natural_1_0=(Token)match(input,83,FOLLOW_62); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_natural_1_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:3506:3: ( ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? ) | ( (lv_inner_4_0= 'inner' ) ) | ( (lv_cross_5_0= 'cross' ) ) )?
            int alt67=4;
            switch ( input.LA(1) ) {
                case 84:
                    {
                    alt67=1;
                    }
                    break;
                case 86:
                    {
                    alt67=2;
                    }
                    break;
                case 87:
                    {
                    alt67=3;
                    }
                    break;
            }

            switch (alt67) {
                case 1 :
                    // PsiInternalMickeyLang.g:3507:4: ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? )
                    {
                    // PsiInternalMickeyLang.g:3507:4: ( ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )? )
                    // PsiInternalMickeyLang.g:3508:5: ( (lv_left_2_0= 'left' ) ) ( (lv_outer_3_0= 'outer' ) )?
                    {
                    // PsiInternalMickeyLang.g:3508:5: ( (lv_left_2_0= 'left' ) )
                    // PsiInternalMickeyLang.g:3509:6: (lv_left_2_0= 'left' )
                    {
                    // PsiInternalMickeyLang.g:3509:6: (lv_left_2_0= 'left' )
                    // PsiInternalMickeyLang.g:3510:7: lv_left_2_0= 'left'
                    {
                    if ( state.backtracking==0 ) {

                      							markLeaf(elementTypeProvider.getJoinStatement_LeftLeftKeyword_2_0_0_0ElementType());
                      						
                    }
                    lv_left_2_0=(Token)match(input,84,FOLLOW_63); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      							doneLeaf(lv_left_2_0);
                      						
                    }
                    if ( state.backtracking==0 ) {

                      							if (!current) {
                      								associateWithSemanticElement();
                      								current = true;
                      							}
                      						
                    }

                    }


                    }

                    // PsiInternalMickeyLang.g:3525:5: ( (lv_outer_3_0= 'outer' ) )?
                    int alt66=2;
                    int LA66_0 = input.LA(1);

                    if ( (LA66_0==85) ) {
                        alt66=1;
                    }
                    switch (alt66) {
                        case 1 :
                            // PsiInternalMickeyLang.g:3526:6: (lv_outer_3_0= 'outer' )
                            {
                            // PsiInternalMickeyLang.g:3526:6: (lv_outer_3_0= 'outer' )
                            // PsiInternalMickeyLang.g:3527:7: lv_outer_3_0= 'outer'
                            {
                            if ( state.backtracking==0 ) {

                              							markLeaf(elementTypeProvider.getJoinStatement_OuterOuterKeyword_2_0_1_0ElementType());
                              						
                            }
                            lv_outer_3_0=(Token)match(input,85,FOLLOW_64); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							doneLeaf(lv_outer_3_0);
                              						
                            }
                            if ( state.backtracking==0 ) {

                              							if (!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:3544:4: ( (lv_inner_4_0= 'inner' ) )
                    {
                    // PsiInternalMickeyLang.g:3544:4: ( (lv_inner_4_0= 'inner' ) )
                    // PsiInternalMickeyLang.g:3545:5: (lv_inner_4_0= 'inner' )
                    {
                    // PsiInternalMickeyLang.g:3545:5: (lv_inner_4_0= 'inner' )
                    // PsiInternalMickeyLang.g:3546:6: lv_inner_4_0= 'inner'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getJoinStatement_InnerInnerKeyword_2_1_0ElementType());
                      					
                    }
                    lv_inner_4_0=(Token)match(input,86,FOLLOW_64); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_inner_4_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:3562:4: ( (lv_cross_5_0= 'cross' ) )
                    {
                    // PsiInternalMickeyLang.g:3562:4: ( (lv_cross_5_0= 'cross' ) )
                    // PsiInternalMickeyLang.g:3563:5: (lv_cross_5_0= 'cross' )
                    {
                    // PsiInternalMickeyLang.g:3563:5: (lv_cross_5_0= 'cross' )
                    // PsiInternalMickeyLang.g:3564:6: lv_cross_5_0= 'cross'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getJoinStatement_CrossCrossKeyword_2_2_0ElementType());
                      					
                    }
                    lv_cross_5_0=(Token)match(input,87,FOLLOW_64); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_cross_5_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getJoinStatement_JoinKeyword_3ElementType());
              		
            }
            otherlv_6=(Token)match(input,88,FOLLOW_55); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_6);
              		
            }
            // PsiInternalMickeyLang.g:3587:3: ( (lv_singleSource_7_0= ruleSingleSource ) )
            // PsiInternalMickeyLang.g:3588:4: (lv_singleSource_7_0= ruleSingleSource )
            {
            // PsiInternalMickeyLang.g:3588:4: (lv_singleSource_7_0= ruleSingleSource )
            // PsiInternalMickeyLang.g:3589:5: lv_singleSource_7_0= ruleSingleSource
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getJoinStatement_SingleSourceSingleSourceParserRuleCall_4_0ElementType());
              				
            }
            pushFollow(FOLLOW_14);
            lv_singleSource_7_0=ruleSingleSource();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getJoinStatement_OnKeyword_5ElementType());
              		
            }
            otherlv_8=(Token)match(input,22,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_8);
              		
            }
            // PsiInternalMickeyLang.g:3609:3: ( (lv_expression_9_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3610:4: (lv_expression_9_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3610:4: (lv_expression_9_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3611:5: lv_expression_9_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getJoinStatement_ExpressionSqlExpressionParserRuleCall_6_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_expression_9_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleResultColumn"
    // PsiInternalMickeyLang.g:3628:1: entryRuleResultColumn returns [Boolean current=false] : iv_ruleResultColumn= ruleResultColumn EOF ;
    public final Boolean entryRuleResultColumn() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleResultColumn = null;


        try {
            // PsiInternalMickeyLang.g:3628:54: (iv_ruleResultColumn= ruleResultColumn EOF )
            // PsiInternalMickeyLang.g:3629:2: iv_ruleResultColumn= ruleResultColumn EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getResultColumnElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleResultColumn=ruleResultColumn();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleResultColumn; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleResultColumn"
    // PsiInternalMickeyLang.g:3635:1: ruleResultColumn returns [Boolean current=false] : ( () ( (lv_expression_1_0= ruleSqlExpression ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? ) ;
    public final Boolean ruleResultColumn() throws RecognitionException {
        Boolean current = false;

        Token otherlv_2=null;
        Token lv_name_3_0=null;
        Boolean lv_expression_1_0 = null;


        try {
            // PsiInternalMickeyLang.g:3636:1: ( ( () ( (lv_expression_1_0= ruleSqlExpression ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? ) )
            // PsiInternalMickeyLang.g:3637:2: ( () ( (lv_expression_1_0= ruleSqlExpression ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? )
            {
            // PsiInternalMickeyLang.g:3637:2: ( () ( (lv_expression_1_0= ruleSqlExpression ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )? )
            // PsiInternalMickeyLang.g:3638:3: () ( (lv_expression_1_0= ruleSqlExpression ) ) (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )?
            {
            // PsiInternalMickeyLang.g:3638:3: ()
            // PsiInternalMickeyLang.g:3639:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getResultColumn_ResultColumnAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:3645:3: ( (lv_expression_1_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:3646:4: (lv_expression_1_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:3646:4: (lv_expression_1_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:3647:5: lv_expression_1_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getResultColumn_ExpressionSqlExpressionParserRuleCall_1_0ElementType());
              				
            }
            pushFollow(FOLLOW_61);
            lv_expression_1_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:3660:3: (otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) ) )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==68) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // PsiInternalMickeyLang.g:3661:4: otherlv_2= 'as' ( (lv_name_3_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getResultColumn_AsKeyword_2_0ElementType());
                      			
                    }
                    otherlv_2=(Token)match(input,68,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_2);
                      			
                    }
                    // PsiInternalMickeyLang.g:3668:4: ( (lv_name_3_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:3669:5: (lv_name_3_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:3669:5: (lv_name_3_0= RULE_ID )
                    // PsiInternalMickeyLang.g:3670:6: lv_name_3_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getResultColumn_NameIDTerminalRuleCall_2_1_0ElementType());
                      					
                    }
                    lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_3_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleLiteralValue"
    // PsiInternalMickeyLang.g:3690:1: entryRuleLiteralValue returns [Boolean current=false] : iv_ruleLiteralValue= ruleLiteralValue EOF ;
    public final Boolean entryRuleLiteralValue() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleLiteralValue = null;


        try {
            // PsiInternalMickeyLang.g:3690:54: (iv_ruleLiteralValue= ruleLiteralValue EOF )
            // PsiInternalMickeyLang.g:3691:2: iv_ruleLiteralValue= ruleLiteralValue EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getLiteralValueElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLiteralValue=ruleLiteralValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLiteralValue; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleLiteralValue"
    // PsiInternalMickeyLang.g:3697:1: ruleLiteralValue returns [Boolean current=false] : ( ( () ( (lv_number_1_0= ruleSignedNumber ) ) ) | ( () ( (lv_literal_3_0= RULE_STRING ) ) ) | ( () ( (lv_literal_5_0= 'null' ) ) ) | ( () ( (lv_literal_7_0= 'current_time' ) ) ) | ( () ( (lv_literal_9_0= 'current_date' ) ) ) | ( () ( (lv_literal_11_0= 'current_timestamp' ) ) ) ) ;
    public final Boolean ruleLiteralValue() throws RecognitionException {
        Boolean current = false;

        Token lv_literal_3_0=null;
        Token lv_literal_5_0=null;
        Token lv_literal_7_0=null;
        Token lv_literal_9_0=null;
        Token lv_literal_11_0=null;
        Boolean lv_number_1_0 = null;


        try {
            // PsiInternalMickeyLang.g:3698:1: ( ( ( () ( (lv_number_1_0= ruleSignedNumber ) ) ) | ( () ( (lv_literal_3_0= RULE_STRING ) ) ) | ( () ( (lv_literal_5_0= 'null' ) ) ) | ( () ( (lv_literal_7_0= 'current_time' ) ) ) | ( () ( (lv_literal_9_0= 'current_date' ) ) ) | ( () ( (lv_literal_11_0= 'current_timestamp' ) ) ) ) )
            // PsiInternalMickeyLang.g:3699:2: ( ( () ( (lv_number_1_0= ruleSignedNumber ) ) ) | ( () ( (lv_literal_3_0= RULE_STRING ) ) ) | ( () ( (lv_literal_5_0= 'null' ) ) ) | ( () ( (lv_literal_7_0= 'current_time' ) ) ) | ( () ( (lv_literal_9_0= 'current_date' ) ) ) | ( () ( (lv_literal_11_0= 'current_timestamp' ) ) ) )
            {
            // PsiInternalMickeyLang.g:3699:2: ( ( () ( (lv_number_1_0= ruleSignedNumber ) ) ) | ( () ( (lv_literal_3_0= RULE_STRING ) ) ) | ( () ( (lv_literal_5_0= 'null' ) ) ) | ( () ( (lv_literal_7_0= 'current_time' ) ) ) | ( () ( (lv_literal_9_0= 'current_date' ) ) ) | ( () ( (lv_literal_11_0= 'current_timestamp' ) ) ) )
            int alt69=6;
            switch ( input.LA(1) ) {
            case RULE_NUMBER:
            case 34:
                {
                alt69=1;
                }
                break;
            case RULE_STRING:
                {
                alt69=2;
                }
                break;
            case 89:
                {
                alt69=3;
                }
                break;
            case 90:
                {
                alt69=4;
                }
                break;
            case 91:
                {
                alt69=5;
                }
                break;
            case 92:
                {
                alt69=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }

            switch (alt69) {
                case 1 :
                    // PsiInternalMickeyLang.g:3700:3: ( () ( (lv_number_1_0= ruleSignedNumber ) ) )
                    {
                    // PsiInternalMickeyLang.g:3700:3: ( () ( (lv_number_1_0= ruleSignedNumber ) ) )
                    // PsiInternalMickeyLang.g:3701:4: () ( (lv_number_1_0= ruleSignedNumber ) )
                    {
                    // PsiInternalMickeyLang.g:3701:4: ()
                    // PsiInternalMickeyLang.g:3702:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_NumericLiteralAction_0_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3708:4: ( (lv_number_1_0= ruleSignedNumber ) )
                    // PsiInternalMickeyLang.g:3709:5: (lv_number_1_0= ruleSignedNumber )
                    {
                    // PsiInternalMickeyLang.g:3709:5: (lv_number_1_0= ruleSignedNumber )
                    // PsiInternalMickeyLang.g:3710:6: lv_number_1_0= ruleSignedNumber
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getLiteralValue_NumberSignedNumberParserRuleCall_0_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_number_1_0=ruleSignedNumber();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:3725:3: ( () ( (lv_literal_3_0= RULE_STRING ) ) )
                    {
                    // PsiInternalMickeyLang.g:3725:3: ( () ( (lv_literal_3_0= RULE_STRING ) ) )
                    // PsiInternalMickeyLang.g:3726:4: () ( (lv_literal_3_0= RULE_STRING ) )
                    {
                    // PsiInternalMickeyLang.g:3726:4: ()
                    // PsiInternalMickeyLang.g:3727:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_StringLiteralAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3733:4: ( (lv_literal_3_0= RULE_STRING ) )
                    // PsiInternalMickeyLang.g:3734:5: (lv_literal_3_0= RULE_STRING )
                    {
                    // PsiInternalMickeyLang.g:3734:5: (lv_literal_3_0= RULE_STRING )
                    // PsiInternalMickeyLang.g:3735:6: lv_literal_3_0= RULE_STRING
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getLiteralValue_LiteralSTRINGTerminalRuleCall_1_1_0ElementType());
                      					
                    }
                    lv_literal_3_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_literal_3_0);
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:3752:3: ( () ( (lv_literal_5_0= 'null' ) ) )
                    {
                    // PsiInternalMickeyLang.g:3752:3: ( () ( (lv_literal_5_0= 'null' ) ) )
                    // PsiInternalMickeyLang.g:3753:4: () ( (lv_literal_5_0= 'null' ) )
                    {
                    // PsiInternalMickeyLang.g:3753:4: ()
                    // PsiInternalMickeyLang.g:3754:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_NullLiteralAction_2_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3760:4: ( (lv_literal_5_0= 'null' ) )
                    // PsiInternalMickeyLang.g:3761:5: (lv_literal_5_0= 'null' )
                    {
                    // PsiInternalMickeyLang.g:3761:5: (lv_literal_5_0= 'null' )
                    // PsiInternalMickeyLang.g:3762:6: lv_literal_5_0= 'null'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getLiteralValue_LiteralNullKeyword_2_1_0ElementType());
                      					
                    }
                    lv_literal_5_0=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_literal_5_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:3779:3: ( () ( (lv_literal_7_0= 'current_time' ) ) )
                    {
                    // PsiInternalMickeyLang.g:3779:3: ( () ( (lv_literal_7_0= 'current_time' ) ) )
                    // PsiInternalMickeyLang.g:3780:4: () ( (lv_literal_7_0= 'current_time' ) )
                    {
                    // PsiInternalMickeyLang.g:3780:4: ()
                    // PsiInternalMickeyLang.g:3781:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_CurrentTimeLiteralAction_3_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3787:4: ( (lv_literal_7_0= 'current_time' ) )
                    // PsiInternalMickeyLang.g:3788:5: (lv_literal_7_0= 'current_time' )
                    {
                    // PsiInternalMickeyLang.g:3788:5: (lv_literal_7_0= 'current_time' )
                    // PsiInternalMickeyLang.g:3789:6: lv_literal_7_0= 'current_time'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getLiteralValue_LiteralCurrent_timeKeyword_3_1_0ElementType());
                      					
                    }
                    lv_literal_7_0=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_literal_7_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:3806:3: ( () ( (lv_literal_9_0= 'current_date' ) ) )
                    {
                    // PsiInternalMickeyLang.g:3806:3: ( () ( (lv_literal_9_0= 'current_date' ) ) )
                    // PsiInternalMickeyLang.g:3807:4: () ( (lv_literal_9_0= 'current_date' ) )
                    {
                    // PsiInternalMickeyLang.g:3807:4: ()
                    // PsiInternalMickeyLang.g:3808:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_CurrentDateLiteralAction_4_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3814:4: ( (lv_literal_9_0= 'current_date' ) )
                    // PsiInternalMickeyLang.g:3815:5: (lv_literal_9_0= 'current_date' )
                    {
                    // PsiInternalMickeyLang.g:3815:5: (lv_literal_9_0= 'current_date' )
                    // PsiInternalMickeyLang.g:3816:6: lv_literal_9_0= 'current_date'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getLiteralValue_LiteralCurrent_dateKeyword_4_1_0ElementType());
                      					
                    }
                    lv_literal_9_0=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_literal_9_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 6 :
                    // PsiInternalMickeyLang.g:3833:3: ( () ( (lv_literal_11_0= 'current_timestamp' ) ) )
                    {
                    // PsiInternalMickeyLang.g:3833:3: ( () ( (lv_literal_11_0= 'current_timestamp' ) ) )
                    // PsiInternalMickeyLang.g:3834:4: () ( (lv_literal_11_0= 'current_timestamp' ) )
                    {
                    // PsiInternalMickeyLang.g:3834:4: ()
                    // PsiInternalMickeyLang.g:3835:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getLiteralValue_CurrentTimeStampLiteralAction_5_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:3841:4: ( (lv_literal_11_0= 'current_timestamp' ) )
                    // PsiInternalMickeyLang.g:3842:5: (lv_literal_11_0= 'current_timestamp' )
                    {
                    // PsiInternalMickeyLang.g:3842:5: (lv_literal_11_0= 'current_timestamp' )
                    // PsiInternalMickeyLang.g:3843:6: lv_literal_11_0= 'current_timestamp'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getLiteralValue_LiteralCurrent_timestampKeyword_5_1_0ElementType());
                      					
                    }
                    lv_literal_11_0=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_literal_11_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleDDLStatement"
    // PsiInternalMickeyLang.g:3863:1: entryRuleDDLStatement returns [Boolean current=false] : iv_ruleDDLStatement= ruleDDLStatement EOF ;
    public final Boolean entryRuleDDLStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDDLStatement = null;


        try {
            // PsiInternalMickeyLang.g:3863:54: (iv_ruleDDLStatement= ruleDDLStatement EOF )
            // PsiInternalMickeyLang.g:3864:2: iv_ruleDDLStatement= ruleDDLStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDDLStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDDLStatement=ruleDDLStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDDLStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDDLStatement"
    // PsiInternalMickeyLang.g:3870:1: ruleDDLStatement returns [Boolean current=false] : (this_CreateTableStatement_0= ruleCreateTableStatement | this_CreateViewStatement_1= ruleCreateViewStatement | this_CreateTriggerStatement_2= ruleCreateTriggerStatement | this_CreateIndexStatement_3= ruleCreateIndexStatement | this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement | this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement | this_DropTableStatement_6= ruleDropTableStatement | this_DropTriggerStatement_7= ruleDropTriggerStatement | this_DropViewStatement_8= ruleDropViewStatement | this_DropIndexStatement_9= ruleDropIndexStatement ) ;
    public final Boolean ruleDDLStatement() throws RecognitionException {
        Boolean current = false;

        Boolean this_CreateTableStatement_0 = null;

        Boolean this_CreateViewStatement_1 = null;

        Boolean this_CreateTriggerStatement_2 = null;

        Boolean this_CreateIndexStatement_3 = null;

        Boolean this_AlterTableRenameStatement_4 = null;

        Boolean this_AlterTableAddColumnStatement_5 = null;

        Boolean this_DropTableStatement_6 = null;

        Boolean this_DropTriggerStatement_7 = null;

        Boolean this_DropViewStatement_8 = null;

        Boolean this_DropIndexStatement_9 = null;


        try {
            // PsiInternalMickeyLang.g:3871:1: ( (this_CreateTableStatement_0= ruleCreateTableStatement | this_CreateViewStatement_1= ruleCreateViewStatement | this_CreateTriggerStatement_2= ruleCreateTriggerStatement | this_CreateIndexStatement_3= ruleCreateIndexStatement | this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement | this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement | this_DropTableStatement_6= ruleDropTableStatement | this_DropTriggerStatement_7= ruleDropTriggerStatement | this_DropViewStatement_8= ruleDropViewStatement | this_DropIndexStatement_9= ruleDropIndexStatement ) )
            // PsiInternalMickeyLang.g:3872:2: (this_CreateTableStatement_0= ruleCreateTableStatement | this_CreateViewStatement_1= ruleCreateViewStatement | this_CreateTriggerStatement_2= ruleCreateTriggerStatement | this_CreateIndexStatement_3= ruleCreateIndexStatement | this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement | this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement | this_DropTableStatement_6= ruleDropTableStatement | this_DropTriggerStatement_7= ruleDropTriggerStatement | this_DropViewStatement_8= ruleDropViewStatement | this_DropIndexStatement_9= ruleDropIndexStatement )
            {
            // PsiInternalMickeyLang.g:3872:2: (this_CreateTableStatement_0= ruleCreateTableStatement | this_CreateViewStatement_1= ruleCreateViewStatement | this_CreateTriggerStatement_2= ruleCreateTriggerStatement | this_CreateIndexStatement_3= ruleCreateIndexStatement | this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement | this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement | this_DropTableStatement_6= ruleDropTableStatement | this_DropTriggerStatement_7= ruleDropTriggerStatement | this_DropViewStatement_8= ruleDropViewStatement | this_DropIndexStatement_9= ruleDropIndexStatement )
            int alt70=10;
            alt70 = dfa70.predict(input);
            switch (alt70) {
                case 1 :
                    // PsiInternalMickeyLang.g:3873:3: this_CreateTableStatement_0= ruleCreateTableStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_CreateTableStatementParserRuleCall_0ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_CreateTableStatement_0=ruleCreateTableStatement();

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

                      			current = this_CreateTableStatement_0;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:3882:3: this_CreateViewStatement_1= ruleCreateViewStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_CreateViewStatementParserRuleCall_1ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_CreateViewStatement_1=ruleCreateViewStatement();

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

                      			current = this_CreateViewStatement_1;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:3891:3: this_CreateTriggerStatement_2= ruleCreateTriggerStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_CreateTriggerStatementParserRuleCall_2ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_CreateTriggerStatement_2=ruleCreateTriggerStatement();

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

                      			current = this_CreateTriggerStatement_2;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:3900:3: this_CreateIndexStatement_3= ruleCreateIndexStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_CreateIndexStatementParserRuleCall_3ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_CreateIndexStatement_3=ruleCreateIndexStatement();

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

                      			current = this_CreateIndexStatement_3;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:3909:3: this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_AlterTableRenameStatementParserRuleCall_4ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_AlterTableRenameStatement_4=ruleAlterTableRenameStatement();

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

                      			current = this_AlterTableRenameStatement_4;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 6 :
                    // PsiInternalMickeyLang.g:3918:3: this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_AlterTableAddColumnStatementParserRuleCall_5ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_AlterTableAddColumnStatement_5=ruleAlterTableAddColumnStatement();

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

                      			current = this_AlterTableAddColumnStatement_5;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 7 :
                    // PsiInternalMickeyLang.g:3927:3: this_DropTableStatement_6= ruleDropTableStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_DropTableStatementParserRuleCall_6ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DropTableStatement_6=ruleDropTableStatement();

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

                      			current = this_DropTableStatement_6;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 8 :
                    // PsiInternalMickeyLang.g:3936:3: this_DropTriggerStatement_7= ruleDropTriggerStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_DropTriggerStatementParserRuleCall_7ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DropTriggerStatement_7=ruleDropTriggerStatement();

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

                      			current = this_DropTriggerStatement_7;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 9 :
                    // PsiInternalMickeyLang.g:3945:3: this_DropViewStatement_8= ruleDropViewStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_DropViewStatementParserRuleCall_8ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DropViewStatement_8=ruleDropViewStatement();

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

                      			current = this_DropViewStatement_8;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 10 :
                    // PsiInternalMickeyLang.g:3954:3: this_DropIndexStatement_9= ruleDropIndexStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDDLStatement_DropIndexStatementParserRuleCall_9ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DropIndexStatement_9=ruleDropIndexStatement();

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

                      			current = this_DropIndexStatement_9;
                      			doneComposite();
                      		
                    }

                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleCreateTableStatement"
    // PsiInternalMickeyLang.g:3966:1: entryRuleCreateTableStatement returns [Boolean current=false] : iv_ruleCreateTableStatement= ruleCreateTableStatement EOF ;
    public final Boolean entryRuleCreateTableStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCreateTableStatement = null;


        try {
            // PsiInternalMickeyLang.g:3966:62: (iv_ruleCreateTableStatement= ruleCreateTableStatement EOF )
            // PsiInternalMickeyLang.g:3967:2: iv_ruleCreateTableStatement= ruleCreateTableStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCreateTableStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCreateTableStatement=ruleCreateTableStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCreateTableStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCreateTableStatement"
    // PsiInternalMickeyLang.g:3973:1: ruleCreateTableStatement returns [Boolean current=false] : ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'table' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_columnDefs_6_0= ruleColumnDef ) ) (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )* (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )* otherlv_11= ')' ) ;
    public final Boolean ruleCreateTableStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token lv_temporary_2_0=null;
        Token otherlv_3=null;
        Token lv_name_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Boolean lv_columnDefs_6_0 = null;

        Boolean lv_columnDefs_8_0 = null;

        Boolean lv_constraints_10_0 = null;


        try {
            // PsiInternalMickeyLang.g:3974:1: ( ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'table' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_columnDefs_6_0= ruleColumnDef ) ) (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )* (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )* otherlv_11= ')' ) )
            // PsiInternalMickeyLang.g:3975:2: ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'table' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_columnDefs_6_0= ruleColumnDef ) ) (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )* (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )* otherlv_11= ')' )
            {
            // PsiInternalMickeyLang.g:3975:2: ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'table' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_columnDefs_6_0= ruleColumnDef ) ) (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )* (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )* otherlv_11= ')' )
            // PsiInternalMickeyLang.g:3976:3: () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'table' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_columnDefs_6_0= ruleColumnDef ) ) (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )* (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )* otherlv_11= ')'
            {
            // PsiInternalMickeyLang.g:3976:3: ()
            // PsiInternalMickeyLang.g:3977:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getCreateTableStatement_CreateTableStatementAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTableStatement_CreateKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,93,FOLLOW_65); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:3990:3: ( (lv_temporary_2_0= 'temp' ) )?
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==94) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // PsiInternalMickeyLang.g:3991:4: (lv_temporary_2_0= 'temp' )
                    {
                    // PsiInternalMickeyLang.g:3991:4: (lv_temporary_2_0= 'temp' )
                    // PsiInternalMickeyLang.g:3992:5: lv_temporary_2_0= 'temp'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getCreateTableStatement_TemporaryTempKeyword_2_0ElementType());
                      				
                    }
                    lv_temporary_2_0=(Token)match(input,94,FOLLOW_66); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_temporary_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTableStatement_TableKeyword_3ElementType());
              		
            }
            otherlv_3=(Token)match(input,95,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:4014:3: ( (lv_name_4_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:4015:4: (lv_name_4_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4015:4: (lv_name_4_0= RULE_ID )
            // PsiInternalMickeyLang.g:4016:5: lv_name_4_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateTableStatement_NameIDTerminalRuleCall_4_0ElementType());
              				
            }
            lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_4_0);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTableStatement_LeftParenthesisKeyword_5ElementType());
              		
            }
            otherlv_5=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_5);
              		
            }
            // PsiInternalMickeyLang.g:4038:3: ( (lv_columnDefs_6_0= ruleColumnDef ) )
            // PsiInternalMickeyLang.g:4039:4: (lv_columnDefs_6_0= ruleColumnDef )
            {
            // PsiInternalMickeyLang.g:4039:4: (lv_columnDefs_6_0= ruleColumnDef )
            // PsiInternalMickeyLang.g:4040:5: lv_columnDefs_6_0= ruleColumnDef
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCreateTableStatement_ColumnDefsColumnDefParserRuleCall_6_0ElementType());
              				
            }
            pushFollow(FOLLOW_7);
            lv_columnDefs_6_0=ruleColumnDef();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:4053:3: (otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) ) )*
            loop72:
            do {
                int alt72=2;
                int LA72_0 = input.LA(1);

                if ( (LA72_0==15) ) {
                    int LA72_1 = input.LA(2);

                    if ( (LA72_1==RULE_ID) ) {
                        alt72=1;
                    }


                }


                switch (alt72) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:4054:4: otherlv_7= ',' ( (lv_columnDefs_8_0= ruleColumnDef ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getCreateTableStatement_CommaKeyword_7_0ElementType());
            	      			
            	    }
            	    otherlv_7=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_7);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:4061:4: ( (lv_columnDefs_8_0= ruleColumnDef ) )
            	    // PsiInternalMickeyLang.g:4062:5: (lv_columnDefs_8_0= ruleColumnDef )
            	    {
            	    // PsiInternalMickeyLang.g:4062:5: (lv_columnDefs_8_0= ruleColumnDef )
            	    // PsiInternalMickeyLang.g:4063:6: lv_columnDefs_8_0= ruleColumnDef
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getCreateTableStatement_ColumnDefsColumnDefParserRuleCall_7_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_columnDefs_8_0=ruleColumnDef();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            // PsiInternalMickeyLang.g:4077:3: (otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) ) )*
            loop73:
            do {
                int alt73=2;
                int LA73_0 = input.LA(1);

                if ( (LA73_0==15) ) {
                    alt73=1;
                }


                switch (alt73) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:4078:4: otherlv_9= ',' ( (lv_constraints_10_0= ruleTableConstraint ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getCreateTableStatement_CommaKeyword_8_0ElementType());
            	      			
            	    }
            	    otherlv_9=(Token)match(input,15,FOLLOW_67); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_9);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:4085:4: ( (lv_constraints_10_0= ruleTableConstraint ) )
            	    // PsiInternalMickeyLang.g:4086:5: (lv_constraints_10_0= ruleTableConstraint )
            	    {
            	    // PsiInternalMickeyLang.g:4086:5: (lv_constraints_10_0= ruleTableConstraint )
            	    // PsiInternalMickeyLang.g:4087:6: lv_constraints_10_0= ruleTableConstraint
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getCreateTableStatement_ConstraintsTableConstraintParserRuleCall_8_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_constraints_10_0=ruleTableConstraint();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTableStatement_RightParenthesisKeyword_9ElementType());
              		
            }
            otherlv_11=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_11);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleCreateViewStatement"
    // PsiInternalMickeyLang.g:4112:1: entryRuleCreateViewStatement returns [Boolean current=false] : iv_ruleCreateViewStatement= ruleCreateViewStatement EOF ;
    public final Boolean entryRuleCreateViewStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCreateViewStatement = null;


        try {
            // PsiInternalMickeyLang.g:4112:61: (iv_ruleCreateViewStatement= ruleCreateViewStatement EOF )
            // PsiInternalMickeyLang.g:4113:2: iv_ruleCreateViewStatement= ruleCreateViewStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCreateViewStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCreateViewStatement=ruleCreateViewStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCreateViewStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCreateViewStatement"
    // PsiInternalMickeyLang.g:4119:1: ruleCreateViewStatement returns [Boolean current=false] : ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'view' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= 'as' ( (lv_selectStatement_6_0= ruleSelectStatement ) ) ) ;
    public final Boolean ruleCreateViewStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token lv_temporary_2_0=null;
        Token otherlv_3=null;
        Token lv_name_4_0=null;
        Token otherlv_5=null;
        Boolean lv_selectStatement_6_0 = null;


        try {
            // PsiInternalMickeyLang.g:4120:1: ( ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'view' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= 'as' ( (lv_selectStatement_6_0= ruleSelectStatement ) ) ) )
            // PsiInternalMickeyLang.g:4121:2: ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'view' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= 'as' ( (lv_selectStatement_6_0= ruleSelectStatement ) ) )
            {
            // PsiInternalMickeyLang.g:4121:2: ( () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'view' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= 'as' ( (lv_selectStatement_6_0= ruleSelectStatement ) ) )
            // PsiInternalMickeyLang.g:4122:3: () otherlv_1= 'create' ( (lv_temporary_2_0= 'temp' ) )? otherlv_3= 'view' ( (lv_name_4_0= RULE_ID ) ) otherlv_5= 'as' ( (lv_selectStatement_6_0= ruleSelectStatement ) )
            {
            // PsiInternalMickeyLang.g:4122:3: ()
            // PsiInternalMickeyLang.g:4123:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getCreateViewStatement_CreateViewStatementAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateViewStatement_CreateKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,93,FOLLOW_68); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:4136:3: ( (lv_temporary_2_0= 'temp' ) )?
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==94) ) {
                alt74=1;
            }
            switch (alt74) {
                case 1 :
                    // PsiInternalMickeyLang.g:4137:4: (lv_temporary_2_0= 'temp' )
                    {
                    // PsiInternalMickeyLang.g:4137:4: (lv_temporary_2_0= 'temp' )
                    // PsiInternalMickeyLang.g:4138:5: lv_temporary_2_0= 'temp'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getCreateViewStatement_TemporaryTempKeyword_2_0ElementType());
                      				
                    }
                    lv_temporary_2_0=(Token)match(input,94,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_temporary_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateViewStatement_ViewKeyword_3ElementType());
              		
            }
            otherlv_3=(Token)match(input,96,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:4160:3: ( (lv_name_4_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:4161:4: (lv_name_4_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4161:4: (lv_name_4_0= RULE_ID )
            // PsiInternalMickeyLang.g:4162:5: lv_name_4_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateViewStatement_NameIDTerminalRuleCall_4_0ElementType());
              				
            }
            lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_45); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_4_0);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateViewStatement_AsKeyword_5ElementType());
              		
            }
            otherlv_5=(Token)match(input,68,FOLLOW_40); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_5);
              		
            }
            // PsiInternalMickeyLang.g:4184:3: ( (lv_selectStatement_6_0= ruleSelectStatement ) )
            // PsiInternalMickeyLang.g:4185:4: (lv_selectStatement_6_0= ruleSelectStatement )
            {
            // PsiInternalMickeyLang.g:4185:4: (lv_selectStatement_6_0= ruleSelectStatement )
            // PsiInternalMickeyLang.g:4186:5: lv_selectStatement_6_0= ruleSelectStatement
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCreateViewStatement_SelectStatementSelectStatementParserRuleCall_6_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_selectStatement_6_0=ruleSelectStatement();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleCreateTriggerStatement"
    // PsiInternalMickeyLang.g:4203:1: entryRuleCreateTriggerStatement returns [Boolean current=false] : iv_ruleCreateTriggerStatement= ruleCreateTriggerStatement EOF ;
    public final Boolean entryRuleCreateTriggerStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCreateTriggerStatement = null;


        try {
            // PsiInternalMickeyLang.g:4203:64: (iv_ruleCreateTriggerStatement= ruleCreateTriggerStatement EOF )
            // PsiInternalMickeyLang.g:4204:2: iv_ruleCreateTriggerStatement= ruleCreateTriggerStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCreateTriggerStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCreateTriggerStatement=ruleCreateTriggerStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCreateTriggerStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCreateTriggerStatement"
    // PsiInternalMickeyLang.g:4210:1: ruleCreateTriggerStatement returns [Boolean current=false] : (otherlv_0= 'create' ( (lv_temporary_1_0= 'temp' ) )? otherlv_2= 'trigger' ( (lv_name_3_0= RULE_ID ) ) ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )? ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) ) otherlv_12= 'on' ( (otherlv_13= RULE_ID ) ) ( (lv_forEachRow_14_0= 'for each row' ) )? (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )? otherlv_17= 'begin' ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )? otherlv_22= 'end' ) ;
    public final Boolean ruleCreateTriggerStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_temporary_1_0=null;
        Token otherlv_2=null;
        Token lv_name_3_0=null;
        Token lv_when_4_1=null;
        Token lv_when_4_2=null;
        Token lv_when_4_3=null;
        Token lv_eventType_5_0=null;
        Token lv_eventType_6_0=null;
        Token lv_eventType_7_0=null;
        Token otherlv_8=null;
        Token lv_updateColumnNames_9_0=null;
        Token otherlv_10=null;
        Token lv_updateColumnNames_11_0=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token lv_forEachRow_14_0=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Boolean lv_whenExpression_16_0 = null;

        Boolean lv_statements_18_0 = null;

        Boolean lv_statements_20_0 = null;


        try {
            // PsiInternalMickeyLang.g:4211:1: ( (otherlv_0= 'create' ( (lv_temporary_1_0= 'temp' ) )? otherlv_2= 'trigger' ( (lv_name_3_0= RULE_ID ) ) ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )? ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) ) otherlv_12= 'on' ( (otherlv_13= RULE_ID ) ) ( (lv_forEachRow_14_0= 'for each row' ) )? (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )? otherlv_17= 'begin' ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )? otherlv_22= 'end' ) )
            // PsiInternalMickeyLang.g:4212:2: (otherlv_0= 'create' ( (lv_temporary_1_0= 'temp' ) )? otherlv_2= 'trigger' ( (lv_name_3_0= RULE_ID ) ) ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )? ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) ) otherlv_12= 'on' ( (otherlv_13= RULE_ID ) ) ( (lv_forEachRow_14_0= 'for each row' ) )? (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )? otherlv_17= 'begin' ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )? otherlv_22= 'end' )
            {
            // PsiInternalMickeyLang.g:4212:2: (otherlv_0= 'create' ( (lv_temporary_1_0= 'temp' ) )? otherlv_2= 'trigger' ( (lv_name_3_0= RULE_ID ) ) ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )? ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) ) otherlv_12= 'on' ( (otherlv_13= RULE_ID ) ) ( (lv_forEachRow_14_0= 'for each row' ) )? (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )? otherlv_17= 'begin' ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )? otherlv_22= 'end' )
            // PsiInternalMickeyLang.g:4213:3: otherlv_0= 'create' ( (lv_temporary_1_0= 'temp' ) )? otherlv_2= 'trigger' ( (lv_name_3_0= RULE_ID ) ) ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )? ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) ) otherlv_12= 'on' ( (otherlv_13= RULE_ID ) ) ( (lv_forEachRow_14_0= 'for each row' ) )? (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )? otherlv_17= 'begin' ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )? otherlv_22= 'end'
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTriggerStatement_CreateKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,93,FOLLOW_70); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:4220:3: ( (lv_temporary_1_0= 'temp' ) )?
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==94) ) {
                alt75=1;
            }
            switch (alt75) {
                case 1 :
                    // PsiInternalMickeyLang.g:4221:4: (lv_temporary_1_0= 'temp' )
                    {
                    // PsiInternalMickeyLang.g:4221:4: (lv_temporary_1_0= 'temp' )
                    // PsiInternalMickeyLang.g:4222:5: lv_temporary_1_0= 'temp'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getCreateTriggerStatement_TemporaryTempKeyword_1_0ElementType());
                      				
                    }
                    lv_temporary_1_0=(Token)match(input,94,FOLLOW_71); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_temporary_1_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTriggerStatement_TriggerKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,97,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            // PsiInternalMickeyLang.g:4244:3: ( (lv_name_3_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:4245:4: (lv_name_3_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4245:4: (lv_name_3_0= RULE_ID )
            // PsiInternalMickeyLang.g:4246:5: lv_name_3_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateTriggerStatement_NameIDTerminalRuleCall_3_0ElementType());
              				
            }
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_72); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_3_0);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:4261:3: ( ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) ) )?
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( ((LA77_0>=98 && LA77_0<=100)) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // PsiInternalMickeyLang.g:4262:4: ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) )
                    {
                    // PsiInternalMickeyLang.g:4262:4: ( (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' ) )
                    // PsiInternalMickeyLang.g:4263:5: (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' )
                    {
                    // PsiInternalMickeyLang.g:4263:5: (lv_when_4_1= 'before' | lv_when_4_2= 'after' | lv_when_4_3= 'instead of' )
                    int alt76=3;
                    switch ( input.LA(1) ) {
                    case 98:
                        {
                        alt76=1;
                        }
                        break;
                    case 99:
                        {
                        alt76=2;
                        }
                        break;
                    case 100:
                        {
                        alt76=3;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 76, 0, input);

                        throw nvae;
                    }

                    switch (alt76) {
                        case 1 :
                            // PsiInternalMickeyLang.g:4264:6: lv_when_4_1= 'before'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getCreateTriggerStatement_WhenBeforeKeyword_4_0_0ElementType());
                              					
                            }
                            lv_when_4_1=(Token)match(input,98,FOLLOW_73); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_when_4_1);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:4278:6: lv_when_4_2= 'after'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getCreateTriggerStatement_WhenAfterKeyword_4_0_1ElementType());
                              					
                            }
                            lv_when_4_2=(Token)match(input,99,FOLLOW_73); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_when_4_2);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }
                            break;
                        case 3 :
                            // PsiInternalMickeyLang.g:4292:6: lv_when_4_3= 'instead of'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getCreateTriggerStatement_WhenInsteadOfKeyword_4_0_2ElementType());
                              					
                            }
                            lv_when_4_3=(Token)match(input,100,FOLLOW_73); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_when_4_3);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:4308:3: ( ( (lv_eventType_5_0= 'delete' ) ) | ( (lv_eventType_6_0= 'insert' ) ) | ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? ) )
            int alt80=3;
            switch ( input.LA(1) ) {
            case 101:
                {
                alt80=1;
                }
                break;
            case 102:
                {
                alt80=2;
                }
                break;
            case 103:
                {
                alt80=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 80, 0, input);

                throw nvae;
            }

            switch (alt80) {
                case 1 :
                    // PsiInternalMickeyLang.g:4309:4: ( (lv_eventType_5_0= 'delete' ) )
                    {
                    // PsiInternalMickeyLang.g:4309:4: ( (lv_eventType_5_0= 'delete' ) )
                    // PsiInternalMickeyLang.g:4310:5: (lv_eventType_5_0= 'delete' )
                    {
                    // PsiInternalMickeyLang.g:4310:5: (lv_eventType_5_0= 'delete' )
                    // PsiInternalMickeyLang.g:4311:6: lv_eventType_5_0= 'delete'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getCreateTriggerStatement_EventTypeDeleteKeyword_5_0_0ElementType());
                      					
                    }
                    lv_eventType_5_0=(Token)match(input,101,FOLLOW_14); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_eventType_5_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:4327:4: ( (lv_eventType_6_0= 'insert' ) )
                    {
                    // PsiInternalMickeyLang.g:4327:4: ( (lv_eventType_6_0= 'insert' ) )
                    // PsiInternalMickeyLang.g:4328:5: (lv_eventType_6_0= 'insert' )
                    {
                    // PsiInternalMickeyLang.g:4328:5: (lv_eventType_6_0= 'insert' )
                    // PsiInternalMickeyLang.g:4329:6: lv_eventType_6_0= 'insert'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getCreateTriggerStatement_EventTypeInsertKeyword_5_1_0ElementType());
                      					
                    }
                    lv_eventType_6_0=(Token)match(input,102,FOLLOW_14); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_eventType_6_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:4345:4: ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? )
                    {
                    // PsiInternalMickeyLang.g:4345:4: ( ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )? )
                    // PsiInternalMickeyLang.g:4346:5: ( (lv_eventType_7_0= 'update' ) ) (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )?
                    {
                    // PsiInternalMickeyLang.g:4346:5: ( (lv_eventType_7_0= 'update' ) )
                    // PsiInternalMickeyLang.g:4347:6: (lv_eventType_7_0= 'update' )
                    {
                    // PsiInternalMickeyLang.g:4347:6: (lv_eventType_7_0= 'update' )
                    // PsiInternalMickeyLang.g:4348:7: lv_eventType_7_0= 'update'
                    {
                    if ( state.backtracking==0 ) {

                      							markLeaf(elementTypeProvider.getCreateTriggerStatement_EventTypeUpdateKeyword_5_2_0_0ElementType());
                      						
                    }
                    lv_eventType_7_0=(Token)match(input,103,FOLLOW_74); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      							doneLeaf(lv_eventType_7_0);
                      						
                    }
                    if ( state.backtracking==0 ) {

                      							if (!current) {
                      								associateWithSemanticElement();
                      								current = true;
                      							}
                      						
                    }

                    }


                    }

                    // PsiInternalMickeyLang.g:4363:5: (otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )* )?
                    int alt79=2;
                    int LA79_0 = input.LA(1);

                    if ( (LA79_0==104) ) {
                        alt79=1;
                    }
                    switch (alt79) {
                        case 1 :
                            // PsiInternalMickeyLang.g:4364:6: otherlv_8= 'of' ( (lv_updateColumnNames_9_0= RULE_ID ) ) (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )*
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getCreateTriggerStatement_OfKeyword_5_2_1_0ElementType());
                              					
                            }
                            otherlv_8=(Token)match(input,104,FOLLOW_3); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_8);
                              					
                            }
                            // PsiInternalMickeyLang.g:4371:6: ( (lv_updateColumnNames_9_0= RULE_ID ) )
                            // PsiInternalMickeyLang.g:4372:7: (lv_updateColumnNames_9_0= RULE_ID )
                            {
                            // PsiInternalMickeyLang.g:4372:7: (lv_updateColumnNames_9_0= RULE_ID )
                            // PsiInternalMickeyLang.g:4373:8: lv_updateColumnNames_9_0= RULE_ID
                            {
                            if ( state.backtracking==0 ) {

                              								markLeaf(elementTypeProvider.getCreateTriggerStatement_UpdateColumnNamesIDTerminalRuleCall_5_2_1_1_0ElementType());
                              							
                            }
                            lv_updateColumnNames_9_0=(Token)match(input,RULE_ID,FOLLOW_75); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              								if(!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }
                            if ( state.backtracking==0 ) {

                              								doneLeaf(lv_updateColumnNames_9_0);
                              							
                            }

                            }


                            }

                            // PsiInternalMickeyLang.g:4388:6: (otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) ) )*
                            loop78:
                            do {
                                int alt78=2;
                                int LA78_0 = input.LA(1);

                                if ( (LA78_0==15) ) {
                                    alt78=1;
                                }


                                switch (alt78) {
                            	case 1 :
                            	    // PsiInternalMickeyLang.g:4389:7: otherlv_10= ',' ( (lv_updateColumnNames_11_0= RULE_ID ) )
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      							markLeaf(elementTypeProvider.getCreateTriggerStatement_CommaKeyword_5_2_1_2_0ElementType());
                            	      						
                            	    }
                            	    otherlv_10=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      							doneLeaf(otherlv_10);
                            	      						
                            	    }
                            	    // PsiInternalMickeyLang.g:4396:7: ( (lv_updateColumnNames_11_0= RULE_ID ) )
                            	    // PsiInternalMickeyLang.g:4397:8: (lv_updateColumnNames_11_0= RULE_ID )
                            	    {
                            	    // PsiInternalMickeyLang.g:4397:8: (lv_updateColumnNames_11_0= RULE_ID )
                            	    // PsiInternalMickeyLang.g:4398:9: lv_updateColumnNames_11_0= RULE_ID
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      									markLeaf(elementTypeProvider.getCreateTriggerStatement_UpdateColumnNamesIDTerminalRuleCall_5_2_1_2_1_0ElementType());
                            	      								
                            	    }
                            	    lv_updateColumnNames_11_0=(Token)match(input,RULE_ID,FOLLOW_75); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      									if(!current) {
                            	      										associateWithSemanticElement();
                            	      										current = true;
                            	      									}
                            	      								
                            	    }
                            	    if ( state.backtracking==0 ) {

                            	      									doneLeaf(lv_updateColumnNames_11_0);
                            	      								
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

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


                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTriggerStatement_OnKeyword_6ElementType());
              		
            }
            otherlv_12=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_12);
              		
            }
            // PsiInternalMickeyLang.g:4424:3: ( (otherlv_13= RULE_ID ) )
            // PsiInternalMickeyLang.g:4425:4: (otherlv_13= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4425:4: (otherlv_13= RULE_ID )
            // PsiInternalMickeyLang.g:4426:5: otherlv_13= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateTriggerStatement_TableTableDefinitionCrossReference_7_0ElementType());
              				
            }
            otherlv_13=(Token)match(input,RULE_ID,FOLLOW_76); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_13);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:4441:3: ( (lv_forEachRow_14_0= 'for each row' ) )?
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==105) ) {
                alt81=1;
            }
            switch (alt81) {
                case 1 :
                    // PsiInternalMickeyLang.g:4442:4: (lv_forEachRow_14_0= 'for each row' )
                    {
                    // PsiInternalMickeyLang.g:4442:4: (lv_forEachRow_14_0= 'for each row' )
                    // PsiInternalMickeyLang.g:4443:5: lv_forEachRow_14_0= 'for each row'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getCreateTriggerStatement_ForEachRowForEachRowKeyword_8_0ElementType());
                      				
                    }
                    lv_forEachRow_14_0=(Token)match(input,105,FOLLOW_77); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_forEachRow_14_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:4458:3: (otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) ) )?
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==70) ) {
                alt82=1;
            }
            switch (alt82) {
                case 1 :
                    // PsiInternalMickeyLang.g:4459:4: otherlv_15= 'when' ( (lv_whenExpression_16_0= ruleSqlExpression ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCreateTriggerStatement_WhenKeyword_9_0ElementType());
                      			
                    }
                    otherlv_15=(Token)match(input,70,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_15);
                      			
                    }
                    // PsiInternalMickeyLang.g:4466:4: ( (lv_whenExpression_16_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:4467:5: (lv_whenExpression_16_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:4467:5: (lv_whenExpression_16_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:4468:6: lv_whenExpression_16_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getCreateTriggerStatement_WhenExpressionSqlExpressionParserRuleCall_9_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_78);
                    lv_whenExpression_16_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTriggerStatement_BeginKeyword_10ElementType());
              		
            }
            otherlv_17=(Token)match(input,106,FOLLOW_79); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_17);
              		
            }
            // PsiInternalMickeyLang.g:4489:3: ( ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )* )?
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( (LA84_0==75||(LA84_0>=101 && LA84_0<=103)||LA84_0==120) ) {
                alt84=1;
            }
            switch (alt84) {
                case 1 :
                    // PsiInternalMickeyLang.g:4490:4: ( (lv_statements_18_0= ruleDMLStatement ) ) otherlv_19= ';' ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )*
                    {
                    // PsiInternalMickeyLang.g:4490:4: ( (lv_statements_18_0= ruleDMLStatement ) )
                    // PsiInternalMickeyLang.g:4491:5: (lv_statements_18_0= ruleDMLStatement )
                    {
                    // PsiInternalMickeyLang.g:4491:5: (lv_statements_18_0= ruleDMLStatement )
                    // PsiInternalMickeyLang.g:4492:6: lv_statements_18_0= ruleDMLStatement
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getCreateTriggerStatement_StatementsDMLStatementParserRuleCall_11_0_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_12);
                    lv_statements_18_0=ruleDMLStatement();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCreateTriggerStatement_SemicolonKeyword_11_1ElementType());
                      			
                    }
                    otherlv_19=(Token)match(input,19,FOLLOW_79); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_19);
                      			
                    }
                    // PsiInternalMickeyLang.g:4512:4: ( ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';' )*
                    loop83:
                    do {
                        int alt83=2;
                        int LA83_0 = input.LA(1);

                        if ( (LA83_0==75||(LA83_0>=101 && LA83_0<=103)||LA83_0==120) ) {
                            alt83=1;
                        }


                        switch (alt83) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:4513:5: ( (lv_statements_20_0= ruleDMLStatement ) ) otherlv_21= ';'
                    	    {
                    	    // PsiInternalMickeyLang.g:4513:5: ( (lv_statements_20_0= ruleDMLStatement ) )
                    	    // PsiInternalMickeyLang.g:4514:6: (lv_statements_20_0= ruleDMLStatement )
                    	    {
                    	    // PsiInternalMickeyLang.g:4514:6: (lv_statements_20_0= ruleDMLStatement )
                    	    // PsiInternalMickeyLang.g:4515:7: lv_statements_20_0= ruleDMLStatement
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							markComposite(elementTypeProvider.getCreateTriggerStatement_StatementsDMLStatementParserRuleCall_11_2_0_0ElementType());
                    	      						
                    	    }
                    	    pushFollow(FOLLOW_12);
                    	    lv_statements_20_0=ruleDMLStatement();

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

                    	      							doneComposite();
                    	      							if(!current) {
                    	      								associateWithSemanticElement();
                    	      								current = true;
                    	      							}
                    	      						
                    	    }

                    	    }


                    	    }

                    	    if ( state.backtracking==0 ) {

                    	      					markLeaf(elementTypeProvider.getCreateTriggerStatement_SemicolonKeyword_11_2_1ElementType());
                    	      				
                    	    }
                    	    otherlv_21=(Token)match(input,19,FOLLOW_79); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					doneLeaf(otherlv_21);
                    	      				
                    	    }

                    	    }
                    	    break;

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


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateTriggerStatement_EndKeyword_12ElementType());
              		
            }
            otherlv_22=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_22);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleAlterTableRenameStatement"
    // PsiInternalMickeyLang.g:4548:1: entryRuleAlterTableRenameStatement returns [Boolean current=false] : iv_ruleAlterTableRenameStatement= ruleAlterTableRenameStatement EOF ;
    public final Boolean entryRuleAlterTableRenameStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleAlterTableRenameStatement = null;


        try {
            // PsiInternalMickeyLang.g:4548:67: (iv_ruleAlterTableRenameStatement= ruleAlterTableRenameStatement EOF )
            // PsiInternalMickeyLang.g:4549:2: iv_ruleAlterTableRenameStatement= ruleAlterTableRenameStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getAlterTableRenameStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAlterTableRenameStatement=ruleAlterTableRenameStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAlterTableRenameStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleAlterTableRenameStatement"
    // PsiInternalMickeyLang.g:4555:1: ruleAlterTableRenameStatement returns [Boolean current=false] : ( () otherlv_1= 'alter' otherlv_2= 'table' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'rename to' ( (lv_name_5_0= RULE_ID ) ) ) ;
    public final Boolean ruleAlterTableRenameStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_name_5_0=null;

        try {
            // PsiInternalMickeyLang.g:4556:1: ( ( () otherlv_1= 'alter' otherlv_2= 'table' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'rename to' ( (lv_name_5_0= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:4557:2: ( () otherlv_1= 'alter' otherlv_2= 'table' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'rename to' ( (lv_name_5_0= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:4557:2: ( () otherlv_1= 'alter' otherlv_2= 'table' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'rename to' ( (lv_name_5_0= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:4558:3: () otherlv_1= 'alter' otherlv_2= 'table' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'rename to' ( (lv_name_5_0= RULE_ID ) )
            {
            // PsiInternalMickeyLang.g:4558:3: ()
            // PsiInternalMickeyLang.g:4559:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getAlterTableRenameStatement_AlterTableRenameStatementAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableRenameStatement_AlterKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,107,FOLLOW_66); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableRenameStatement_TableKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,95,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            // PsiInternalMickeyLang.g:4579:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:4580:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4580:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:4581:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getAlterTableRenameStatement_TableTableDefinitionCrossReference_3_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_80); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableRenameStatement_RenameToKeyword_4ElementType());
              		
            }
            otherlv_4=(Token)match(input,108,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_4);
              		
            }
            // PsiInternalMickeyLang.g:4603:3: ( (lv_name_5_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:4604:4: (lv_name_5_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4604:4: (lv_name_5_0= RULE_ID )
            // PsiInternalMickeyLang.g:4605:5: lv_name_5_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getAlterTableRenameStatement_NameIDTerminalRuleCall_5_0ElementType());
              				
            }
            lv_name_5_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_5_0);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleAlterTableAddColumnStatement"
    // PsiInternalMickeyLang.g:4624:1: entryRuleAlterTableAddColumnStatement returns [Boolean current=false] : iv_ruleAlterTableAddColumnStatement= ruleAlterTableAddColumnStatement EOF ;
    public final Boolean entryRuleAlterTableAddColumnStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleAlterTableAddColumnStatement = null;


        try {
            // PsiInternalMickeyLang.g:4624:70: (iv_ruleAlterTableAddColumnStatement= ruleAlterTableAddColumnStatement EOF )
            // PsiInternalMickeyLang.g:4625:2: iv_ruleAlterTableAddColumnStatement= ruleAlterTableAddColumnStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getAlterTableAddColumnStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAlterTableAddColumnStatement=ruleAlterTableAddColumnStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAlterTableAddColumnStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleAlterTableAddColumnStatement"
    // PsiInternalMickeyLang.g:4631:1: ruleAlterTableAddColumnStatement returns [Boolean current=false] : (otherlv_0= 'alter' otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'add column' ( (lv_columnDef_4_0= ruleColumnDef ) ) ) ;
    public final Boolean ruleAlterTableAddColumnStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Boolean lv_columnDef_4_0 = null;


        try {
            // PsiInternalMickeyLang.g:4632:1: ( (otherlv_0= 'alter' otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'add column' ( (lv_columnDef_4_0= ruleColumnDef ) ) ) )
            // PsiInternalMickeyLang.g:4633:2: (otherlv_0= 'alter' otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'add column' ( (lv_columnDef_4_0= ruleColumnDef ) ) )
            {
            // PsiInternalMickeyLang.g:4633:2: (otherlv_0= 'alter' otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'add column' ( (lv_columnDef_4_0= ruleColumnDef ) ) )
            // PsiInternalMickeyLang.g:4634:3: otherlv_0= 'alter' otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'add column' ( (lv_columnDef_4_0= ruleColumnDef ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableAddColumnStatement_AlterKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,107,FOLLOW_66); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableAddColumnStatement_TableKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,95,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:4648:3: ( (otherlv_2= RULE_ID ) )
            // PsiInternalMickeyLang.g:4649:4: (otherlv_2= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4649:4: (otherlv_2= RULE_ID )
            // PsiInternalMickeyLang.g:4650:5: otherlv_2= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getAlterTableAddColumnStatement_TableTableDefinitionCrossReference_2_0ElementType());
              				
            }
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_81); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_2);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getAlterTableAddColumnStatement_AddColumnKeyword_3ElementType());
              		
            }
            otherlv_3=(Token)match(input,109,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:4672:3: ( (lv_columnDef_4_0= ruleColumnDef ) )
            // PsiInternalMickeyLang.g:4673:4: (lv_columnDef_4_0= ruleColumnDef )
            {
            // PsiInternalMickeyLang.g:4673:4: (lv_columnDef_4_0= ruleColumnDef )
            // PsiInternalMickeyLang.g:4674:5: lv_columnDef_4_0= ruleColumnDef
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getAlterTableAddColumnStatement_ColumnDefColumnDefParserRuleCall_4_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_columnDef_4_0=ruleColumnDef();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleDropTableStatement"
    // PsiInternalMickeyLang.g:4691:1: entryRuleDropTableStatement returns [Boolean current=false] : iv_ruleDropTableStatement= ruleDropTableStatement EOF ;
    public final Boolean entryRuleDropTableStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDropTableStatement = null;


        try {
            // PsiInternalMickeyLang.g:4691:60: (iv_ruleDropTableStatement= ruleDropTableStatement EOF )
            // PsiInternalMickeyLang.g:4692:2: iv_ruleDropTableStatement= ruleDropTableStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDropTableStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDropTableStatement=ruleDropTableStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDropTableStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDropTableStatement"
    // PsiInternalMickeyLang.g:4698:1: ruleDropTableStatement returns [Boolean current=false] : (otherlv_0= 'drop' otherlv_1= 'table' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) ;
    public final Boolean ruleDropTableStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_ifExists_2_0=null;
        Token otherlv_3=null;

        try {
            // PsiInternalMickeyLang.g:4699:1: ( (otherlv_0= 'drop' otherlv_1= 'table' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:4700:2: (otherlv_0= 'drop' otherlv_1= 'table' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:4700:2: (otherlv_0= 'drop' otherlv_1= 'table' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:4701:3: otherlv_0= 'drop' otherlv_1= 'table' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropTableStatement_DropKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,110,FOLLOW_66); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropTableStatement_TableKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,95,FOLLOW_82); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:4715:3: ( (lv_ifExists_2_0= 'if exists' ) )?
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==111) ) {
                alt85=1;
            }
            switch (alt85) {
                case 1 :
                    // PsiInternalMickeyLang.g:4716:4: (lv_ifExists_2_0= 'if exists' )
                    {
                    // PsiInternalMickeyLang.g:4716:4: (lv_ifExists_2_0= 'if exists' )
                    // PsiInternalMickeyLang.g:4717:5: lv_ifExists_2_0= 'if exists'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getDropTableStatement_IfExistsIfExistsKeyword_2_0ElementType());
                      				
                    }
                    lv_ifExists_2_0=(Token)match(input,111,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_ifExists_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:4732:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:4733:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4733:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:4734:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getDropTableStatement_TableTableDefinitionCrossReference_3_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleDropTriggerStatement"
    // PsiInternalMickeyLang.g:4753:1: entryRuleDropTriggerStatement returns [Boolean current=false] : iv_ruleDropTriggerStatement= ruleDropTriggerStatement EOF ;
    public final Boolean entryRuleDropTriggerStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDropTriggerStatement = null;


        try {
            // PsiInternalMickeyLang.g:4753:62: (iv_ruleDropTriggerStatement= ruleDropTriggerStatement EOF )
            // PsiInternalMickeyLang.g:4754:2: iv_ruleDropTriggerStatement= ruleDropTriggerStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDropTriggerStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDropTriggerStatement=ruleDropTriggerStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDropTriggerStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDropTriggerStatement"
    // PsiInternalMickeyLang.g:4760:1: ruleDropTriggerStatement returns [Boolean current=false] : (otherlv_0= 'drop' otherlv_1= 'trigger' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) ;
    public final Boolean ruleDropTriggerStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_ifExists_2_0=null;
        Token otherlv_3=null;

        try {
            // PsiInternalMickeyLang.g:4761:1: ( (otherlv_0= 'drop' otherlv_1= 'trigger' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:4762:2: (otherlv_0= 'drop' otherlv_1= 'trigger' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:4762:2: (otherlv_0= 'drop' otherlv_1= 'trigger' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:4763:3: otherlv_0= 'drop' otherlv_1= 'trigger' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropTriggerStatement_DropKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,110,FOLLOW_71); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropTriggerStatement_TriggerKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,97,FOLLOW_82); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:4777:3: ( (lv_ifExists_2_0= 'if exists' ) )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==111) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // PsiInternalMickeyLang.g:4778:4: (lv_ifExists_2_0= 'if exists' )
                    {
                    // PsiInternalMickeyLang.g:4778:4: (lv_ifExists_2_0= 'if exists' )
                    // PsiInternalMickeyLang.g:4779:5: lv_ifExists_2_0= 'if exists'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getDropTriggerStatement_IfExistsIfExistsKeyword_2_0ElementType());
                      				
                    }
                    lv_ifExists_2_0=(Token)match(input,111,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_ifExists_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:4794:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:4795:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4795:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:4796:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getDropTriggerStatement_TriggerCreateTriggerStatementCrossReference_3_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleDropViewStatement"
    // PsiInternalMickeyLang.g:4815:1: entryRuleDropViewStatement returns [Boolean current=false] : iv_ruleDropViewStatement= ruleDropViewStatement EOF ;
    public final Boolean entryRuleDropViewStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDropViewStatement = null;


        try {
            // PsiInternalMickeyLang.g:4815:59: (iv_ruleDropViewStatement= ruleDropViewStatement EOF )
            // PsiInternalMickeyLang.g:4816:2: iv_ruleDropViewStatement= ruleDropViewStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDropViewStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDropViewStatement=ruleDropViewStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDropViewStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDropViewStatement"
    // PsiInternalMickeyLang.g:4822:1: ruleDropViewStatement returns [Boolean current=false] : (otherlv_0= 'drop' otherlv_1= 'view' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) ;
    public final Boolean ruleDropViewStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_ifExists_2_0=null;
        Token otherlv_3=null;

        try {
            // PsiInternalMickeyLang.g:4823:1: ( (otherlv_0= 'drop' otherlv_1= 'view' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:4824:2: (otherlv_0= 'drop' otherlv_1= 'view' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:4824:2: (otherlv_0= 'drop' otherlv_1= 'view' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:4825:3: otherlv_0= 'drop' otherlv_1= 'view' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropViewStatement_DropKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,110,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropViewStatement_ViewKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,96,FOLLOW_82); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:4839:3: ( (lv_ifExists_2_0= 'if exists' ) )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==111) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // PsiInternalMickeyLang.g:4840:4: (lv_ifExists_2_0= 'if exists' )
                    {
                    // PsiInternalMickeyLang.g:4840:4: (lv_ifExists_2_0= 'if exists' )
                    // PsiInternalMickeyLang.g:4841:5: lv_ifExists_2_0= 'if exists'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getDropViewStatement_IfExistsIfExistsKeyword_2_0ElementType());
                      				
                    }
                    lv_ifExists_2_0=(Token)match(input,111,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_ifExists_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:4856:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:4857:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4857:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:4858:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getDropViewStatement_ViewCreateViewStatementCrossReference_3_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleCreateIndexStatement"
    // PsiInternalMickeyLang.g:4877:1: entryRuleCreateIndexStatement returns [Boolean current=false] : iv_ruleCreateIndexStatement= ruleCreateIndexStatement EOF ;
    public final Boolean entryRuleCreateIndexStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCreateIndexStatement = null;


        try {
            // PsiInternalMickeyLang.g:4877:62: (iv_ruleCreateIndexStatement= ruleCreateIndexStatement EOF )
            // PsiInternalMickeyLang.g:4878:2: iv_ruleCreateIndexStatement= ruleCreateIndexStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCreateIndexStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCreateIndexStatement=ruleCreateIndexStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCreateIndexStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCreateIndexStatement"
    // PsiInternalMickeyLang.g:4884:1: ruleCreateIndexStatement returns [Boolean current=false] : (otherlv_0= 'create' ( (lv_unique_1_0= 'unique' ) )? otherlv_2= 'index' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '(' ( (lv_columns_7_0= ruleIndexedColumn ) ) (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )* otherlv_10= ')' ) ;
    public final Boolean ruleCreateIndexStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_unique_1_0=null;
        Token otherlv_2=null;
        Token lv_name_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Boolean lv_columns_7_0 = null;

        Boolean lv_columns_9_0 = null;


        try {
            // PsiInternalMickeyLang.g:4885:1: ( (otherlv_0= 'create' ( (lv_unique_1_0= 'unique' ) )? otherlv_2= 'index' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '(' ( (lv_columns_7_0= ruleIndexedColumn ) ) (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )* otherlv_10= ')' ) )
            // PsiInternalMickeyLang.g:4886:2: (otherlv_0= 'create' ( (lv_unique_1_0= 'unique' ) )? otherlv_2= 'index' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '(' ( (lv_columns_7_0= ruleIndexedColumn ) ) (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )* otherlv_10= ')' )
            {
            // PsiInternalMickeyLang.g:4886:2: (otherlv_0= 'create' ( (lv_unique_1_0= 'unique' ) )? otherlv_2= 'index' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '(' ( (lv_columns_7_0= ruleIndexedColumn ) ) (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )* otherlv_10= ')' )
            // PsiInternalMickeyLang.g:4887:3: otherlv_0= 'create' ( (lv_unique_1_0= 'unique' ) )? otherlv_2= 'index' ( (lv_name_3_0= RULE_ID ) ) otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '(' ( (lv_columns_7_0= ruleIndexedColumn ) ) (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )* otherlv_10= ')'
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateIndexStatement_CreateKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,93,FOLLOW_83); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:4894:3: ( (lv_unique_1_0= 'unique' ) )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==23) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // PsiInternalMickeyLang.g:4895:4: (lv_unique_1_0= 'unique' )
                    {
                    // PsiInternalMickeyLang.g:4895:4: (lv_unique_1_0= 'unique' )
                    // PsiInternalMickeyLang.g:4896:5: lv_unique_1_0= 'unique'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getCreateIndexStatement_UniqueUniqueKeyword_1_0ElementType());
                      				
                    }
                    lv_unique_1_0=(Token)match(input,23,FOLLOW_84); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_unique_1_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateIndexStatement_IndexKeyword_2ElementType());
              		
            }
            otherlv_2=(Token)match(input,112,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            // PsiInternalMickeyLang.g:4918:3: ( (lv_name_3_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:4919:4: (lv_name_3_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4919:4: (lv_name_3_0= RULE_ID )
            // PsiInternalMickeyLang.g:4920:5: lv_name_3_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateIndexStatement_NameIDTerminalRuleCall_3_0ElementType());
              				
            }
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_14); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_3_0);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateIndexStatement_OnKeyword_4ElementType());
              		
            }
            otherlv_4=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_4);
              		
            }
            // PsiInternalMickeyLang.g:4942:3: ( (otherlv_5= RULE_ID ) )
            // PsiInternalMickeyLang.g:4943:4: (otherlv_5= RULE_ID )
            {
            // PsiInternalMickeyLang.g:4943:4: (otherlv_5= RULE_ID )
            // PsiInternalMickeyLang.g:4944:5: otherlv_5= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getCreateIndexStatement_TableTableDefinitionCrossReference_5_0ElementType());
              				
            }
            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_5);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateIndexStatement_LeftParenthesisKeyword_6ElementType());
              		
            }
            otherlv_6=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_6);
              		
            }
            // PsiInternalMickeyLang.g:4966:3: ( (lv_columns_7_0= ruleIndexedColumn ) )
            // PsiInternalMickeyLang.g:4967:4: (lv_columns_7_0= ruleIndexedColumn )
            {
            // PsiInternalMickeyLang.g:4967:4: (lv_columns_7_0= ruleIndexedColumn )
            // PsiInternalMickeyLang.g:4968:5: lv_columns_7_0= ruleIndexedColumn
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCreateIndexStatement_ColumnsIndexedColumnParserRuleCall_7_0ElementType());
              				
            }
            pushFollow(FOLLOW_7);
            lv_columns_7_0=ruleIndexedColumn();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:4981:3: (otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) ) )*
            loop89:
            do {
                int alt89=2;
                int LA89_0 = input.LA(1);

                if ( (LA89_0==15) ) {
                    alt89=1;
                }


                switch (alt89) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:4982:4: otherlv_8= ',' ( (lv_columns_9_0= ruleIndexedColumn ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getCreateIndexStatement_CommaKeyword_8_0ElementType());
            	      			
            	    }
            	    otherlv_8=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_8);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:4989:4: ( (lv_columns_9_0= ruleIndexedColumn ) )
            	    // PsiInternalMickeyLang.g:4990:5: (lv_columns_9_0= ruleIndexedColumn )
            	    {
            	    // PsiInternalMickeyLang.g:4990:5: (lv_columns_9_0= ruleIndexedColumn )
            	    // PsiInternalMickeyLang.g:4991:6: lv_columns_9_0= ruleIndexedColumn
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getCreateIndexStatement_ColumnsIndexedColumnParserRuleCall_8_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_columns_9_0=ruleIndexedColumn();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCreateIndexStatement_RightParenthesisKeyword_9ElementType());
              		
            }
            otherlv_10=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_10);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleDropIndexStatement"
    // PsiInternalMickeyLang.g:5016:1: entryRuleDropIndexStatement returns [Boolean current=false] : iv_ruleDropIndexStatement= ruleDropIndexStatement EOF ;
    public final Boolean entryRuleDropIndexStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDropIndexStatement = null;


        try {
            // PsiInternalMickeyLang.g:5016:60: (iv_ruleDropIndexStatement= ruleDropIndexStatement EOF )
            // PsiInternalMickeyLang.g:5017:2: iv_ruleDropIndexStatement= ruleDropIndexStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDropIndexStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDropIndexStatement=ruleDropIndexStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDropIndexStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDropIndexStatement"
    // PsiInternalMickeyLang.g:5023:1: ruleDropIndexStatement returns [Boolean current=false] : (otherlv_0= 'drop' otherlv_1= 'index' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) ;
    public final Boolean ruleDropIndexStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_ifExists_2_0=null;
        Token otherlv_3=null;

        try {
            // PsiInternalMickeyLang.g:5024:1: ( (otherlv_0= 'drop' otherlv_1= 'index' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) ) )
            // PsiInternalMickeyLang.g:5025:2: (otherlv_0= 'drop' otherlv_1= 'index' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            {
            // PsiInternalMickeyLang.g:5025:2: (otherlv_0= 'drop' otherlv_1= 'index' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) ) )
            // PsiInternalMickeyLang.g:5026:3: otherlv_0= 'drop' otherlv_1= 'index' ( (lv_ifExists_2_0= 'if exists' ) )? ( (otherlv_3= RULE_ID ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropIndexStatement_DropKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,110,FOLLOW_84); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDropIndexStatement_IndexKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,112,FOLLOW_82); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:5040:3: ( (lv_ifExists_2_0= 'if exists' ) )?
            int alt90=2;
            int LA90_0 = input.LA(1);

            if ( (LA90_0==111) ) {
                alt90=1;
            }
            switch (alt90) {
                case 1 :
                    // PsiInternalMickeyLang.g:5041:4: (lv_ifExists_2_0= 'if exists' )
                    {
                    // PsiInternalMickeyLang.g:5041:4: (lv_ifExists_2_0= 'if exists' )
                    // PsiInternalMickeyLang.g:5042:5: lv_ifExists_2_0= 'if exists'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getDropIndexStatement_IfExistsIfExistsKeyword_2_0ElementType());
                      				
                    }
                    lv_ifExists_2_0=(Token)match(input,111,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(lv_ifExists_2_0);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (!current) {
                      						associateWithSemanticElement();
                      						current = true;
                      					}
                      				
                    }

                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:5057:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:5058:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:5058:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:5059:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getDropIndexStatement_IndexCreateIndexStatementCrossReference_3_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleColumnDef"
    // PsiInternalMickeyLang.g:5078:1: entryRuleColumnDef returns [Boolean current=false] : iv_ruleColumnDef= ruleColumnDef EOF ;
    public final Boolean entryRuleColumnDef() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleColumnDef = null;


        try {
            // PsiInternalMickeyLang.g:5078:51: (iv_ruleColumnDef= ruleColumnDef EOF )
            // PsiInternalMickeyLang.g:5079:2: iv_ruleColumnDef= ruleColumnDef EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getColumnDefElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleColumnDef=ruleColumnDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleColumnDef; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleColumnDef"
    // PsiInternalMickeyLang.g:5085:1: ruleColumnDef returns [Boolean current=false] : ( () ( (lv_name_1_0= RULE_ID ) ) ( (lv_type_2_0= ruleColumnType ) ) ( (lv_constraints_3_0= ruleColumnConstraint ) )* ) ;
    public final Boolean ruleColumnDef() throws RecognitionException {
        Boolean current = false;

        Token lv_name_1_0=null;
        Boolean lv_type_2_0 = null;

        Boolean lv_constraints_3_0 = null;


        try {
            // PsiInternalMickeyLang.g:5086:1: ( ( () ( (lv_name_1_0= RULE_ID ) ) ( (lv_type_2_0= ruleColumnType ) ) ( (lv_constraints_3_0= ruleColumnConstraint ) )* ) )
            // PsiInternalMickeyLang.g:5087:2: ( () ( (lv_name_1_0= RULE_ID ) ) ( (lv_type_2_0= ruleColumnType ) ) ( (lv_constraints_3_0= ruleColumnConstraint ) )* )
            {
            // PsiInternalMickeyLang.g:5087:2: ( () ( (lv_name_1_0= RULE_ID ) ) ( (lv_type_2_0= ruleColumnType ) ) ( (lv_constraints_3_0= ruleColumnConstraint ) )* )
            // PsiInternalMickeyLang.g:5088:3: () ( (lv_name_1_0= RULE_ID ) ) ( (lv_type_2_0= ruleColumnType ) ) ( (lv_constraints_3_0= ruleColumnConstraint ) )*
            {
            // PsiInternalMickeyLang.g:5088:3: ()
            // PsiInternalMickeyLang.g:5089:4: 
            {
            if ( state.backtracking==0 ) {

              				precedeComposite(elementTypeProvider.getColumnDef_ColumnDefAction_0ElementType());
              				doneComposite();
              				associateWithSemanticElement();
              			
            }

            }

            // PsiInternalMickeyLang.g:5095:3: ( (lv_name_1_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:5096:4: (lv_name_1_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:5096:4: (lv_name_1_0= RULE_ID )
            // PsiInternalMickeyLang.g:5097:5: lv_name_1_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getColumnDef_NameIDTerminalRuleCall_1_0ElementType());
              				
            }
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					doneLeaf(lv_name_1_0);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:5112:3: ( (lv_type_2_0= ruleColumnType ) )
            // PsiInternalMickeyLang.g:5113:4: (lv_type_2_0= ruleColumnType )
            {
            // PsiInternalMickeyLang.g:5113:4: (lv_type_2_0= ruleColumnType )
            // PsiInternalMickeyLang.g:5114:5: lv_type_2_0= ruleColumnType
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getColumnDef_TypeColumnTypeEnumRuleCall_2_0ElementType());
              				
            }
            pushFollow(FOLLOW_85);
            lv_type_2_0=ruleColumnType();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:5127:3: ( (lv_constraints_3_0= ruleColumnConstraint ) )*
            loop91:
            do {
                int alt91=2;
                int LA91_0 = input.LA(1);

                if ( (LA91_0==23||LA91_0==57||LA91_0==113||(LA91_0>=115 && LA91_0<=116)) ) {
                    alt91=1;
                }


                switch (alt91) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:5128:4: (lv_constraints_3_0= ruleColumnConstraint )
            	    {
            	    // PsiInternalMickeyLang.g:5128:4: (lv_constraints_3_0= ruleColumnConstraint )
            	    // PsiInternalMickeyLang.g:5129:5: lv_constraints_3_0= ruleColumnConstraint
            	    {
            	    if ( state.backtracking==0 ) {

            	      					markComposite(elementTypeProvider.getColumnDef_ConstraintsColumnConstraintParserRuleCall_3_0ElementType());
            	      				
            	    }
            	    pushFollow(FOLLOW_85);
            	    lv_constraints_3_0=ruleColumnConstraint();

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

            	      					doneComposite();
            	      					if(!current) {
            	      						associateWithSemanticElement();
            	      						current = true;
            	      					}
            	      				
            	    }

            	    }


            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "entryRuleColumnConstraint"
    // PsiInternalMickeyLang.g:5146:1: entryRuleColumnConstraint returns [Boolean current=false] : iv_ruleColumnConstraint= ruleColumnConstraint EOF ;
    public final Boolean entryRuleColumnConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleColumnConstraint = null;


        try {
            // PsiInternalMickeyLang.g:5146:58: (iv_ruleColumnConstraint= ruleColumnConstraint EOF )
            // PsiInternalMickeyLang.g:5147:2: iv_ruleColumnConstraint= ruleColumnConstraint EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getColumnConstraintElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleColumnConstraint=ruleColumnConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleColumnConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleColumnConstraint"
    // PsiInternalMickeyLang.g:5153:1: ruleColumnConstraint returns [Boolean current=false] : ( ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? ) | ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? ) | ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? ) | ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) ) | ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' ) ) ;
    public final Boolean ruleColumnConstraint() throws RecognitionException {
        Boolean current = false;

        Token otherlv_1=null;
        Token lv_asc_2_0=null;
        Token lv_desc_3_0=null;
        Token lv_autoincrement_4_0=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        Token otherlv_12=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        Boolean lv_conflictClause_7_0 = null;

        Boolean lv_conflictClause_10_0 = null;

        Boolean lv_defaultValue_13_0 = null;

        Boolean lv_expression_17_0 = null;


        try {
            // PsiInternalMickeyLang.g:5154:1: ( ( ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? ) | ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? ) | ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? ) | ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) ) | ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' ) ) )
            // PsiInternalMickeyLang.g:5155:2: ( ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? ) | ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? ) | ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? ) | ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) ) | ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' ) )
            {
            // PsiInternalMickeyLang.g:5155:2: ( ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? ) | ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? ) | ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? ) | ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) ) | ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' ) )
            int alt96=5;
            switch ( input.LA(1) ) {
            case 113:
                {
                alt96=1;
                }
                break;
            case 57:
                {
                alt96=2;
                }
                break;
            case 23:
                {
                alt96=3;
                }
                break;
            case 115:
                {
                alt96=4;
                }
                break;
            case 116:
                {
                alt96=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 96, 0, input);

                throw nvae;
            }

            switch (alt96) {
                case 1 :
                    // PsiInternalMickeyLang.g:5156:3: ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? )
                    {
                    // PsiInternalMickeyLang.g:5156:3: ( () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )? )
                    // PsiInternalMickeyLang.g:5157:4: () otherlv_1= 'primary key' ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )? ( (lv_autoincrement_4_0= 'autoincrement' ) )?
                    {
                    // PsiInternalMickeyLang.g:5157:4: ()
                    // PsiInternalMickeyLang.g:5158:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getColumnConstraint_PrimaryKeyColumnConstraintAction_0_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_PrimaryKeyKeyword_0_1ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,113,FOLLOW_86); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }
                    // PsiInternalMickeyLang.g:5171:4: ( ( (lv_asc_2_0= 'asc' ) ) | ( (lv_desc_3_0= 'desc' ) ) )?
                    int alt92=3;
                    int LA92_0 = input.LA(1);

                    if ( (LA92_0==81) ) {
                        alt92=1;
                    }
                    else if ( (LA92_0==82) ) {
                        alt92=2;
                    }
                    switch (alt92) {
                        case 1 :
                            // PsiInternalMickeyLang.g:5172:5: ( (lv_asc_2_0= 'asc' ) )
                            {
                            // PsiInternalMickeyLang.g:5172:5: ( (lv_asc_2_0= 'asc' ) )
                            // PsiInternalMickeyLang.g:5173:6: (lv_asc_2_0= 'asc' )
                            {
                            // PsiInternalMickeyLang.g:5173:6: (lv_asc_2_0= 'asc' )
                            // PsiInternalMickeyLang.g:5174:7: lv_asc_2_0= 'asc'
                            {
                            if ( state.backtracking==0 ) {

                              							markLeaf(elementTypeProvider.getColumnConstraint_AscAscKeyword_0_2_0_0ElementType());
                              						
                            }
                            lv_asc_2_0=(Token)match(input,81,FOLLOW_87); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							doneLeaf(lv_asc_2_0);
                              						
                            }
                            if ( state.backtracking==0 ) {

                              							if (!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:5190:5: ( (lv_desc_3_0= 'desc' ) )
                            {
                            // PsiInternalMickeyLang.g:5190:5: ( (lv_desc_3_0= 'desc' ) )
                            // PsiInternalMickeyLang.g:5191:6: (lv_desc_3_0= 'desc' )
                            {
                            // PsiInternalMickeyLang.g:5191:6: (lv_desc_3_0= 'desc' )
                            // PsiInternalMickeyLang.g:5192:7: lv_desc_3_0= 'desc'
                            {
                            if ( state.backtracking==0 ) {

                              							markLeaf(elementTypeProvider.getColumnConstraint_DescDescKeyword_0_2_1_0ElementType());
                              						
                            }
                            lv_desc_3_0=(Token)match(input,82,FOLLOW_87); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							doneLeaf(lv_desc_3_0);
                              						
                            }
                            if ( state.backtracking==0 ) {

                              							if (!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;

                    }

                    // PsiInternalMickeyLang.g:5208:4: ( (lv_autoincrement_4_0= 'autoincrement' ) )?
                    int alt93=2;
                    int LA93_0 = input.LA(1);

                    if ( (LA93_0==114) ) {
                        alt93=1;
                    }
                    switch (alt93) {
                        case 1 :
                            // PsiInternalMickeyLang.g:5209:5: (lv_autoincrement_4_0= 'autoincrement' )
                            {
                            // PsiInternalMickeyLang.g:5209:5: (lv_autoincrement_4_0= 'autoincrement' )
                            // PsiInternalMickeyLang.g:5210:6: lv_autoincrement_4_0= 'autoincrement'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getColumnConstraint_AutoincrementAutoincrementKeyword_0_3_0ElementType());
                              					
                            }
                            lv_autoincrement_4_0=(Token)match(input,114,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(lv_autoincrement_4_0);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						if (!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:5227:3: ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? )
                    {
                    // PsiInternalMickeyLang.g:5227:3: ( () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )? )
                    // PsiInternalMickeyLang.g:5228:4: () otherlv_6= 'not null' ( (lv_conflictClause_7_0= ruleConflictClause ) )?
                    {
                    // PsiInternalMickeyLang.g:5228:4: ()
                    // PsiInternalMickeyLang.g:5229:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getColumnConstraint_NotNullConstraintAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_NotNullKeyword_1_1ElementType());
                      			
                    }
                    otherlv_6=(Token)match(input,57,FOLLOW_88); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_6);
                      			
                    }
                    // PsiInternalMickeyLang.g:5242:4: ( (lv_conflictClause_7_0= ruleConflictClause ) )?
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( (LA94_0==22) ) {
                        alt94=1;
                    }
                    switch (alt94) {
                        case 1 :
                            // PsiInternalMickeyLang.g:5243:5: (lv_conflictClause_7_0= ruleConflictClause )
                            {
                            // PsiInternalMickeyLang.g:5243:5: (lv_conflictClause_7_0= ruleConflictClause )
                            // PsiInternalMickeyLang.g:5244:6: lv_conflictClause_7_0= ruleConflictClause
                            {
                            if ( state.backtracking==0 ) {

                              						markComposite(elementTypeProvider.getColumnConstraint_ConflictClauseConflictClauseParserRuleCall_1_2_0ElementType());
                              					
                            }
                            pushFollow(FOLLOW_2);
                            lv_conflictClause_7_0=ruleConflictClause();

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

                              						doneComposite();
                              						if(!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:5259:3: ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? )
                    {
                    // PsiInternalMickeyLang.g:5259:3: ( () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )? )
                    // PsiInternalMickeyLang.g:5260:4: () otherlv_9= 'unique' ( (lv_conflictClause_10_0= ruleConflictClause ) )?
                    {
                    // PsiInternalMickeyLang.g:5260:4: ()
                    // PsiInternalMickeyLang.g:5261:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getColumnConstraint_UniqueConstraintAction_2_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_UniqueKeyword_2_1ElementType());
                      			
                    }
                    otherlv_9=(Token)match(input,23,FOLLOW_88); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_9);
                      			
                    }
                    // PsiInternalMickeyLang.g:5274:4: ( (lv_conflictClause_10_0= ruleConflictClause ) )?
                    int alt95=2;
                    int LA95_0 = input.LA(1);

                    if ( (LA95_0==22) ) {
                        alt95=1;
                    }
                    switch (alt95) {
                        case 1 :
                            // PsiInternalMickeyLang.g:5275:5: (lv_conflictClause_10_0= ruleConflictClause )
                            {
                            // PsiInternalMickeyLang.g:5275:5: (lv_conflictClause_10_0= ruleConflictClause )
                            // PsiInternalMickeyLang.g:5276:6: lv_conflictClause_10_0= ruleConflictClause
                            {
                            if ( state.backtracking==0 ) {

                              						markComposite(elementTypeProvider.getColumnConstraint_ConflictClauseConflictClauseParserRuleCall_2_2_0ElementType());
                              					
                            }
                            pushFollow(FOLLOW_2);
                            lv_conflictClause_10_0=ruleConflictClause();

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

                              						doneComposite();
                              						if(!current) {
                              							associateWithSemanticElement();
                              							current = true;
                              						}
                              					
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:5291:3: ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) )
                    {
                    // PsiInternalMickeyLang.g:5291:3: ( () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) ) )
                    // PsiInternalMickeyLang.g:5292:4: () otherlv_12= 'default' ( (lv_defaultValue_13_0= ruleDefaultValue ) )
                    {
                    // PsiInternalMickeyLang.g:5292:4: ()
                    // PsiInternalMickeyLang.g:5293:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getColumnConstraint_DefaultConstraintAction_3_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_DefaultKeyword_3_1ElementType());
                      			
                    }
                    otherlv_12=(Token)match(input,115,FOLLOW_89); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_12);
                      			
                    }
                    // PsiInternalMickeyLang.g:5306:4: ( (lv_defaultValue_13_0= ruleDefaultValue ) )
                    // PsiInternalMickeyLang.g:5307:5: (lv_defaultValue_13_0= ruleDefaultValue )
                    {
                    // PsiInternalMickeyLang.g:5307:5: (lv_defaultValue_13_0= ruleDefaultValue )
                    // PsiInternalMickeyLang.g:5308:6: lv_defaultValue_13_0= ruleDefaultValue
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getColumnConstraint_DefaultValueDefaultValueParserRuleCall_3_2_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_defaultValue_13_0=ruleDefaultValue();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:5323:3: ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' )
                    {
                    // PsiInternalMickeyLang.g:5323:3: ( () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')' )
                    // PsiInternalMickeyLang.g:5324:4: () otherlv_15= 'check' otherlv_16= '(' ( (lv_expression_17_0= ruleSqlExpression ) ) otherlv_18= ')'
                    {
                    // PsiInternalMickeyLang.g:5324:4: ()
                    // PsiInternalMickeyLang.g:5325:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getColumnConstraint_CheckConstraintAction_4_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_CheckKeyword_4_1ElementType());
                      			
                    }
                    otherlv_15=(Token)match(input,116,FOLLOW_5); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_15);
                      			
                    }
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_LeftParenthesisKeyword_4_2ElementType());
                      			
                    }
                    otherlv_16=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_16);
                      			
                    }
                    // PsiInternalMickeyLang.g:5345:4: ( (lv_expression_17_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:5346:5: (lv_expression_17_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:5346:5: (lv_expression_17_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:5347:6: lv_expression_17_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getColumnConstraint_ExpressionSqlExpressionParserRuleCall_4_3_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_38);
                    lv_expression_17_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnConstraint_RightParenthesisKeyword_4_4ElementType());
                      			
                    }
                    otherlv_18=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_18);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleTableConstraint"
    // PsiInternalMickeyLang.g:5372:1: entryRuleTableConstraint returns [Boolean current=false] : iv_ruleTableConstraint= ruleTableConstraint EOF ;
    public final Boolean entryRuleTableConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleTableConstraint = null;


        try {
            // PsiInternalMickeyLang.g:5372:57: (iv_ruleTableConstraint= ruleTableConstraint EOF )
            // PsiInternalMickeyLang.g:5373:2: iv_ruleTableConstraint= ruleTableConstraint EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getTableConstraintElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTableConstraint=ruleTableConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTableConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleTableConstraint"
    // PsiInternalMickeyLang.g:5379:1: ruleTableConstraint returns [Boolean current=false] : (this_UniqueTableConstraint_0= ruleUniqueTableConstraint | this_PrimaryConstraint_1= rulePrimaryConstraint | this_CheckTableConstraint_2= ruleCheckTableConstraint ) ;
    public final Boolean ruleTableConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean this_UniqueTableConstraint_0 = null;

        Boolean this_PrimaryConstraint_1 = null;

        Boolean this_CheckTableConstraint_2 = null;


        try {
            // PsiInternalMickeyLang.g:5380:1: ( (this_UniqueTableConstraint_0= ruleUniqueTableConstraint | this_PrimaryConstraint_1= rulePrimaryConstraint | this_CheckTableConstraint_2= ruleCheckTableConstraint ) )
            // PsiInternalMickeyLang.g:5381:2: (this_UniqueTableConstraint_0= ruleUniqueTableConstraint | this_PrimaryConstraint_1= rulePrimaryConstraint | this_CheckTableConstraint_2= ruleCheckTableConstraint )
            {
            // PsiInternalMickeyLang.g:5381:2: (this_UniqueTableConstraint_0= ruleUniqueTableConstraint | this_PrimaryConstraint_1= rulePrimaryConstraint | this_CheckTableConstraint_2= ruleCheckTableConstraint )
            int alt97=3;
            switch ( input.LA(1) ) {
            case 117:
                {
                int LA97_1 = input.LA(2);

                if ( (LA97_1==RULE_ID) ) {
                    switch ( input.LA(3) ) {
                    case 116:
                        {
                        alt97=3;
                        }
                        break;
                    case 113:
                        {
                        alt97=2;
                        }
                        break;
                    case 23:
                        {
                        alt97=1;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 97, 5, input);

                        throw nvae;
                    }

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

                    throw nvae;
                }
                }
                break;
            case 23:
                {
                alt97=1;
                }
                break;
            case 113:
                {
                alt97=2;
                }
                break;
            case 116:
                {
                alt97=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 97, 0, input);

                throw nvae;
            }

            switch (alt97) {
                case 1 :
                    // PsiInternalMickeyLang.g:5382:3: this_UniqueTableConstraint_0= ruleUniqueTableConstraint
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getTableConstraint_UniqueTableConstraintParserRuleCall_0ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_UniqueTableConstraint_0=ruleUniqueTableConstraint();

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

                      			current = this_UniqueTableConstraint_0;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:5391:3: this_PrimaryConstraint_1= rulePrimaryConstraint
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getTableConstraint_PrimaryConstraintParserRuleCall_1ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_PrimaryConstraint_1=rulePrimaryConstraint();

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

                      			current = this_PrimaryConstraint_1;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:5400:3: this_CheckTableConstraint_2= ruleCheckTableConstraint
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getTableConstraint_CheckTableConstraintParserRuleCall_2ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_CheckTableConstraint_2=ruleCheckTableConstraint();

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

                      			current = this_CheckTableConstraint_2;
                      			doneComposite();
                      		
                    }

                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleUniqueTableConstraint"
    // PsiInternalMickeyLang.g:5412:1: entryRuleUniqueTableConstraint returns [Boolean current=false] : iv_ruleUniqueTableConstraint= ruleUniqueTableConstraint EOF ;
    public final Boolean entryRuleUniqueTableConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleUniqueTableConstraint = null;


        try {
            // PsiInternalMickeyLang.g:5412:63: (iv_ruleUniqueTableConstraint= ruleUniqueTableConstraint EOF )
            // PsiInternalMickeyLang.g:5413:2: iv_ruleUniqueTableConstraint= ruleUniqueTableConstraint EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getUniqueTableConstraintElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUniqueTableConstraint=ruleUniqueTableConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUniqueTableConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleUniqueTableConstraint"
    // PsiInternalMickeyLang.g:5419:1: ruleUniqueTableConstraint returns [Boolean current=false] : ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'unique' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) ) ;
    public final Boolean ruleUniqueTableConstraint() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Boolean lv_columns_4_0 = null;

        Boolean lv_columns_6_0 = null;

        Boolean lv_conflictClause_8_0 = null;


        try {
            // PsiInternalMickeyLang.g:5420:1: ( ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'unique' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) ) )
            // PsiInternalMickeyLang.g:5421:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'unique' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) )
            {
            // PsiInternalMickeyLang.g:5421:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'unique' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) )
            // PsiInternalMickeyLang.g:5422:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'unique' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) )
            {
            // PsiInternalMickeyLang.g:5422:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )?
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==117) ) {
                alt98=1;
            }
            switch (alt98) {
                case 1 :
                    // PsiInternalMickeyLang.g:5423:4: otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getUniqueTableConstraint_ConstraintKeyword_0_0ElementType());
                      			
                    }
                    otherlv_0=(Token)match(input,117,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_0);
                      			
                    }
                    // PsiInternalMickeyLang.g:5430:4: ( (lv_name_1_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:5431:5: (lv_name_1_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:5431:5: (lv_name_1_0= RULE_ID )
                    // PsiInternalMickeyLang.g:5432:6: lv_name_1_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getUniqueTableConstraint_NameIDTerminalRuleCall_0_1_0ElementType());
                      					
                    }
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_90); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_1_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUniqueTableConstraint_UniqueKeyword_1ElementType());
              		
            }
            otherlv_2=(Token)match(input,23,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUniqueTableConstraint_LeftParenthesisKeyword_2ElementType());
              		
            }
            otherlv_3=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:5462:3: ( (lv_columns_4_0= ruleIndexedColumn ) )
            // PsiInternalMickeyLang.g:5463:4: (lv_columns_4_0= ruleIndexedColumn )
            {
            // PsiInternalMickeyLang.g:5463:4: (lv_columns_4_0= ruleIndexedColumn )
            // PsiInternalMickeyLang.g:5464:5: lv_columns_4_0= ruleIndexedColumn
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getUniqueTableConstraint_ColumnsIndexedColumnParserRuleCall_3_0ElementType());
              				
            }
            pushFollow(FOLLOW_7);
            lv_columns_4_0=ruleIndexedColumn();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:5477:3: (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )*
            loop99:
            do {
                int alt99=2;
                int LA99_0 = input.LA(1);

                if ( (LA99_0==15) ) {
                    alt99=1;
                }


                switch (alt99) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:5478:4: otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getUniqueTableConstraint_CommaKeyword_4_0ElementType());
            	      			
            	    }
            	    otherlv_5=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_5);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:5485:4: ( (lv_columns_6_0= ruleIndexedColumn ) )
            	    // PsiInternalMickeyLang.g:5486:5: (lv_columns_6_0= ruleIndexedColumn )
            	    {
            	    // PsiInternalMickeyLang.g:5486:5: (lv_columns_6_0= ruleIndexedColumn )
            	    // PsiInternalMickeyLang.g:5487:6: lv_columns_6_0= ruleIndexedColumn
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getUniqueTableConstraint_ColumnsIndexedColumnParserRuleCall_4_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_columns_6_0=ruleIndexedColumn();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUniqueTableConstraint_RightParenthesisKeyword_5ElementType());
              		
            }
            otherlv_7=(Token)match(input,16,FOLLOW_14); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_7);
              		
            }
            // PsiInternalMickeyLang.g:5508:3: ( (lv_conflictClause_8_0= ruleConflictClause ) )
            // PsiInternalMickeyLang.g:5509:4: (lv_conflictClause_8_0= ruleConflictClause )
            {
            // PsiInternalMickeyLang.g:5509:4: (lv_conflictClause_8_0= ruleConflictClause )
            // PsiInternalMickeyLang.g:5510:5: lv_conflictClause_8_0= ruleConflictClause
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getUniqueTableConstraint_ConflictClauseConflictClauseParserRuleCall_6_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_conflictClause_8_0=ruleConflictClause();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRulePrimaryConstraint"
    // PsiInternalMickeyLang.g:5527:1: entryRulePrimaryConstraint returns [Boolean current=false] : iv_rulePrimaryConstraint= rulePrimaryConstraint EOF ;
    public final Boolean entryRulePrimaryConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean iv_rulePrimaryConstraint = null;


        try {
            // PsiInternalMickeyLang.g:5527:59: (iv_rulePrimaryConstraint= rulePrimaryConstraint EOF )
            // PsiInternalMickeyLang.g:5528:2: iv_rulePrimaryConstraint= rulePrimaryConstraint EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getPrimaryConstraintElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePrimaryConstraint=rulePrimaryConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrimaryConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "rulePrimaryConstraint"
    // PsiInternalMickeyLang.g:5534:1: rulePrimaryConstraint returns [Boolean current=false] : ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'primary key' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) ) ;
    public final Boolean rulePrimaryConstraint() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Boolean lv_columns_4_0 = null;

        Boolean lv_columns_6_0 = null;

        Boolean lv_conflictClause_8_0 = null;


        try {
            // PsiInternalMickeyLang.g:5535:1: ( ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'primary key' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) ) )
            // PsiInternalMickeyLang.g:5536:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'primary key' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) )
            {
            // PsiInternalMickeyLang.g:5536:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'primary key' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) ) )
            // PsiInternalMickeyLang.g:5537:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'primary key' otherlv_3= '(' ( (lv_columns_4_0= ruleIndexedColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )* otherlv_7= ')' ( (lv_conflictClause_8_0= ruleConflictClause ) )
            {
            // PsiInternalMickeyLang.g:5537:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )?
            int alt100=2;
            int LA100_0 = input.LA(1);

            if ( (LA100_0==117) ) {
                alt100=1;
            }
            switch (alt100) {
                case 1 :
                    // PsiInternalMickeyLang.g:5538:4: otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getPrimaryConstraint_ConstraintKeyword_0_0ElementType());
                      			
                    }
                    otherlv_0=(Token)match(input,117,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_0);
                      			
                    }
                    // PsiInternalMickeyLang.g:5545:4: ( (lv_name_1_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:5546:5: (lv_name_1_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:5546:5: (lv_name_1_0= RULE_ID )
                    // PsiInternalMickeyLang.g:5547:6: lv_name_1_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getPrimaryConstraint_NameIDTerminalRuleCall_0_1_0ElementType());
                      					
                    }
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_91); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_1_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getPrimaryConstraint_PrimaryKeyKeyword_1ElementType());
              		
            }
            otherlv_2=(Token)match(input,113,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getPrimaryConstraint_LeftParenthesisKeyword_2ElementType());
              		
            }
            otherlv_3=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:5577:3: ( (lv_columns_4_0= ruleIndexedColumn ) )
            // PsiInternalMickeyLang.g:5578:4: (lv_columns_4_0= ruleIndexedColumn )
            {
            // PsiInternalMickeyLang.g:5578:4: (lv_columns_4_0= ruleIndexedColumn )
            // PsiInternalMickeyLang.g:5579:5: lv_columns_4_0= ruleIndexedColumn
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getPrimaryConstraint_ColumnsIndexedColumnParserRuleCall_3_0ElementType());
              				
            }
            pushFollow(FOLLOW_7);
            lv_columns_4_0=ruleIndexedColumn();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:5592:3: (otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) ) )*
            loop101:
            do {
                int alt101=2;
                int LA101_0 = input.LA(1);

                if ( (LA101_0==15) ) {
                    alt101=1;
                }


                switch (alt101) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:5593:4: otherlv_5= ',' ( (lv_columns_6_0= ruleIndexedColumn ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getPrimaryConstraint_CommaKeyword_4_0ElementType());
            	      			
            	    }
            	    otherlv_5=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_5);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:5600:4: ( (lv_columns_6_0= ruleIndexedColumn ) )
            	    // PsiInternalMickeyLang.g:5601:5: (lv_columns_6_0= ruleIndexedColumn )
            	    {
            	    // PsiInternalMickeyLang.g:5601:5: (lv_columns_6_0= ruleIndexedColumn )
            	    // PsiInternalMickeyLang.g:5602:6: lv_columns_6_0= ruleIndexedColumn
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getPrimaryConstraint_ColumnsIndexedColumnParserRuleCall_4_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_columns_6_0=ruleIndexedColumn();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getPrimaryConstraint_RightParenthesisKeyword_5ElementType());
              		
            }
            otherlv_7=(Token)match(input,16,FOLLOW_14); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_7);
              		
            }
            // PsiInternalMickeyLang.g:5623:3: ( (lv_conflictClause_8_0= ruleConflictClause ) )
            // PsiInternalMickeyLang.g:5624:4: (lv_conflictClause_8_0= ruleConflictClause )
            {
            // PsiInternalMickeyLang.g:5624:4: (lv_conflictClause_8_0= ruleConflictClause )
            // PsiInternalMickeyLang.g:5625:5: lv_conflictClause_8_0= ruleConflictClause
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getPrimaryConstraint_ConflictClauseConflictClauseParserRuleCall_6_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_conflictClause_8_0=ruleConflictClause();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleCheckTableConstraint"
    // PsiInternalMickeyLang.g:5642:1: entryRuleCheckTableConstraint returns [Boolean current=false] : iv_ruleCheckTableConstraint= ruleCheckTableConstraint EOF ;
    public final Boolean entryRuleCheckTableConstraint() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleCheckTableConstraint = null;


        try {
            // PsiInternalMickeyLang.g:5642:62: (iv_ruleCheckTableConstraint= ruleCheckTableConstraint EOF )
            // PsiInternalMickeyLang.g:5643:2: iv_ruleCheckTableConstraint= ruleCheckTableConstraint EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getCheckTableConstraintElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCheckTableConstraint=ruleCheckTableConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCheckTableConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleCheckTableConstraint"
    // PsiInternalMickeyLang.g:5649:1: ruleCheckTableConstraint returns [Boolean current=false] : ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'check' otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) ;
    public final Boolean ruleCheckTableConstraint() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Boolean lv_expression_4_0 = null;


        try {
            // PsiInternalMickeyLang.g:5650:1: ( ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'check' otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) )
            // PsiInternalMickeyLang.g:5651:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'check' otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' )
            {
            // PsiInternalMickeyLang.g:5651:2: ( (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'check' otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' )
            // PsiInternalMickeyLang.g:5652:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )? otherlv_2= 'check' otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')'
            {
            // PsiInternalMickeyLang.g:5652:3: (otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) ) )?
            int alt102=2;
            int LA102_0 = input.LA(1);

            if ( (LA102_0==117) ) {
                alt102=1;
            }
            switch (alt102) {
                case 1 :
                    // PsiInternalMickeyLang.g:5653:4: otherlv_0= 'constraint' ( (lv_name_1_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCheckTableConstraint_ConstraintKeyword_0_0ElementType());
                      			
                    }
                    otherlv_0=(Token)match(input,117,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_0);
                      			
                    }
                    // PsiInternalMickeyLang.g:5660:4: ( (lv_name_1_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:5661:5: (lv_name_1_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:5661:5: (lv_name_1_0= RULE_ID )
                    // PsiInternalMickeyLang.g:5662:6: lv_name_1_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getCheckTableConstraint_NameIDTerminalRuleCall_0_1_0ElementType());
                      					
                    }
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_92); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_name_1_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCheckTableConstraint_CheckKeyword_1ElementType());
              		
            }
            otherlv_2=(Token)match(input,116,FOLLOW_5); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_2);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCheckTableConstraint_LeftParenthesisKeyword_2ElementType());
              		
            }
            otherlv_3=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_3);
              		
            }
            // PsiInternalMickeyLang.g:5692:3: ( (lv_expression_4_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:5693:4: (lv_expression_4_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:5693:4: (lv_expression_4_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:5694:5: lv_expression_4_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getCheckTableConstraint_ExpressionSqlExpressionParserRuleCall_3_0ElementType());
              				
            }
            pushFollow(FOLLOW_38);
            lv_expression_4_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getCheckTableConstraint_RightParenthesisKeyword_4ElementType());
              		
            }
            otherlv_5=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_5);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleIndexedColumn"
    // PsiInternalMickeyLang.g:5718:1: entryRuleIndexedColumn returns [Boolean current=false] : iv_ruleIndexedColumn= ruleIndexedColumn EOF ;
    public final Boolean entryRuleIndexedColumn() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleIndexedColumn = null;


        try {
            // PsiInternalMickeyLang.g:5718:55: (iv_ruleIndexedColumn= ruleIndexedColumn EOF )
            // PsiInternalMickeyLang.g:5719:2: iv_ruleIndexedColumn= ruleIndexedColumn EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getIndexedColumnElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIndexedColumn=ruleIndexedColumn();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIndexedColumn; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleIndexedColumn"
    // PsiInternalMickeyLang.g:5725:1: ruleIndexedColumn returns [Boolean current=false] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )? ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )? ) ;
    public final Boolean ruleIndexedColumn() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_collationName_2_0=null;
        Token lv_asc_3_0=null;
        Token lv_desc_4_0=null;

        try {
            // PsiInternalMickeyLang.g:5726:1: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )? ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )? ) )
            // PsiInternalMickeyLang.g:5727:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )? ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )? )
            {
            // PsiInternalMickeyLang.g:5727:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )? ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )? )
            // PsiInternalMickeyLang.g:5728:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )? ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )?
            {
            // PsiInternalMickeyLang.g:5728:3: ( (otherlv_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:5729:4: (otherlv_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:5729:4: (otherlv_0= RULE_ID )
            // PsiInternalMickeyLang.g:5730:5: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getIndexedColumn_ColumnReferenceColumnDefCrossReference_0_0ElementType());
              				
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_93); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_0);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:5745:3: (otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) ) )?
            int alt103=2;
            int LA103_0 = input.LA(1);

            if ( (LA103_0==118) ) {
                alt103=1;
            }
            switch (alt103) {
                case 1 :
                    // PsiInternalMickeyLang.g:5746:4: otherlv_1= 'collate' ( (lv_collationName_2_0= RULE_ID ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getIndexedColumn_CollateKeyword_1_0ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,118,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }
                    // PsiInternalMickeyLang.g:5753:4: ( (lv_collationName_2_0= RULE_ID ) )
                    // PsiInternalMickeyLang.g:5754:5: (lv_collationName_2_0= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:5754:5: (lv_collationName_2_0= RULE_ID )
                    // PsiInternalMickeyLang.g:5755:6: lv_collationName_2_0= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getIndexedColumn_CollationNameIDTerminalRuleCall_1_1_0ElementType());
                      					
                    }
                    lv_collationName_2_0=(Token)match(input,RULE_ID,FOLLOW_59); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_collationName_2_0);
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:5771:3: ( ( (lv_asc_3_0= 'asc' ) ) | ( (lv_desc_4_0= 'desc' ) ) )?
            int alt104=3;
            int LA104_0 = input.LA(1);

            if ( (LA104_0==81) ) {
                alt104=1;
            }
            else if ( (LA104_0==82) ) {
                alt104=2;
            }
            switch (alt104) {
                case 1 :
                    // PsiInternalMickeyLang.g:5772:4: ( (lv_asc_3_0= 'asc' ) )
                    {
                    // PsiInternalMickeyLang.g:5772:4: ( (lv_asc_3_0= 'asc' ) )
                    // PsiInternalMickeyLang.g:5773:5: (lv_asc_3_0= 'asc' )
                    {
                    // PsiInternalMickeyLang.g:5773:5: (lv_asc_3_0= 'asc' )
                    // PsiInternalMickeyLang.g:5774:6: lv_asc_3_0= 'asc'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getIndexedColumn_AscAscKeyword_2_0_0ElementType());
                      					
                    }
                    lv_asc_3_0=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_asc_3_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:5790:4: ( (lv_desc_4_0= 'desc' ) )
                    {
                    // PsiInternalMickeyLang.g:5790:4: ( (lv_desc_4_0= 'desc' ) )
                    // PsiInternalMickeyLang.g:5791:5: (lv_desc_4_0= 'desc' )
                    {
                    // PsiInternalMickeyLang.g:5791:5: (lv_desc_4_0= 'desc' )
                    // PsiInternalMickeyLang.g:5792:6: lv_desc_4_0= 'desc'
                    {
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getIndexedColumn_DescDescKeyword_2_1_0ElementType());
                      					
                    }
                    lv_desc_4_0=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(lv_desc_4_0);
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleDefaultValue"
    // PsiInternalMickeyLang.g:5812:1: entryRuleDefaultValue returns [Boolean current=false] : iv_ruleDefaultValue= ruleDefaultValue EOF ;
    public final Boolean entryRuleDefaultValue() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDefaultValue = null;


        try {
            // PsiInternalMickeyLang.g:5812:54: (iv_ruleDefaultValue= ruleDefaultValue EOF )
            // PsiInternalMickeyLang.g:5813:2: iv_ruleDefaultValue= ruleDefaultValue EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDefaultValueElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDefaultValue=ruleDefaultValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDefaultValue; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDefaultValue"
    // PsiInternalMickeyLang.g:5819:1: ruleDefaultValue returns [Boolean current=false] : ( ( () ( (lv_literal_1_0= ruleLiteralValue ) ) ) | ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) ) ;
    public final Boolean ruleDefaultValue() throws RecognitionException {
        Boolean current = false;

        Token otherlv_3=null;
        Token otherlv_5=null;
        Boolean lv_literal_1_0 = null;

        Boolean lv_expression_4_0 = null;


        try {
            // PsiInternalMickeyLang.g:5820:1: ( ( ( () ( (lv_literal_1_0= ruleLiteralValue ) ) ) | ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) ) )
            // PsiInternalMickeyLang.g:5821:2: ( ( () ( (lv_literal_1_0= ruleLiteralValue ) ) ) | ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) )
            {
            // PsiInternalMickeyLang.g:5821:2: ( ( () ( (lv_literal_1_0= ruleLiteralValue ) ) ) | ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' ) )
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( ((LA105_0>=RULE_STRING && LA105_0<=RULE_NUMBER)||LA105_0==34||(LA105_0>=89 && LA105_0<=92)) ) {
                alt105=1;
            }
            else if ( (LA105_0==14) ) {
                alt105=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 105, 0, input);

                throw nvae;
            }
            switch (alt105) {
                case 1 :
                    // PsiInternalMickeyLang.g:5822:3: ( () ( (lv_literal_1_0= ruleLiteralValue ) ) )
                    {
                    // PsiInternalMickeyLang.g:5822:3: ( () ( (lv_literal_1_0= ruleLiteralValue ) ) )
                    // PsiInternalMickeyLang.g:5823:4: () ( (lv_literal_1_0= ruleLiteralValue ) )
                    {
                    // PsiInternalMickeyLang.g:5823:4: ()
                    // PsiInternalMickeyLang.g:5824:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getDefaultValue_LiteralDefaultValueAction_0_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    // PsiInternalMickeyLang.g:5830:4: ( (lv_literal_1_0= ruleLiteralValue ) )
                    // PsiInternalMickeyLang.g:5831:5: (lv_literal_1_0= ruleLiteralValue )
                    {
                    // PsiInternalMickeyLang.g:5831:5: (lv_literal_1_0= ruleLiteralValue )
                    // PsiInternalMickeyLang.g:5832:6: lv_literal_1_0= ruleLiteralValue
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getDefaultValue_LiteralLiteralValueParserRuleCall_0_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_literal_1_0=ruleLiteralValue();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:5847:3: ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' )
                    {
                    // PsiInternalMickeyLang.g:5847:3: ( () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')' )
                    // PsiInternalMickeyLang.g:5848:4: () otherlv_3= '(' ( (lv_expression_4_0= ruleSqlExpression ) ) otherlv_5= ')'
                    {
                    // PsiInternalMickeyLang.g:5848:4: ()
                    // PsiInternalMickeyLang.g:5849:5: 
                    {
                    if ( state.backtracking==0 ) {

                      					precedeComposite(elementTypeProvider.getDefaultValue_ExpressionDefaultValueAction_1_0ElementType());
                      					doneComposite();
                      					associateWithSemanticElement();
                      				
                    }

                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getDefaultValue_LeftParenthesisKeyword_1_1ElementType());
                      			
                    }
                    otherlv_3=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_3);
                      			
                    }
                    // PsiInternalMickeyLang.g:5862:4: ( (lv_expression_4_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:5863:5: (lv_expression_4_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:5863:5: (lv_expression_4_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:5864:6: lv_expression_4_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getDefaultValue_ExpressionSqlExpressionParserRuleCall_1_2_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_38);
                    lv_expression_4_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getDefaultValue_RightParenthesisKeyword_1_3ElementType());
                      			
                    }
                    otherlv_5=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_5);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleConflictClause"
    // PsiInternalMickeyLang.g:5889:1: entryRuleConflictClause returns [Boolean current=false] : iv_ruleConflictClause= ruleConflictClause EOF ;
    public final Boolean entryRuleConflictClause() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleConflictClause = null;


        try {
            // PsiInternalMickeyLang.g:5889:56: (iv_ruleConflictClause= ruleConflictClause EOF )
            // PsiInternalMickeyLang.g:5890:2: iv_ruleConflictClause= ruleConflictClause EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getConflictClauseElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleConflictClause=ruleConflictClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConflictClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleConflictClause"
    // PsiInternalMickeyLang.g:5896:1: ruleConflictClause returns [Boolean current=false] : (otherlv_0= 'on' otherlv_1= 'conflict' ( (lv_resolution_2_0= ruleConflictResolution ) ) ) ;
    public final Boolean ruleConflictClause() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Boolean lv_resolution_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:5897:1: ( (otherlv_0= 'on' otherlv_1= 'conflict' ( (lv_resolution_2_0= ruleConflictResolution ) ) ) )
            // PsiInternalMickeyLang.g:5898:2: (otherlv_0= 'on' otherlv_1= 'conflict' ( (lv_resolution_2_0= ruleConflictResolution ) ) )
            {
            // PsiInternalMickeyLang.g:5898:2: (otherlv_0= 'on' otherlv_1= 'conflict' ( (lv_resolution_2_0= ruleConflictResolution ) ) )
            // PsiInternalMickeyLang.g:5899:3: otherlv_0= 'on' otherlv_1= 'conflict' ( (lv_resolution_2_0= ruleConflictResolution ) )
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getConflictClause_OnKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,22,FOLLOW_94); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getConflictClause_ConflictKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,119,FOLLOW_95); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:5913:3: ( (lv_resolution_2_0= ruleConflictResolution ) )
            // PsiInternalMickeyLang.g:5914:4: (lv_resolution_2_0= ruleConflictResolution )
            {
            // PsiInternalMickeyLang.g:5914:4: (lv_resolution_2_0= ruleConflictResolution )
            // PsiInternalMickeyLang.g:5915:5: lv_resolution_2_0= ruleConflictResolution
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getConflictClause_ResolutionConflictResolutionEnumRuleCall_2_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_resolution_2_0=ruleConflictResolution();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleDMLStatement"
    // PsiInternalMickeyLang.g:5932:1: entryRuleDMLStatement returns [Boolean current=false] : iv_ruleDMLStatement= ruleDMLStatement EOF ;
    public final Boolean entryRuleDMLStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDMLStatement = null;


        try {
            // PsiInternalMickeyLang.g:5932:54: (iv_ruleDMLStatement= ruleDMLStatement EOF )
            // PsiInternalMickeyLang.g:5933:2: iv_ruleDMLStatement= ruleDMLStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDMLStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDMLStatement=ruleDMLStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDMLStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDMLStatement"
    // PsiInternalMickeyLang.g:5939:1: ruleDMLStatement returns [Boolean current=false] : (this_SelectStatement_0= ruleSelectStatement | this_InsertStatement_1= ruleInsertStatement | this_UpdateStatement_2= ruleUpdateStatement | this_DeleteStatement_3= ruleDeleteStatement ) ;
    public final Boolean ruleDMLStatement() throws RecognitionException {
        Boolean current = false;

        Boolean this_SelectStatement_0 = null;

        Boolean this_InsertStatement_1 = null;

        Boolean this_UpdateStatement_2 = null;

        Boolean this_DeleteStatement_3 = null;


        try {
            // PsiInternalMickeyLang.g:5940:1: ( (this_SelectStatement_0= ruleSelectStatement | this_InsertStatement_1= ruleInsertStatement | this_UpdateStatement_2= ruleUpdateStatement | this_DeleteStatement_3= ruleDeleteStatement ) )
            // PsiInternalMickeyLang.g:5941:2: (this_SelectStatement_0= ruleSelectStatement | this_InsertStatement_1= ruleInsertStatement | this_UpdateStatement_2= ruleUpdateStatement | this_DeleteStatement_3= ruleDeleteStatement )
            {
            // PsiInternalMickeyLang.g:5941:2: (this_SelectStatement_0= ruleSelectStatement | this_InsertStatement_1= ruleInsertStatement | this_UpdateStatement_2= ruleUpdateStatement | this_DeleteStatement_3= ruleDeleteStatement )
            int alt106=4;
            switch ( input.LA(1) ) {
            case 75:
                {
                alt106=1;
                }
                break;
            case 102:
            case 120:
                {
                alt106=2;
                }
                break;
            case 103:
                {
                alt106=3;
                }
                break;
            case 101:
                {
                alt106=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 106, 0, input);

                throw nvae;
            }

            switch (alt106) {
                case 1 :
                    // PsiInternalMickeyLang.g:5942:3: this_SelectStatement_0= ruleSelectStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDMLStatement_SelectStatementParserRuleCall_0ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_SelectStatement_0=ruleSelectStatement();

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

                      			current = this_SelectStatement_0;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:5951:3: this_InsertStatement_1= ruleInsertStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDMLStatement_InsertStatementParserRuleCall_1ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_InsertStatement_1=ruleInsertStatement();

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

                      			current = this_InsertStatement_1;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:5960:3: this_UpdateStatement_2= ruleUpdateStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDMLStatement_UpdateStatementParserRuleCall_2ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_UpdateStatement_2=ruleUpdateStatement();

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

                      			current = this_UpdateStatement_2;
                      			doneComposite();
                      		
                    }

                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:5969:3: this_DeleteStatement_3= ruleDeleteStatement
                    {
                    if ( state.backtracking==0 ) {

                      			markComposite(elementTypeProvider.getDMLStatement_DeleteStatementParserRuleCall_3ElementType());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_DeleteStatement_3=ruleDeleteStatement();

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

                      			current = this_DeleteStatement_3;
                      			doneComposite();
                      		
                    }

                    }
                    break;

            }


            }

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


    // $ANTLR start "entryRuleDeleteStatement"
    // PsiInternalMickeyLang.g:5981:1: entryRuleDeleteStatement returns [Boolean current=false] : iv_ruleDeleteStatement= ruleDeleteStatement EOF ;
    public final Boolean entryRuleDeleteStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleDeleteStatement = null;


        try {
            // PsiInternalMickeyLang.g:5981:57: (iv_ruleDeleteStatement= ruleDeleteStatement EOF )
            // PsiInternalMickeyLang.g:5982:2: iv_ruleDeleteStatement= ruleDeleteStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getDeleteStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDeleteStatement=ruleDeleteStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDeleteStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleDeleteStatement"
    // PsiInternalMickeyLang.g:5988:1: ruleDeleteStatement returns [Boolean current=false] : (otherlv_0= 'delete' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )? ) ;
    public final Boolean ruleDeleteStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Boolean lv_expression_4_0 = null;


        try {
            // PsiInternalMickeyLang.g:5989:1: ( (otherlv_0= 'delete' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )? ) )
            // PsiInternalMickeyLang.g:5990:2: (otherlv_0= 'delete' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )? )
            {
            // PsiInternalMickeyLang.g:5990:2: (otherlv_0= 'delete' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )? )
            // PsiInternalMickeyLang.g:5991:3: otherlv_0= 'delete' otherlv_1= 'from' ( (otherlv_2= RULE_ID ) ) (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )?
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDeleteStatement_DeleteKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,101,FOLLOW_96); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getDeleteStatement_FromKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,29,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:6005:3: ( (otherlv_2= RULE_ID ) )
            // PsiInternalMickeyLang.g:6006:4: (otherlv_2= RULE_ID )
            {
            // PsiInternalMickeyLang.g:6006:4: (otherlv_2= RULE_ID )
            // PsiInternalMickeyLang.g:6007:5: otherlv_2= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getDeleteStatement_TableTableDefinitionCrossReference_2_0ElementType());
              				
            }
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_97); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_2);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:6022:3: (otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) ) )?
            int alt107=2;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==78) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // PsiInternalMickeyLang.g:6023:4: otherlv_3= 'where' ( (lv_expression_4_0= ruleSqlExpression ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getDeleteStatement_WhereKeyword_3_0ElementType());
                      			
                    }
                    otherlv_3=(Token)match(input,78,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_3);
                      			
                    }
                    // PsiInternalMickeyLang.g:6030:4: ( (lv_expression_4_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:6031:5: (lv_expression_4_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:6031:5: (lv_expression_4_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:6032:6: lv_expression_4_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getDeleteStatement_ExpressionSqlExpressionParserRuleCall_3_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_expression_4_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleInsertStatement"
    // PsiInternalMickeyLang.g:6050:1: entryRuleInsertStatement returns [Boolean current=false] : iv_ruleInsertStatement= ruleInsertStatement EOF ;
    public final Boolean entryRuleInsertStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleInsertStatement = null;


        try {
            // PsiInternalMickeyLang.g:6050:57: (iv_ruleInsertStatement= ruleInsertStatement EOF )
            // PsiInternalMickeyLang.g:6051:2: iv_ruleInsertStatement= ruleInsertStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getInsertStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInsertStatement=ruleInsertStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInsertStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleInsertStatement"
    // PsiInternalMickeyLang.g:6057:1: ruleInsertStatement returns [Boolean current=false] : ( ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' ) otherlv_4= 'into' ( (otherlv_5= RULE_ID ) ) (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )? ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) ) ) ;
    public final Boolean ruleInsertStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        Token otherlv_19=null;
        Boolean lv_conflictResolution_2_0 = null;

        Boolean lv_expressions_13_0 = null;

        Boolean lv_expressions_15_0 = null;

        Boolean lv_selectStatement_17_0 = null;


        try {
            // PsiInternalMickeyLang.g:6058:1: ( ( ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' ) otherlv_4= 'into' ( (otherlv_5= RULE_ID ) ) (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )? ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) ) ) )
            // PsiInternalMickeyLang.g:6059:2: ( ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' ) otherlv_4= 'into' ( (otherlv_5= RULE_ID ) ) (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )? ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) ) )
            {
            // PsiInternalMickeyLang.g:6059:2: ( ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' ) otherlv_4= 'into' ( (otherlv_5= RULE_ID ) ) (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )? ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) ) )
            // PsiInternalMickeyLang.g:6060:3: ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' ) otherlv_4= 'into' ( (otherlv_5= RULE_ID ) ) (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )? ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) )
            {
            // PsiInternalMickeyLang.g:6060:3: ( (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ) | otherlv_3= 'replace' )
            int alt109=2;
            int LA109_0 = input.LA(1);

            if ( (LA109_0==102) ) {
                alt109=1;
            }
            else if ( (LA109_0==120) ) {
                alt109=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 109, 0, input);

                throw nvae;
            }
            switch (alt109) {
                case 1 :
                    // PsiInternalMickeyLang.g:6061:4: (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? )
                    {
                    // PsiInternalMickeyLang.g:6061:4: (otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? )
                    // PsiInternalMickeyLang.g:6062:5: otherlv_0= 'insert' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )?
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getInsertStatement_InsertKeyword_0_0_0ElementType());
                      				
                    }
                    otherlv_0=(Token)match(input,102,FOLLOW_98); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(otherlv_0);
                      				
                    }
                    // PsiInternalMickeyLang.g:6069:5: (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )?
                    int alt108=2;
                    int LA108_0 = input.LA(1);

                    if ( (LA108_0==55) ) {
                        alt108=1;
                    }
                    switch (alt108) {
                        case 1 :
                            // PsiInternalMickeyLang.g:6070:6: otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) )
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getInsertStatement_OrKeyword_0_0_1_0ElementType());
                              					
                            }
                            otherlv_1=(Token)match(input,55,FOLLOW_95); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_1);
                              					
                            }
                            // PsiInternalMickeyLang.g:6077:6: ( (lv_conflictResolution_2_0= ruleConflictResolution ) )
                            // PsiInternalMickeyLang.g:6078:7: (lv_conflictResolution_2_0= ruleConflictResolution )
                            {
                            // PsiInternalMickeyLang.g:6078:7: (lv_conflictResolution_2_0= ruleConflictResolution )
                            // PsiInternalMickeyLang.g:6079:8: lv_conflictResolution_2_0= ruleConflictResolution
                            {
                            if ( state.backtracking==0 ) {

                              								markComposite(elementTypeProvider.getInsertStatement_ConflictResolutionConflictResolutionEnumRuleCall_0_0_1_1_0ElementType());
                              							
                            }
                            pushFollow(FOLLOW_99);
                            lv_conflictResolution_2_0=ruleConflictResolution();

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

                              								doneComposite();
                              								if(!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6095:4: otherlv_3= 'replace'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getInsertStatement_ReplaceKeyword_0_1ElementType());
                      			
                    }
                    otherlv_3=(Token)match(input,120,FOLLOW_99); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_3);
                      			
                    }

                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getInsertStatement_IntoKeyword_1ElementType());
              		
            }
            otherlv_4=(Token)match(input,121,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_4);
              		
            }
            // PsiInternalMickeyLang.g:6110:3: ( (otherlv_5= RULE_ID ) )
            // PsiInternalMickeyLang.g:6111:4: (otherlv_5= RULE_ID )
            {
            // PsiInternalMickeyLang.g:6111:4: (otherlv_5= RULE_ID )
            // PsiInternalMickeyLang.g:6112:5: otherlv_5= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getInsertStatement_TableTableDefinitionCrossReference_2_0ElementType());
              				
            }
            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_100); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_5);
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:6127:3: (otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')' )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==14) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // PsiInternalMickeyLang.g:6128:4: otherlv_6= '(' ( (otherlv_7= RULE_ID ) ) (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )* otherlv_10= ')'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getInsertStatement_LeftParenthesisKeyword_3_0ElementType());
                      			
                    }
                    otherlv_6=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_6);
                      			
                    }
                    // PsiInternalMickeyLang.g:6135:4: ( (otherlv_7= RULE_ID ) )
                    // PsiInternalMickeyLang.g:6136:5: (otherlv_7= RULE_ID )
                    {
                    // PsiInternalMickeyLang.g:6136:5: (otherlv_7= RULE_ID )
                    // PsiInternalMickeyLang.g:6137:6: otherlv_7= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      						if (!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						markLeaf(elementTypeProvider.getInsertStatement_ColumnNamesColumnDefCrossReference_3_1_0ElementType());
                      					
                    }
                    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_7); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						doneLeaf(otherlv_7);
                      					
                    }

                    }


                    }

                    // PsiInternalMickeyLang.g:6152:4: (otherlv_8= ',' ( (otherlv_9= RULE_ID ) ) )*
                    loop110:
                    do {
                        int alt110=2;
                        int LA110_0 = input.LA(1);

                        if ( (LA110_0==15) ) {
                            alt110=1;
                        }


                        switch (alt110) {
                    	case 1 :
                    	    // PsiInternalMickeyLang.g:6153:5: otherlv_8= ',' ( (otherlv_9= RULE_ID ) )
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      					markLeaf(elementTypeProvider.getInsertStatement_CommaKeyword_3_2_0ElementType());
                    	      				
                    	    }
                    	    otherlv_8=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      					doneLeaf(otherlv_8);
                    	      				
                    	    }
                    	    // PsiInternalMickeyLang.g:6160:5: ( (otherlv_9= RULE_ID ) )
                    	    // PsiInternalMickeyLang.g:6161:6: (otherlv_9= RULE_ID )
                    	    {
                    	    // PsiInternalMickeyLang.g:6161:6: (otherlv_9= RULE_ID )
                    	    // PsiInternalMickeyLang.g:6162:7: otherlv_9= RULE_ID
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      							if (!current) {
                    	      								associateWithSemanticElement();
                    	      								current = true;
                    	      							}
                    	      						
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      							markLeaf(elementTypeProvider.getInsertStatement_ColumnNamesColumnDefCrossReference_3_2_1_0ElementType());
                    	      						
                    	    }
                    	    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_7); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      							doneLeaf(otherlv_9);
                    	      						
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getInsertStatement_RightParenthesisKeyword_3_3ElementType());
                      			
                    }
                    otherlv_10=(Token)match(input,16,FOLLOW_101); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_10);
                      			
                    }

                    }
                    break;

            }

            // PsiInternalMickeyLang.g:6186:3: ( ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) ) | (otherlv_18= 'default' otherlv_19= 'values' ) )
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( (LA114_0==75||LA114_0==122) ) {
                alt114=1;
            }
            else if ( (LA114_0==115) ) {
                alt114=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 114, 0, input);

                throw nvae;
            }
            switch (alt114) {
                case 1 :
                    // PsiInternalMickeyLang.g:6187:4: ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) )
                    {
                    // PsiInternalMickeyLang.g:6187:4: ( (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' ) | ( (lv_selectStatement_17_0= ruleSelectStatement ) ) )
                    int alt113=2;
                    int LA113_0 = input.LA(1);

                    if ( (LA113_0==122) ) {
                        alt113=1;
                    }
                    else if ( (LA113_0==75) ) {
                        alt113=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 113, 0, input);

                        throw nvae;
                    }
                    switch (alt113) {
                        case 1 :
                            // PsiInternalMickeyLang.g:6188:5: (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' )
                            {
                            // PsiInternalMickeyLang.g:6188:5: (otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')' )
                            // PsiInternalMickeyLang.g:6189:6: otherlv_11= 'values' otherlv_12= '(' ( (lv_expressions_13_0= ruleSqlExpression ) ) (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )* otherlv_16= ')'
                            {
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getInsertStatement_ValuesKeyword_4_0_0_0ElementType());
                              					
                            }
                            otherlv_11=(Token)match(input,122,FOLLOW_5); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_11);
                              					
                            }
                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getInsertStatement_LeftParenthesisKeyword_4_0_0_1ElementType());
                              					
                            }
                            otherlv_12=(Token)match(input,14,FOLLOW_27); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_12);
                              					
                            }
                            // PsiInternalMickeyLang.g:6203:6: ( (lv_expressions_13_0= ruleSqlExpression ) )
                            // PsiInternalMickeyLang.g:6204:7: (lv_expressions_13_0= ruleSqlExpression )
                            {
                            // PsiInternalMickeyLang.g:6204:7: (lv_expressions_13_0= ruleSqlExpression )
                            // PsiInternalMickeyLang.g:6205:8: lv_expressions_13_0= ruleSqlExpression
                            {
                            if ( state.backtracking==0 ) {

                              								markComposite(elementTypeProvider.getInsertStatement_ExpressionsSqlExpressionParserRuleCall_4_0_0_2_0ElementType());
                              							
                            }
                            pushFollow(FOLLOW_7);
                            lv_expressions_13_0=ruleSqlExpression();

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

                              								doneComposite();
                              								if(!current) {
                              									associateWithSemanticElement();
                              									current = true;
                              								}
                              							
                            }

                            }


                            }

                            // PsiInternalMickeyLang.g:6218:6: (otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) ) )*
                            loop112:
                            do {
                                int alt112=2;
                                int LA112_0 = input.LA(1);

                                if ( (LA112_0==15) ) {
                                    alt112=1;
                                }


                                switch (alt112) {
                            	case 1 :
                            	    // PsiInternalMickeyLang.g:6219:7: otherlv_14= ',' ( (lv_expressions_15_0= ruleSqlExpression ) )
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      							markLeaf(elementTypeProvider.getInsertStatement_CommaKeyword_4_0_0_3_0ElementType());
                            	      						
                            	    }
                            	    otherlv_14=(Token)match(input,15,FOLLOW_27); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      							doneLeaf(otherlv_14);
                            	      						
                            	    }
                            	    // PsiInternalMickeyLang.g:6226:7: ( (lv_expressions_15_0= ruleSqlExpression ) )
                            	    // PsiInternalMickeyLang.g:6227:8: (lv_expressions_15_0= ruleSqlExpression )
                            	    {
                            	    // PsiInternalMickeyLang.g:6227:8: (lv_expressions_15_0= ruleSqlExpression )
                            	    // PsiInternalMickeyLang.g:6228:9: lv_expressions_15_0= ruleSqlExpression
                            	    {
                            	    if ( state.backtracking==0 ) {

                            	      									markComposite(elementTypeProvider.getInsertStatement_ExpressionsSqlExpressionParserRuleCall_4_0_0_3_1_0ElementType());
                            	      								
                            	    }
                            	    pushFollow(FOLLOW_7);
                            	    lv_expressions_15_0=ruleSqlExpression();

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

                            	      									doneComposite();
                            	      									if(!current) {
                            	      										associateWithSemanticElement();
                            	      										current = true;
                            	      									}
                            	      								
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

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

                            if ( state.backtracking==0 ) {

                              						markLeaf(elementTypeProvider.getInsertStatement_RightParenthesisKeyword_4_0_0_4ElementType());
                              					
                            }
                            otherlv_16=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              						doneLeaf(otherlv_16);
                              					
                            }

                            }


                            }
                            break;
                        case 2 :
                            // PsiInternalMickeyLang.g:6251:5: ( (lv_selectStatement_17_0= ruleSelectStatement ) )
                            {
                            // PsiInternalMickeyLang.g:6251:5: ( (lv_selectStatement_17_0= ruleSelectStatement ) )
                            // PsiInternalMickeyLang.g:6252:6: (lv_selectStatement_17_0= ruleSelectStatement )
                            {
                            // PsiInternalMickeyLang.g:6252:6: (lv_selectStatement_17_0= ruleSelectStatement )
                            // PsiInternalMickeyLang.g:6253:7: lv_selectStatement_17_0= ruleSelectStatement
                            {
                            if ( state.backtracking==0 ) {

                              							markComposite(elementTypeProvider.getInsertStatement_SelectStatementSelectStatementParserRuleCall_4_0_1_0ElementType());
                              						
                            }
                            pushFollow(FOLLOW_2);
                            lv_selectStatement_17_0=ruleSelectStatement();

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

                              							doneComposite();
                              							if(!current) {
                              								associateWithSemanticElement();
                              								current = true;
                              							}
                              						
                            }

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6268:4: (otherlv_18= 'default' otherlv_19= 'values' )
                    {
                    // PsiInternalMickeyLang.g:6268:4: (otherlv_18= 'default' otherlv_19= 'values' )
                    // PsiInternalMickeyLang.g:6269:5: otherlv_18= 'default' otherlv_19= 'values'
                    {
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getInsertStatement_DefaultKeyword_4_1_0ElementType());
                      				
                    }
                    otherlv_18=(Token)match(input,115,FOLLOW_102); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(otherlv_18);
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					markLeaf(elementTypeProvider.getInsertStatement_ValuesKeyword_4_1_1ElementType());
                      				
                    }
                    otherlv_19=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					doneLeaf(otherlv_19);
                      				
                    }

                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleUpdateStatement"
    // PsiInternalMickeyLang.g:6289:1: entryRuleUpdateStatement returns [Boolean current=false] : iv_ruleUpdateStatement= ruleUpdateStatement EOF ;
    public final Boolean entryRuleUpdateStatement() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleUpdateStatement = null;


        try {
            // PsiInternalMickeyLang.g:6289:57: (iv_ruleUpdateStatement= ruleUpdateStatement EOF )
            // PsiInternalMickeyLang.g:6290:2: iv_ruleUpdateStatement= ruleUpdateStatement EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getUpdateStatementElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUpdateStatement=ruleUpdateStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUpdateStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleUpdateStatement"
    // PsiInternalMickeyLang.g:6296:1: ruleUpdateStatement returns [Boolean current=false] : (otherlv_0= 'update' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ( (otherlv_3= RULE_ID ) ) otherlv_4= 'set' ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) ) (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )* (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )? ) ;
    public final Boolean ruleUpdateStatement() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Boolean lv_conflictResolution_2_0 = null;

        Boolean lv_updateColumnExpressions_5_0 = null;

        Boolean lv_updateColumnExpressions_7_0 = null;

        Boolean lv_whereExpression_9_0 = null;


        try {
            // PsiInternalMickeyLang.g:6297:1: ( (otherlv_0= 'update' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ( (otherlv_3= RULE_ID ) ) otherlv_4= 'set' ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) ) (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )* (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )? ) )
            // PsiInternalMickeyLang.g:6298:2: (otherlv_0= 'update' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ( (otherlv_3= RULE_ID ) ) otherlv_4= 'set' ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) ) (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )* (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )? )
            {
            // PsiInternalMickeyLang.g:6298:2: (otherlv_0= 'update' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ( (otherlv_3= RULE_ID ) ) otherlv_4= 'set' ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) ) (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )* (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )? )
            // PsiInternalMickeyLang.g:6299:3: otherlv_0= 'update' (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )? ( (otherlv_3= RULE_ID ) ) otherlv_4= 'set' ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) ) (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )* (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )?
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUpdateStatement_UpdateKeyword_0ElementType());
              		
            }
            otherlv_0=(Token)match(input,103,FOLLOW_103); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_0);
              		
            }
            // PsiInternalMickeyLang.g:6306:3: (otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) ) )?
            int alt115=2;
            int LA115_0 = input.LA(1);

            if ( (LA115_0==55) ) {
                alt115=1;
            }
            switch (alt115) {
                case 1 :
                    // PsiInternalMickeyLang.g:6307:4: otherlv_1= 'or' ( (lv_conflictResolution_2_0= ruleConflictResolution ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getUpdateStatement_OrKeyword_1_0ElementType());
                      			
                    }
                    otherlv_1=(Token)match(input,55,FOLLOW_95); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_1);
                      			
                    }
                    // PsiInternalMickeyLang.g:6314:4: ( (lv_conflictResolution_2_0= ruleConflictResolution ) )
                    // PsiInternalMickeyLang.g:6315:5: (lv_conflictResolution_2_0= ruleConflictResolution )
                    {
                    // PsiInternalMickeyLang.g:6315:5: (lv_conflictResolution_2_0= ruleConflictResolution )
                    // PsiInternalMickeyLang.g:6316:6: lv_conflictResolution_2_0= ruleConflictResolution
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getUpdateStatement_ConflictResolutionConflictResolutionEnumRuleCall_1_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_3);
                    lv_conflictResolution_2_0=ruleConflictResolution();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // PsiInternalMickeyLang.g:6330:3: ( (otherlv_3= RULE_ID ) )
            // PsiInternalMickeyLang.g:6331:4: (otherlv_3= RULE_ID )
            {
            // PsiInternalMickeyLang.g:6331:4: (otherlv_3= RULE_ID )
            // PsiInternalMickeyLang.g:6332:5: otherlv_3= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getUpdateStatement_TableTableDefinitionCrossReference_2_0ElementType());
              				
            }
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_104); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_3);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUpdateStatement_SetKeyword_3ElementType());
              		
            }
            otherlv_4=(Token)match(input,123,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_4);
              		
            }
            // PsiInternalMickeyLang.g:6354:3: ( (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression ) )
            // PsiInternalMickeyLang.g:6355:4: (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression )
            {
            // PsiInternalMickeyLang.g:6355:4: (lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression )
            // PsiInternalMickeyLang.g:6356:5: lv_updateColumnExpressions_5_0= ruleUpdateColumnExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getUpdateStatement_UpdateColumnExpressionsUpdateColumnExpressionParserRuleCall_4_0ElementType());
              				
            }
            pushFollow(FOLLOW_105);
            lv_updateColumnExpressions_5_0=ruleUpdateColumnExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }

            // PsiInternalMickeyLang.g:6369:3: (otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) ) )*
            loop116:
            do {
                int alt116=2;
                int LA116_0 = input.LA(1);

                if ( (LA116_0==15) ) {
                    alt116=1;
                }


                switch (alt116) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:6370:4: otherlv_6= ',' ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) )
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getUpdateStatement_CommaKeyword_5_0ElementType());
            	      			
            	    }
            	    otherlv_6=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(otherlv_6);
            	      			
            	    }
            	    // PsiInternalMickeyLang.g:6377:4: ( (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression ) )
            	    // PsiInternalMickeyLang.g:6378:5: (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression )
            	    {
            	    // PsiInternalMickeyLang.g:6378:5: (lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression )
            	    // PsiInternalMickeyLang.g:6379:6: lv_updateColumnExpressions_7_0= ruleUpdateColumnExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						markComposite(elementTypeProvider.getUpdateStatement_UpdateColumnExpressionsUpdateColumnExpressionParserRuleCall_5_1_0ElementType());
            	      					
            	    }
            	    pushFollow(FOLLOW_105);
            	    lv_updateColumnExpressions_7_0=ruleUpdateColumnExpression();

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

            	      						doneComposite();
            	      						if(!current) {
            	      							associateWithSemanticElement();
            	      							current = true;
            	      						}
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

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

            // PsiInternalMickeyLang.g:6393:3: (otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) ) )?
            int alt117=2;
            int LA117_0 = input.LA(1);

            if ( (LA117_0==78) ) {
                alt117=1;
            }
            switch (alt117) {
                case 1 :
                    // PsiInternalMickeyLang.g:6394:4: otherlv_8= 'where' ( (lv_whereExpression_9_0= ruleSqlExpression ) )
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getUpdateStatement_WhereKeyword_6_0ElementType());
                      			
                    }
                    otherlv_8=(Token)match(input,78,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(otherlv_8);
                      			
                    }
                    // PsiInternalMickeyLang.g:6401:4: ( (lv_whereExpression_9_0= ruleSqlExpression ) )
                    // PsiInternalMickeyLang.g:6402:5: (lv_whereExpression_9_0= ruleSqlExpression )
                    {
                    // PsiInternalMickeyLang.g:6402:5: (lv_whereExpression_9_0= ruleSqlExpression )
                    // PsiInternalMickeyLang.g:6403:6: lv_whereExpression_9_0= ruleSqlExpression
                    {
                    if ( state.backtracking==0 ) {

                      						markComposite(elementTypeProvider.getUpdateStatement_WhereExpressionSqlExpressionParserRuleCall_6_1_0ElementType());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_whereExpression_9_0=ruleSqlExpression();

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

                      						doneComposite();
                      						if(!current) {
                      							associateWithSemanticElement();
                      							current = true;
                      						}
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

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


    // $ANTLR start "entryRuleUpdateColumnExpression"
    // PsiInternalMickeyLang.g:6421:1: entryRuleUpdateColumnExpression returns [Boolean current=false] : iv_ruleUpdateColumnExpression= ruleUpdateColumnExpression EOF ;
    public final Boolean entryRuleUpdateColumnExpression() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleUpdateColumnExpression = null;


        try {
            // PsiInternalMickeyLang.g:6421:64: (iv_ruleUpdateColumnExpression= ruleUpdateColumnExpression EOF )
            // PsiInternalMickeyLang.g:6422:2: iv_ruleUpdateColumnExpression= ruleUpdateColumnExpression EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getUpdateColumnExpressionElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUpdateColumnExpression=ruleUpdateColumnExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUpdateColumnExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleUpdateColumnExpression"
    // PsiInternalMickeyLang.g:6428:1: ruleUpdateColumnExpression returns [Boolean current=false] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expression_2_0= ruleSqlExpression ) ) ) ;
    public final Boolean ruleUpdateColumnExpression() throws RecognitionException {
        Boolean current = false;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Boolean lv_expression_2_0 = null;


        try {
            // PsiInternalMickeyLang.g:6429:1: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expression_2_0= ruleSqlExpression ) ) ) )
            // PsiInternalMickeyLang.g:6430:2: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expression_2_0= ruleSqlExpression ) ) )
            {
            // PsiInternalMickeyLang.g:6430:2: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expression_2_0= ruleSqlExpression ) ) )
            // PsiInternalMickeyLang.g:6431:3: ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expression_2_0= ruleSqlExpression ) )
            {
            // PsiInternalMickeyLang.g:6431:3: ( (otherlv_0= RULE_ID ) )
            // PsiInternalMickeyLang.g:6432:4: (otherlv_0= RULE_ID )
            {
            // PsiInternalMickeyLang.g:6432:4: (otherlv_0= RULE_ID )
            // PsiInternalMickeyLang.g:6433:5: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              					if (!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					markLeaf(elementTypeProvider.getUpdateColumnExpression_ColumnNameColumnDefCrossReference_0_0ElementType());
              				
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_106); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					doneLeaf(otherlv_0);
              				
            }

            }


            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getUpdateColumnExpression_EqualsSignKeyword_1ElementType());
              		
            }
            otherlv_1=(Token)match(input,43,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(otherlv_1);
              		
            }
            // PsiInternalMickeyLang.g:6455:3: ( (lv_expression_2_0= ruleSqlExpression ) )
            // PsiInternalMickeyLang.g:6456:4: (lv_expression_2_0= ruleSqlExpression )
            {
            // PsiInternalMickeyLang.g:6456:4: (lv_expression_2_0= ruleSqlExpression )
            // PsiInternalMickeyLang.g:6457:5: lv_expression_2_0= ruleSqlExpression
            {
            if ( state.backtracking==0 ) {

              					markComposite(elementTypeProvider.getUpdateColumnExpression_ExpressionSqlExpressionParserRuleCall_2_0ElementType());
              				
            }
            pushFollow(FOLLOW_2);
            lv_expression_2_0=ruleSqlExpression();

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

              					doneComposite();
              					if(!current) {
              						associateWithSemanticElement();
              						current = true;
              					}
              				
            }

            }


            }


            }


            }

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


    // $ANTLR start "entryRuleSignedNumber"
    // PsiInternalMickeyLang.g:6474:1: entryRuleSignedNumber returns [Boolean current=false] : iv_ruleSignedNumber= ruleSignedNumber EOF ;
    public final Boolean entryRuleSignedNumber() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleSignedNumber = null;


        try {
            // PsiInternalMickeyLang.g:6474:54: (iv_ruleSignedNumber= ruleSignedNumber EOF )
            // PsiInternalMickeyLang.g:6475:2: iv_ruleSignedNumber= ruleSignedNumber EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getSignedNumberElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignedNumber=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignedNumber; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleSignedNumber"
    // PsiInternalMickeyLang.g:6481:1: ruleSignedNumber returns [Boolean current=false] : ( (kw= '-' )? this_NUMBER_1= RULE_NUMBER ) ;
    public final Boolean ruleSignedNumber() throws RecognitionException {
        Boolean current = false;

        Token kw=null;
        Token this_NUMBER_1=null;

        try {
            // PsiInternalMickeyLang.g:6482:1: ( ( (kw= '-' )? this_NUMBER_1= RULE_NUMBER ) )
            // PsiInternalMickeyLang.g:6483:2: ( (kw= '-' )? this_NUMBER_1= RULE_NUMBER )
            {
            // PsiInternalMickeyLang.g:6483:2: ( (kw= '-' )? this_NUMBER_1= RULE_NUMBER )
            // PsiInternalMickeyLang.g:6484:3: (kw= '-' )? this_NUMBER_1= RULE_NUMBER
            {
            // PsiInternalMickeyLang.g:6484:3: (kw= '-' )?
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==34) ) {
                alt118=1;
            }
            switch (alt118) {
                case 1 :
                    // PsiInternalMickeyLang.g:6485:4: kw= '-'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSignedNumber_HyphenMinusKeyword_0ElementType());
                      			
                    }
                    kw=(Token)match(input,34,FOLLOW_107); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(kw);
                      			
                    }

                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getSignedNumber_NUMBERTerminalRuleCall_1ElementType());
              		
            }
            this_NUMBER_1=(Token)match(input,RULE_NUMBER,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(this_NUMBER_1);
              		
            }

            }


            }

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


    // $ANTLR start "entryRuleQualifiedName"
    // PsiInternalMickeyLang.g:6504:1: entryRuleQualifiedName returns [Boolean current=false] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final Boolean entryRuleQualifiedName() throws RecognitionException {
        Boolean current = false;

        Boolean iv_ruleQualifiedName = null;


        try {
            // PsiInternalMickeyLang.g:6504:55: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // PsiInternalMickeyLang.g:6505:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               markComposite(elementTypeProvider.getQualifiedNameElementType()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

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


    // $ANTLR start "ruleQualifiedName"
    // PsiInternalMickeyLang.g:6511:1: ruleQualifiedName returns [Boolean current=false] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final Boolean ruleQualifiedName() throws RecognitionException {
        Boolean current = false;

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

        try {
            // PsiInternalMickeyLang.g:6512:1: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // PsiInternalMickeyLang.g:6513:2: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // PsiInternalMickeyLang.g:6513:2: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // PsiInternalMickeyLang.g:6514:3: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            if ( state.backtracking==0 ) {

              			markLeaf(elementTypeProvider.getQualifiedName_IDTerminalRuleCall_0ElementType());
              		
            }
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_108); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			doneLeaf(this_ID_0);
              		
            }
            // PsiInternalMickeyLang.g:6521:3: (kw= '.' this_ID_2= RULE_ID )*
            loop119:
            do {
                int alt119=2;
                int LA119_0 = input.LA(1);

                if ( (LA119_0==61) ) {
                    alt119=1;
                }


                switch (alt119) {
            	case 1 :
            	    // PsiInternalMickeyLang.g:6522:4: kw= '.' this_ID_2= RULE_ID
            	    {
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getQualifiedName_FullStopKeyword_1_0ElementType());
            	      			
            	    }
            	    kw=(Token)match(input,61,FOLLOW_3); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(kw);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				markLeaf(elementTypeProvider.getQualifiedName_IDTerminalRuleCall_1_1ElementType());
            	      			
            	    }
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_108); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      				doneLeaf(this_ID_2);
            	      			
            	    }

            	    }
            	    break;

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


            }


            }

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


    // $ANTLR start "ruleCompoundOperator"
    // PsiInternalMickeyLang.g:6541:1: ruleCompoundOperator returns [Boolean current=false] : ( (enumLiteral_0= 'union all' ) | (enumLiteral_1= 'union' ) | (enumLiteral_2= 'intersect' ) | (enumLiteral_3= 'except' ) ) ;
    public final Boolean ruleCompoundOperator() throws RecognitionException {
        Boolean current = false;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;

        try {
            // PsiInternalMickeyLang.g:6542:1: ( ( (enumLiteral_0= 'union all' ) | (enumLiteral_1= 'union' ) | (enumLiteral_2= 'intersect' ) | (enumLiteral_3= 'except' ) ) )
            // PsiInternalMickeyLang.g:6543:2: ( (enumLiteral_0= 'union all' ) | (enumLiteral_1= 'union' ) | (enumLiteral_2= 'intersect' ) | (enumLiteral_3= 'except' ) )
            {
            // PsiInternalMickeyLang.g:6543:2: ( (enumLiteral_0= 'union all' ) | (enumLiteral_1= 'union' ) | (enumLiteral_2= 'intersect' ) | (enumLiteral_3= 'except' ) )
            int alt120=4;
            switch ( input.LA(1) ) {
            case 124:
                {
                alt120=1;
                }
                break;
            case 125:
                {
                alt120=2;
                }
                break;
            case 126:
                {
                alt120=3;
                }
                break;
            case 127:
                {
                alt120=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 120, 0, input);

                throw nvae;
            }

            switch (alt120) {
                case 1 :
                    // PsiInternalMickeyLang.g:6544:3: (enumLiteral_0= 'union all' )
                    {
                    // PsiInternalMickeyLang.g:6544:3: (enumLiteral_0= 'union all' )
                    // PsiInternalMickeyLang.g:6545:4: enumLiteral_0= 'union all'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCompoundOperator_UnionallEnumLiteralDeclaration_0ElementType());
                      			
                    }
                    enumLiteral_0=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_0);
                      			
                    }

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6554:3: (enumLiteral_1= 'union' )
                    {
                    // PsiInternalMickeyLang.g:6554:3: (enumLiteral_1= 'union' )
                    // PsiInternalMickeyLang.g:6555:4: enumLiteral_1= 'union'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCompoundOperator_UnionEnumLiteralDeclaration_1ElementType());
                      			
                    }
                    enumLiteral_1=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_1);
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:6564:3: (enumLiteral_2= 'intersect' )
                    {
                    // PsiInternalMickeyLang.g:6564:3: (enumLiteral_2= 'intersect' )
                    // PsiInternalMickeyLang.g:6565:4: enumLiteral_2= 'intersect'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCompoundOperator_IntersectEnumLiteralDeclaration_2ElementType());
                      			
                    }
                    enumLiteral_2=(Token)match(input,126,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_2);
                      			
                    }

                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:6574:3: (enumLiteral_3= 'except' )
                    {
                    // PsiInternalMickeyLang.g:6574:3: (enumLiteral_3= 'except' )
                    // PsiInternalMickeyLang.g:6575:4: enumLiteral_3= 'except'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getCompoundOperator_ExceptEnumLiteralDeclaration_3ElementType());
                      			
                    }
                    enumLiteral_3=(Token)match(input,127,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_3);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "ruleSqliteDataType"
    // PsiInternalMickeyLang.g:6587:1: ruleSqliteDataType returns [Boolean current=false] : ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'none' ) | (enumLiteral_5= 'numeric' ) ) ;
    public final Boolean ruleSqliteDataType() throws RecognitionException {
        Boolean current = false;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;

        try {
            // PsiInternalMickeyLang.g:6588:1: ( ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'none' ) | (enumLiteral_5= 'numeric' ) ) )
            // PsiInternalMickeyLang.g:6589:2: ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'none' ) | (enumLiteral_5= 'numeric' ) )
            {
            // PsiInternalMickeyLang.g:6589:2: ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'none' ) | (enumLiteral_5= 'numeric' ) )
            int alt121=6;
            switch ( input.LA(1) ) {
            case 128:
                {
                alt121=1;
                }
                break;
            case 129:
                {
                alt121=2;
                }
                break;
            case 130:
                {
                alt121=3;
                }
                break;
            case 131:
                {
                alt121=4;
                }
                break;
            case 132:
                {
                alt121=5;
                }
                break;
            case 133:
                {
                alt121=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 121, 0, input);

                throw nvae;
            }

            switch (alt121) {
                case 1 :
                    // PsiInternalMickeyLang.g:6590:3: (enumLiteral_0= 'text' )
                    {
                    // PsiInternalMickeyLang.g:6590:3: (enumLiteral_0= 'text' )
                    // PsiInternalMickeyLang.g:6591:4: enumLiteral_0= 'text'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_TextEnumLiteralDeclaration_0ElementType());
                      			
                    }
                    enumLiteral_0=(Token)match(input,128,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_0);
                      			
                    }

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6600:3: (enumLiteral_1= 'integer' )
                    {
                    // PsiInternalMickeyLang.g:6600:3: (enumLiteral_1= 'integer' )
                    // PsiInternalMickeyLang.g:6601:4: enumLiteral_1= 'integer'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_IntegerEnumLiteralDeclaration_1ElementType());
                      			
                    }
                    enumLiteral_1=(Token)match(input,129,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_1);
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:6610:3: (enumLiteral_2= 'real' )
                    {
                    // PsiInternalMickeyLang.g:6610:3: (enumLiteral_2= 'real' )
                    // PsiInternalMickeyLang.g:6611:4: enumLiteral_2= 'real'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_RealEnumLiteralDeclaration_2ElementType());
                      			
                    }
                    enumLiteral_2=(Token)match(input,130,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_2);
                      			
                    }

                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:6620:3: (enumLiteral_3= 'blob' )
                    {
                    // PsiInternalMickeyLang.g:6620:3: (enumLiteral_3= 'blob' )
                    // PsiInternalMickeyLang.g:6621:4: enumLiteral_3= 'blob'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_BlobEnumLiteralDeclaration_3ElementType());
                      			
                    }
                    enumLiteral_3=(Token)match(input,131,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_3);
                      			
                    }

                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:6630:3: (enumLiteral_4= 'none' )
                    {
                    // PsiInternalMickeyLang.g:6630:3: (enumLiteral_4= 'none' )
                    // PsiInternalMickeyLang.g:6631:4: enumLiteral_4= 'none'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_NoneEnumLiteralDeclaration_4ElementType());
                      			
                    }
                    enumLiteral_4=(Token)match(input,132,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_4);
                      			
                    }

                    }


                    }
                    break;
                case 6 :
                    // PsiInternalMickeyLang.g:6640:3: (enumLiteral_5= 'numeric' )
                    {
                    // PsiInternalMickeyLang.g:6640:3: (enumLiteral_5= 'numeric' )
                    // PsiInternalMickeyLang.g:6641:4: enumLiteral_5= 'numeric'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getSqliteDataType_NumericEnumLiteralDeclaration_5ElementType());
                      			
                    }
                    enumLiteral_5=(Token)match(input,133,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_5);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "ruleColumnType"
    // PsiInternalMickeyLang.g:6653:1: ruleColumnType returns [Boolean current=false] : ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'boolean' ) ) ;
    public final Boolean ruleColumnType() throws RecognitionException {
        Boolean current = false;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;

        try {
            // PsiInternalMickeyLang.g:6654:1: ( ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'boolean' ) ) )
            // PsiInternalMickeyLang.g:6655:2: ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'boolean' ) )
            {
            // PsiInternalMickeyLang.g:6655:2: ( (enumLiteral_0= 'text' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'real' ) | (enumLiteral_3= 'blob' ) | (enumLiteral_4= 'boolean' ) )
            int alt122=5;
            switch ( input.LA(1) ) {
            case 128:
                {
                alt122=1;
                }
                break;
            case 129:
                {
                alt122=2;
                }
                break;
            case 130:
                {
                alt122=3;
                }
                break;
            case 131:
                {
                alt122=4;
                }
                break;
            case 134:
                {
                alt122=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 122, 0, input);

                throw nvae;
            }

            switch (alt122) {
                case 1 :
                    // PsiInternalMickeyLang.g:6656:3: (enumLiteral_0= 'text' )
                    {
                    // PsiInternalMickeyLang.g:6656:3: (enumLiteral_0= 'text' )
                    // PsiInternalMickeyLang.g:6657:4: enumLiteral_0= 'text'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnType_TextEnumLiteralDeclaration_0ElementType());
                      			
                    }
                    enumLiteral_0=(Token)match(input,128,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_0);
                      			
                    }

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6666:3: (enumLiteral_1= 'integer' )
                    {
                    // PsiInternalMickeyLang.g:6666:3: (enumLiteral_1= 'integer' )
                    // PsiInternalMickeyLang.g:6667:4: enumLiteral_1= 'integer'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnType_IntegerEnumLiteralDeclaration_1ElementType());
                      			
                    }
                    enumLiteral_1=(Token)match(input,129,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_1);
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:6676:3: (enumLiteral_2= 'real' )
                    {
                    // PsiInternalMickeyLang.g:6676:3: (enumLiteral_2= 'real' )
                    // PsiInternalMickeyLang.g:6677:4: enumLiteral_2= 'real'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnType_RealEnumLiteralDeclaration_2ElementType());
                      			
                    }
                    enumLiteral_2=(Token)match(input,130,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_2);
                      			
                    }

                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:6686:3: (enumLiteral_3= 'blob' )
                    {
                    // PsiInternalMickeyLang.g:6686:3: (enumLiteral_3= 'blob' )
                    // PsiInternalMickeyLang.g:6687:4: enumLiteral_3= 'blob'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnType_BlobEnumLiteralDeclaration_3ElementType());
                      			
                    }
                    enumLiteral_3=(Token)match(input,131,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_3);
                      			
                    }

                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:6696:3: (enumLiteral_4= 'boolean' )
                    {
                    // PsiInternalMickeyLang.g:6696:3: (enumLiteral_4= 'boolean' )
                    // PsiInternalMickeyLang.g:6697:4: enumLiteral_4= 'boolean'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getColumnType_BooleanEnumLiteralDeclaration_4ElementType());
                      			
                    }
                    enumLiteral_4=(Token)match(input,134,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_4);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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


    // $ANTLR start "ruleConflictResolution"
    // PsiInternalMickeyLang.g:6709:1: ruleConflictResolution returns [Boolean current=false] : ( (enumLiteral_0= 'rollback' ) | (enumLiteral_1= 'abort' ) | (enumLiteral_2= 'fail' ) | (enumLiteral_3= 'ignore' ) | (enumLiteral_4= 'replace' ) ) ;
    public final Boolean ruleConflictResolution() throws RecognitionException {
        Boolean current = false;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;

        try {
            // PsiInternalMickeyLang.g:6710:1: ( ( (enumLiteral_0= 'rollback' ) | (enumLiteral_1= 'abort' ) | (enumLiteral_2= 'fail' ) | (enumLiteral_3= 'ignore' ) | (enumLiteral_4= 'replace' ) ) )
            // PsiInternalMickeyLang.g:6711:2: ( (enumLiteral_0= 'rollback' ) | (enumLiteral_1= 'abort' ) | (enumLiteral_2= 'fail' ) | (enumLiteral_3= 'ignore' ) | (enumLiteral_4= 'replace' ) )
            {
            // PsiInternalMickeyLang.g:6711:2: ( (enumLiteral_0= 'rollback' ) | (enumLiteral_1= 'abort' ) | (enumLiteral_2= 'fail' ) | (enumLiteral_3= 'ignore' ) | (enumLiteral_4= 'replace' ) )
            int alt123=5;
            switch ( input.LA(1) ) {
            case 135:
                {
                alt123=1;
                }
                break;
            case 136:
                {
                alt123=2;
                }
                break;
            case 137:
                {
                alt123=3;
                }
                break;
            case 138:
                {
                alt123=4;
                }
                break;
            case 120:
                {
                alt123=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;
            }

            switch (alt123) {
                case 1 :
                    // PsiInternalMickeyLang.g:6712:3: (enumLiteral_0= 'rollback' )
                    {
                    // PsiInternalMickeyLang.g:6712:3: (enumLiteral_0= 'rollback' )
                    // PsiInternalMickeyLang.g:6713:4: enumLiteral_0= 'rollback'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getConflictResolution_RollbackEnumLiteralDeclaration_0ElementType());
                      			
                    }
                    enumLiteral_0=(Token)match(input,135,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_0);
                      			
                    }

                    }


                    }
                    break;
                case 2 :
                    // PsiInternalMickeyLang.g:6722:3: (enumLiteral_1= 'abort' )
                    {
                    // PsiInternalMickeyLang.g:6722:3: (enumLiteral_1= 'abort' )
                    // PsiInternalMickeyLang.g:6723:4: enumLiteral_1= 'abort'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getConflictResolution_AbortEnumLiteralDeclaration_1ElementType());
                      			
                    }
                    enumLiteral_1=(Token)match(input,136,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_1);
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // PsiInternalMickeyLang.g:6732:3: (enumLiteral_2= 'fail' )
                    {
                    // PsiInternalMickeyLang.g:6732:3: (enumLiteral_2= 'fail' )
                    // PsiInternalMickeyLang.g:6733:4: enumLiteral_2= 'fail'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getConflictResolution_FailEnumLiteralDeclaration_2ElementType());
                      			
                    }
                    enumLiteral_2=(Token)match(input,137,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_2);
                      			
                    }

                    }


                    }
                    break;
                case 4 :
                    // PsiInternalMickeyLang.g:6742:3: (enumLiteral_3= 'ignore' )
                    {
                    // PsiInternalMickeyLang.g:6742:3: (enumLiteral_3= 'ignore' )
                    // PsiInternalMickeyLang.g:6743:4: enumLiteral_3= 'ignore'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getConflictResolution_IgnoreEnumLiteralDeclaration_3ElementType());
                      			
                    }
                    enumLiteral_3=(Token)match(input,138,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_3);
                      			
                    }

                    }


                    }
                    break;
                case 5 :
                    // PsiInternalMickeyLang.g:6752:3: (enumLiteral_4= 'replace' )
                    {
                    // PsiInternalMickeyLang.g:6752:3: (enumLiteral_4= 'replace' )
                    // PsiInternalMickeyLang.g:6753:4: enumLiteral_4= 'replace'
                    {
                    if ( state.backtracking==0 ) {

                      				markLeaf(elementTypeProvider.getConflictResolution_ReplaceEnumLiteralDeclaration_4ElementType());
                      			
                    }
                    enumLiteral_4=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				doneLeaf(enumLiteral_4);
                      			
                    }

                    }


                    }
                    break;

            }


            }

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

    // $ANTLR start synpred1_PsiInternalMickeyLang
    public final void synpred1_PsiInternalMickeyLang_fragment() throws RecognitionException {   
        // PsiInternalMickeyLang.g:1965:7: ( ( RULE_ID ) )
        // PsiInternalMickeyLang.g:1965:8: ( RULE_ID )
        {
        // PsiInternalMickeyLang.g:1965:8: ( RULE_ID )
        // PsiInternalMickeyLang.g:1966:8: RULE_ID
        {
        match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred1_PsiInternalMickeyLang

    // Delegated rules

    public final boolean synpred1_PsiInternalMickeyLang() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_PsiInternalMickeyLang_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 DFA45 dfa45 = new DFA45(this);
    protected DFA37 dfa37 = new DFA37(this);
    protected DFA70 dfa70 = new DFA70(this);
    static final String dfa_1s = "\15\uffff";
    static final String dfa_2s = "\3\uffff\1\12\11\uffff";
    static final String dfa_3s = "\1\4\2\uffff\1\15\1\uffff\1\4\7\uffff";
    static final String dfa_4s = "\1\134\2\uffff\1\177\1\uffff\1\134\7\uffff";
    static final String dfa_5s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\uffff\1\6\1\7\1\11\1\12\1\3\1\10\1\5";
    static final String dfa_6s = "\15\uffff}>";
    static final String[] dfa_7s = {
            "\1\3\2\4\7\uffff\1\5\23\uffff\1\4\30\uffff\1\1\1\2\1\uffff\2\6\1\7\2\uffff\1\10\1\uffff\1\11\23\uffff\4\4",
            "",
            "",
            "\1\12\1\13\2\12\2\uffff\1\12\1\uffff\1\12\3\uffff\1\12\1\uffff\40\12\2\uffff\1\12\3\uffff\2\12\1\uffff\1\12\1\uffff\5\12\3\uffff\7\12\1\uffff\3\12\4\uffff\1\12\14\uffff\2\12\2\uffff\1\12\15\uffff\4\12",
            "",
            "\3\14\7\uffff\1\14\23\uffff\1\14\30\uffff\2\14\1\uffff\3\14\2\uffff\1\14\1\uffff\1\14\5\uffff\1\6\15\uffff\4\14",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);

    class DFA45 extends DFA {

        public DFA45(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 45;
            this.eot = dfa_1;
            this.eof = dfa_2;
            this.min = dfa_3;
            this.max = dfa_4;
            this.accept = dfa_5;
            this.special = dfa_6;
            this.transition = dfa_7;
        }
        public String getDescription() {
            return "1885:2: ( ( () otherlv_1= 'new.' ( (otherlv_2= RULE_ID ) ) ) | ( () otherlv_4= 'old.' ( (otherlv_5= RULE_ID ) ) ) | ( () ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) ) ) | ( () ( (lv_literalValue_15_0= ruleLiteralValue ) ) ) | ( () otherlv_17= '(' ( (lv_expression_18_0= ruleSqlExpression ) ) otherlv_19= ')' ) | ( () ( (lv_not_21_0= 'not' ) )? ( (lv_exists_22_0= 'exists' ) )? otherlv_23= '(' ( (lv_select_24_0= ruleSelectStatement ) ) otherlv_25= ')' ) | ( () otherlv_27= 'case' ( (lv_caseExpression_28_0= ruleSqlExpression ) )? ( (lv_cases_29_0= ruleCase ) )+ (otherlv_30= 'else' ( (lv_elseExpression_31_0= ruleSqlExpression ) ) )? otherlv_32= 'end' ) | ( () ( (lv_name_34_0= RULE_ID ) ) otherlv_35= '(' ( ( (lv_all_36_0= '*' ) ) | ( ( (lv_arguments_37_0= ruleSqlExpression ) ) (otherlv_38= ',' ( (lv_arguments_39_0= ruleSqlExpression ) ) )* ) ) otherlv_40= ')' ) | ( () otherlv_42= 'cast' otherlv_43= '(' ( (lv_expression_44_0= ruleSqlExpression ) ) otherlv_45= 'as' ( (lv_type_46_0= ruleSqliteDataType ) ) otherlv_47= ')' ) | ( () otherlv_49= '$' ( (otherlv_50= RULE_ID ) ) ) )";
        }
    }
    static final String dfa_8s = "\127\uffff";
    static final String dfa_9s = "\1\uffff\1\2\1\uffff\1\43\33\uffff\1\105\67\uffff";
    static final String dfa_10s = "\1\4\1\15\1\uffff\1\4\33\uffff\1\4\51\uffff\1\4\14\uffff\1\0";
    static final String dfa_11s = "\1\4\1\177\1\uffff\1\177\33\uffff\1\177\51\uffff\1\134\14\uffff\1\0";
    static final String dfa_12s = "\2\uffff\1\3\1\uffff\33\1\1\uffff\45\1\1\2\3\1\1\uffff\14\1\1\uffff";
    static final String dfa_13s = "\3\uffff\1\0\33\uffff\1\1\66\uffff\1\2}>";
    static final String[] dfa_14s = {
            "\1\1",
            "\1\2\1\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\1\2\1\uffff\40\2\2\uffff\1\3\3\uffff\2\2\1\uffff\1\2\1\uffff\5\2\3\uffff\7\2\1\uffff\3\2\4\uffff\1\2\14\uffff\2\2\2\uffff\1\2\15\uffff\4\2",
            "",
            "\1\105\10\uffff\1\54\1\uffff\1\47\1\44\2\uffff\1\62\1\uffff\1\55\3\uffff\1\40\1\uffff\1\21\1\61\1\103\1\42\1\37\1\41\1\35\1\36\1\31\1\32\1\33\1\34\1\25\1\26\1\27\1\30\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\22\1\23\1\24\1\10\1\7\1\4\1\5\1\6\6\uffff\1\52\1\46\1\uffff\1\50\1\uffff\1\45\1\51\1\71\1\72\1\53\3\uffff\1\75\1\63\1\64\1\73\1\74\1\76\1\77\1\uffff\1\100\1\101\1\102\4\uffff\1\56\14\uffff\1\104\1\57\2\uffff\1\60\15\uffff\1\65\1\66\1\67\1\70",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\110\1\113\1\112\6\uffff\1\105\1\120\2\105\2\uffff\1\105\1\uffff\1\105\3\uffff\1\105\1\uffff\7\105\1\111\30\105\1\106\1\107\1\uffff\1\121\1\122\1\123\2\105\1\124\1\105\1\125\5\105\3\uffff\7\105\1\uffff\3\105\1\114\1\115\1\116\1\117\1\105\14\uffff\2\105\2\uffff\1\105\15\uffff\4\105",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\2\105\1\126\7\uffff\1\105\23\uffff\1\105\30\uffff\2\105\1\uffff\3\105\2\uffff\1\105\1\uffff\1\105\23\uffff\4\105",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff"
    };

    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
    static final short[] dfa_9 = DFA.unpackEncodedString(dfa_9s);
    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
    static final char[] dfa_11 = DFA.unpackEncodedStringToUnsignedChars(dfa_11s);
    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
    static final short[] dfa_13 = DFA.unpackEncodedString(dfa_13s);
    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);

    class DFA37 extends DFA {

        public DFA37(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 37;
            this.eot = dfa_8;
            this.eof = dfa_9;
            this.min = dfa_10;
            this.max = dfa_11;
            this.accept = dfa_12;
            this.special = dfa_13;
            this.transition = dfa_14;
        }
        public String getDescription() {
            return "1962:4: ( ( ( ( ( RULE_ID ) )=> (otherlv_7= RULE_ID ) ) otherlv_8= '.' ) | ( ( (otherlv_9= RULE_ID ) ) otherlv_10= '.' ( ( (lv_all_11_0= '*' ) ) | ( (otherlv_12= RULE_ID ) ) ) ) | ( (otherlv_13= RULE_ID ) ) )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA37_3 = input.LA(1);

                         
                        int index37_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA37_3==56) && (synpred1_PsiInternalMickeyLang())) {s = 4;}

                        else if ( (LA37_3==57) && (synpred1_PsiInternalMickeyLang())) {s = 5;}

                        else if ( (LA37_3==58) && (synpred1_PsiInternalMickeyLang())) {s = 6;}

                        else if ( (LA37_3==55) && (synpred1_PsiInternalMickeyLang())) {s = 7;}

                        else if ( (LA37_3==54) && (synpred1_PsiInternalMickeyLang())) {s = 8;}

                        else if ( (LA37_3==43) && (synpred1_PsiInternalMickeyLang())) {s = 9;}

                        else if ( (LA37_3==44) && (synpred1_PsiInternalMickeyLang())) {s = 10;}

                        else if ( (LA37_3==45) && (synpred1_PsiInternalMickeyLang())) {s = 11;}

                        else if ( (LA37_3==46) && (synpred1_PsiInternalMickeyLang())) {s = 12;}

                        else if ( (LA37_3==47) && (synpred1_PsiInternalMickeyLang())) {s = 13;}

                        else if ( (LA37_3==48) && (synpred1_PsiInternalMickeyLang())) {s = 14;}

                        else if ( (LA37_3==49) && (synpred1_PsiInternalMickeyLang())) {s = 15;}

                        else if ( (LA37_3==50) && (synpred1_PsiInternalMickeyLang())) {s = 16;}

                        else if ( (LA37_3==27) && (synpred1_PsiInternalMickeyLang())) {s = 17;}

                        else if ( (LA37_3==51) && (synpred1_PsiInternalMickeyLang())) {s = 18;}

                        else if ( (LA37_3==52) && (synpred1_PsiInternalMickeyLang())) {s = 19;}

                        else if ( (LA37_3==53) && (synpred1_PsiInternalMickeyLang())) {s = 20;}

                        else if ( (LA37_3==39) && (synpred1_PsiInternalMickeyLang())) {s = 21;}

                        else if ( (LA37_3==40) && (synpred1_PsiInternalMickeyLang())) {s = 22;}

                        else if ( (LA37_3==41) && (synpred1_PsiInternalMickeyLang())) {s = 23;}

                        else if ( (LA37_3==42) && (synpred1_PsiInternalMickeyLang())) {s = 24;}

                        else if ( (LA37_3==35) && (synpred1_PsiInternalMickeyLang())) {s = 25;}

                        else if ( (LA37_3==36) && (synpred1_PsiInternalMickeyLang())) {s = 26;}

                        else if ( (LA37_3==37) && (synpred1_PsiInternalMickeyLang())) {s = 27;}

                        else if ( (LA37_3==38) && (synpred1_PsiInternalMickeyLang())) {s = 28;}

                        else if ( (LA37_3==33) && (synpred1_PsiInternalMickeyLang())) {s = 29;}

                        else if ( (LA37_3==34) && (synpred1_PsiInternalMickeyLang())) {s = 30;}

                        else if ( (LA37_3==31) ) {s = 31;}

                        else if ( (LA37_3==25) && (synpred1_PsiInternalMickeyLang())) {s = 32;}

                        else if ( (LA37_3==32) && (synpred1_PsiInternalMickeyLang())) {s = 33;}

                        else if ( (LA37_3==30) && (synpred1_PsiInternalMickeyLang())) {s = 34;}

                        else if ( (LA37_3==EOF) && (synpred1_PsiInternalMickeyLang())) {s = 35;}

                        else if ( (LA37_3==16) && (synpred1_PsiInternalMickeyLang())) {s = 36;}

                        else if ( (LA37_3==70) && (synpred1_PsiInternalMickeyLang())) {s = 37;}

                        else if ( (LA37_3==66) && (synpred1_PsiInternalMickeyLang())) {s = 38;}

                        else if ( (LA37_3==15) && (synpred1_PsiInternalMickeyLang())) {s = 39;}

                        else if ( (LA37_3==68) && (synpred1_PsiInternalMickeyLang())) {s = 40;}

                        else if ( (LA37_3==71) && (synpred1_PsiInternalMickeyLang())) {s = 41;}

                        else if ( (LA37_3==65) && (synpred1_PsiInternalMickeyLang())) {s = 42;}

                        else if ( (LA37_3==74) && (synpred1_PsiInternalMickeyLang())) {s = 43;}

                        else if ( (LA37_3==13) && (synpred1_PsiInternalMickeyLang())) {s = 44;}

                        else if ( (LA37_3==21) && (synpred1_PsiInternalMickeyLang())) {s = 45;}

                        else if ( (LA37_3==93) && (synpred1_PsiInternalMickeyLang())) {s = 46;}

                        else if ( (LA37_3==107) && (synpred1_PsiInternalMickeyLang())) {s = 47;}

                        else if ( (LA37_3==110) && (synpred1_PsiInternalMickeyLang())) {s = 48;}

                        else if ( (LA37_3==28) && (synpred1_PsiInternalMickeyLang())) {s = 49;}

                        else if ( (LA37_3==19) && (synpred1_PsiInternalMickeyLang())) {s = 50;}

                        else if ( (LA37_3==79) && (synpred1_PsiInternalMickeyLang())) {s = 51;}

                        else if ( (LA37_3==80) && (synpred1_PsiInternalMickeyLang())) {s = 52;}

                        else if ( (LA37_3==124) && (synpred1_PsiInternalMickeyLang())) {s = 53;}

                        else if ( (LA37_3==125) && (synpred1_PsiInternalMickeyLang())) {s = 54;}

                        else if ( (LA37_3==126) && (synpred1_PsiInternalMickeyLang())) {s = 55;}

                        else if ( (LA37_3==127) && (synpred1_PsiInternalMickeyLang())) {s = 56;}

                        else if ( (LA37_3==72) && (synpred1_PsiInternalMickeyLang())) {s = 57;}

                        else if ( (LA37_3==73) && (synpred1_PsiInternalMickeyLang())) {s = 58;}

                        else if ( (LA37_3==81) && (synpred1_PsiInternalMickeyLang())) {s = 59;}

                        else if ( (LA37_3==82) && (synpred1_PsiInternalMickeyLang())) {s = 60;}

                        else if ( (LA37_3==78) && (synpred1_PsiInternalMickeyLang())) {s = 61;}

                        else if ( (LA37_3==83) && (synpred1_PsiInternalMickeyLang())) {s = 62;}

                        else if ( (LA37_3==84) && (synpred1_PsiInternalMickeyLang())) {s = 63;}

                        else if ( (LA37_3==86) && (synpred1_PsiInternalMickeyLang())) {s = 64;}

                        else if ( (LA37_3==87) && (synpred1_PsiInternalMickeyLang())) {s = 65;}

                        else if ( (LA37_3==88) && (synpred1_PsiInternalMickeyLang())) {s = 66;}

                        else if ( (LA37_3==29) && (synpred1_PsiInternalMickeyLang())) {s = 67;}

                        else if ( (LA37_3==106) && (synpred1_PsiInternalMickeyLang())) {s = 68;}

                        else if ( (LA37_3==RULE_ID) ) {s = 69;}

                         
                        input.seek(index37_3);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA37_31 = input.LA(1);

                         
                        int index37_31 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA37_31==59) && (synpred1_PsiInternalMickeyLang())) {s = 70;}

                        else if ( (LA37_31==60) && (synpred1_PsiInternalMickeyLang())) {s = 71;}

                        else if ( (LA37_31==RULE_ID) && (synpred1_PsiInternalMickeyLang())) {s = 72;}

                        else if ( (LA37_31==34) ) {s = 73;}

                        else if ( (LA37_31==RULE_NUMBER) && (synpred1_PsiInternalMickeyLang())) {s = 74;}

                        else if ( (LA37_31==RULE_STRING) && (synpred1_PsiInternalMickeyLang())) {s = 75;}

                        else if ( (LA37_31==89) && (synpred1_PsiInternalMickeyLang())) {s = 76;}

                        else if ( (LA37_31==90) && (synpred1_PsiInternalMickeyLang())) {s = 77;}

                        else if ( (LA37_31==91) && (synpred1_PsiInternalMickeyLang())) {s = 78;}

                        else if ( (LA37_31==92) && (synpred1_PsiInternalMickeyLang())) {s = 79;}

                        else if ( (LA37_31==14) && (synpred1_PsiInternalMickeyLang())) {s = 80;}

                        else if ( (LA37_31==62) && (synpred1_PsiInternalMickeyLang())) {s = 81;}

                        else if ( (LA37_31==63) && (synpred1_PsiInternalMickeyLang())) {s = 82;}

                        else if ( (LA37_31==64) && (synpred1_PsiInternalMickeyLang())) {s = 83;}

                        else if ( (LA37_31==67) && (synpred1_PsiInternalMickeyLang())) {s = 84;}

                        else if ( (LA37_31==69) && (synpred1_PsiInternalMickeyLang())) {s = 85;}

                        else if ( (LA37_31==EOF||LA37_31==13||(LA37_31>=15 && LA37_31<=16)||LA37_31==19||LA37_31==21||LA37_31==25||(LA37_31>=27 && LA37_31<=33)||(LA37_31>=35 && LA37_31<=58)||(LA37_31>=65 && LA37_31<=66)||LA37_31==68||(LA37_31>=70 && LA37_31<=74)||(LA37_31>=78 && LA37_31<=84)||(LA37_31>=86 && LA37_31<=88)||LA37_31==93||(LA37_31>=106 && LA37_31<=107)||LA37_31==110||(LA37_31>=124 && LA37_31<=127)) ) {s = 69;}

                         
                        input.seek(index37_31);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA37_86 = input.LA(1);

                         
                        int index37_86 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred1_PsiInternalMickeyLang()) ) {s = 85;}

                        else if ( (true) ) {s = 69;}

                         
                        input.seek(index37_86);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 37, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_15s = "\21\uffff";
    static final String dfa_16s = "\1\135\1\27\3\137\4\uffff\1\4\4\uffff\1\154\2\uffff";
    static final String dfa_17s = "\1\156\1\160\1\137\1\160\1\141\4\uffff\1\4\4\uffff\1\155\2\uffff";
    static final String dfa_18s = "\5\uffff\1\3\1\1\1\2\1\4\1\uffff\1\11\1\7\1\12\1\10\1\uffff\1\6\1\5";
    static final String dfa_19s = "\21\uffff}>";
    static final String[] dfa_20s = {
            "\1\1\15\uffff\1\2\2\uffff\1\3",
            "\1\10\106\uffff\1\4\1\6\1\7\1\5\16\uffff\1\10",
            "\1\11",
            "\1\13\1\12\1\15\16\uffff\1\14",
            "\1\6\1\7\1\5",
            "",
            "",
            "",
            "",
            "\1\16",
            "",
            "",
            "",
            "",
            "\1\20\1\17",
            "",
            ""
    };

    static final short[] dfa_15 = DFA.unpackEncodedString(dfa_15s);
    static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
    static final char[] dfa_17 = DFA.unpackEncodedStringToUnsignedChars(dfa_17s);
    static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
    static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
    static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);

    class DFA70 extends DFA {

        public DFA70(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 70;
            this.eot = dfa_15;
            this.eof = dfa_15;
            this.min = dfa_16;
            this.max = dfa_17;
            this.accept = dfa_18;
            this.special = dfa_19;
            this.transition = dfa_20;
        }
        public String getDescription() {
            return "3872:2: (this_CreateTableStatement_0= ruleCreateTableStatement | this_CreateViewStatement_1= ruleCreateViewStatement | this_CreateTriggerStatement_2= ruleCreateTriggerStatement | this_CreateIndexStatement_3= ruleCreateIndexStatement | this_AlterTableRenameStatement_4= ruleAlterTableRenameStatement | this_AlterTableAddColumnStatement_5= ruleAlterTableAddColumnStatement | this_DropTableStatement_6= ruleDropTableStatement | this_DropTriggerStatement_7= ruleDropTriggerStatement | this_DropViewStatement_8= ruleDropViewStatement | this_DropIndexStatement_9= ruleDropIndexStatement )";
        }
    }
 

    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000010202002L,0x0000480020000000L});
    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x000000000000004FL});
    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000000000000004FL});
    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000100000L,0x010000E000000800L});
    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000002440010L});
    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000840002L});
    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000005100000L});
    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000001100000L});
    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000002040010L});
    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000040010L});
    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000008000010L});
    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000020040000L});
    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000100000L,0x0000480020000000L});
    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0xD800000400004070L,0x000000001E000029L});
    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000182000002L});
    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000600000002L});
    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000007800000002L});
    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000078000000002L});
    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x003FF80008000002L});
    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0080000000000002L});
    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0700000000000002L});
    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000080000010L});
    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x8000000000004000L});
    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0xD800000400004070L,0x000000001E000069L});
    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0xD800000400004070L,0x000000001E00006FL});
    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0xD800000480004070L,0x000000001E000029L});
    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000000000000003FL});
    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000300L});
    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000008002L,0x0000000000000400L});
    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0xF000000000000000L});
    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0xD800000480004070L,0x000000001E003029L});
    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000020000002L,0x000000000001C000L});
    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000004010L});
    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000002L,0x000000000001C000L});
    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000002L,0x0000000000018000L});
    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000002L,0x0000000001D80000L});
    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000000L,0x0000000001D00000L});
    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000000L,0x0000000001200000L});
    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x00000000C0000000L});
    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000800000L,0x0032000000000000L});
    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000000000000L,0x0000000140000000L});
    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000000000L,0x0000000240000000L});
    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000000000000L,0x000000FC00000000L});
    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000000L,0x000000E000000000L});
    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000000400000L,0x0000010000000000L});
    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000408000L});
    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000040L});
    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000040L});
    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000000L,0x010000E000000804L});
    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000010L,0x0000800000000000L});
    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000800000L,0x0001000000000000L});
    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0200000000800002L,0x001A000000000000L});
    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000000000002L,0x0004000000060000L});
    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000400004060L,0x000000001E000000L});
    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000002L,0x0040000000060000L});
    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L,0x0000000000000780L});
    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0080000000000000L,0x0200000000000000L});
    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000004000L,0x0408000000000800L});
    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0408000000000800L});
    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0080000000000010L});
    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000008002L,0x0000000000004000L});
    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x2000000000000002L});

}