/*******************************************************************************
 * Copyright (c) 2015, 2016 CNRS, IRIT, IRT AESE (IRT Saint Exupéry).
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the LGPL 3.0
 * which accompanies this distribution, and is available at
 * https://www.gnu.org/licenses/lgpl-3.0-standalone.html
 *
 * Contributors:
 *      Faiez Zalila - initial API and implementation and/or initial documentation
 *******************************************************************************/
package fr.irit.fiacre.xtext.ide.contentassist.antlr.internal;

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
import fr.irit.fiacre.xtext.services.FiacreGrammarAccess;



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 InternalFiacreParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_FLT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'none'", "'sync'", "'+'", "'->'", "'>'", "'|'", "'#include'", "'function'", "':'", "'is'", "'('", "')'", "','", "'var'", "'type'", "'channel'", "'array'", "'of'", "'#'", "'nat'", "'int'", "'bool'", "'..'", "'union'", "'end'", "'record'", "'queue'", "'const'", "'process'", "'states'", "'['", "']'", "'port'", "'priority'", "'init'", "'from'", "'component'", "'in'", "':='", "'unless'", "'[]'", "';'", "'begin'", "'return'", "'null'", "'any'", "'where'", "'!'", "'?'", "'.'", "'if'", "'then'", "'else'", "'elsif'", "'select'", "'while'", "'do'", "'foreach'", "'to'", "'case'", "'loop'", "'on'", "'wait'", "'par'", "'||'", "'all'", "'exists'", "'or'", "'=>'", "'and'", "'='", "'<>'", "'<'", "'<='", "'>='", "'-'", "'*'", "'/'", "'%'", "'not'", "'first'", "'length'", "'$'", "'full'", "'dequeue'", "'empty'", "'^'", "'&'", "'{'", "'}'", "'{|'", "'|}'", "'enqueue'", "'append'", "'true'", "'false'", "'...'", "'assert'", "'-true'", "'-false'", "'property'", "'ltl'", "'deadlockfree'", "'infinitelyoften'", "'mortal'", "'present'", "'lasting'", "'after'", "'within'", "'until'", "'before'", "'between'", "'absent'", "'for'", "'always'", "'leadsto'", "'precedes'", "'release'", "'next'", "'enter'", "'leave'", "'state'", "'value'", "'tag'", "'event'", "'out'", "'read'", "'write'"
    };
    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__139=139;
    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=6;
    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 RULE_FLT=7;
    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 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 InternalFiacreParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalFiacreParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

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


    	private FiacreGrammarAccess grammarAccess;

    	public void setGrammarAccess(FiacreGrammarAccess grammarAccess) {
    		this.grammarAccess = grammarAccess;
    	}

    	@Override
    	protected Grammar getGrammar() {
    		return grammarAccess.getGrammar();
    	}

    	@Override
    	protected String getValueForTokenName(String tokenName) {
    		return tokenName;
    	}



    // $ANTLR start "entryRuleModel"
    // InternalFiacre.g:54:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // InternalFiacre.g:55:1: ( ruleModel EOF )
            // InternalFiacre.g:56:1: ruleModel EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleModel();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleModel"
    // InternalFiacre.g:63:1: ruleModel : ( ( rule__Model__Group__0 ) ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:67:2: ( ( ( rule__Model__Group__0 ) ) )
            // InternalFiacre.g:68:2: ( ( rule__Model__Group__0 ) )
            {
            // InternalFiacre.g:68:2: ( ( rule__Model__Group__0 ) )
            // InternalFiacre.g:69:3: ( rule__Model__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getGroup()); 
            }
            // InternalFiacre.g:70:3: ( rule__Model__Group__0 )
            // InternalFiacre.g:70:4: rule__Model__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Model__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleRoot"
    // InternalFiacre.g:79:1: entryRuleRoot : ruleRoot EOF ;
    public final void entryRuleRoot() throws RecognitionException {
        try {
            // InternalFiacre.g:80:1: ( ruleRoot EOF )
            // InternalFiacre.g:81:1: ruleRoot EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRoot();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRoot"
    // InternalFiacre.g:88:1: ruleRoot : ( ( rule__Root__Group__0 ) ) ;
    public final void ruleRoot() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:92:2: ( ( ( rule__Root__Group__0 ) ) )
            // InternalFiacre.g:93:2: ( ( rule__Root__Group__0 ) )
            {
            // InternalFiacre.g:93:2: ( ( rule__Root__Group__0 ) )
            // InternalFiacre.g:94:3: ( rule__Root__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getGroup()); 
            }
            // InternalFiacre.g:95:3: ( rule__Root__Group__0 )
            // InternalFiacre.g:95:4: rule__Root__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRoot"


    // $ANTLR start "entryRuleImportDeclaration"
    // InternalFiacre.g:104:1: entryRuleImportDeclaration : ruleImportDeclaration EOF ;
    public final void entryRuleImportDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:105:1: ( ruleImportDeclaration EOF )
            // InternalFiacre.g:106:1: ruleImportDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImportDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleImportDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImportDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleImportDeclaration"
    // InternalFiacre.g:113:1: ruleImportDeclaration : ( ( rule__ImportDeclaration__Group__0 ) ) ;
    public final void ruleImportDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:117:2: ( ( ( rule__ImportDeclaration__Group__0 ) ) )
            // InternalFiacre.g:118:2: ( ( rule__ImportDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:118:2: ( ( rule__ImportDeclaration__Group__0 ) )
            // InternalFiacre.g:119:3: ( rule__ImportDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImportDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:120:3: ( rule__ImportDeclaration__Group__0 )
            // InternalFiacre.g:120:4: rule__ImportDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ImportDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImportDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleImportDeclaration"


    // $ANTLR start "entryRuleDeclaration"
    // InternalFiacre.g:129:1: entryRuleDeclaration : ruleDeclaration EOF ;
    public final void entryRuleDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:130:1: ( ruleDeclaration EOF )
            // InternalFiacre.g:131:1: ruleDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDeclaration"
    // InternalFiacre.g:138:1: ruleDeclaration : ( ( rule__Declaration__Alternatives ) ) ;
    public final void ruleDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:142:2: ( ( ( rule__Declaration__Alternatives ) ) )
            // InternalFiacre.g:143:2: ( ( rule__Declaration__Alternatives ) )
            {
            // InternalFiacre.g:143:2: ( ( rule__Declaration__Alternatives ) )
            // InternalFiacre.g:144:3: ( rule__Declaration__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeclarationAccess().getAlternatives()); 
            }
            // InternalFiacre.g:145:3: ( rule__Declaration__Alternatives )
            // InternalFiacre.g:145:4: rule__Declaration__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Declaration__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeclarationAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDeclaration"


    // $ANTLR start "entryRuleParameterizedDeclaration"
    // InternalFiacre.g:154:1: entryRuleParameterizedDeclaration : ruleParameterizedDeclaration EOF ;
    public final void entryRuleParameterizedDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:155:1: ( ruleParameterizedDeclaration EOF )
            // InternalFiacre.g:156:1: ruleParameterizedDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterizedDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleParameterizedDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterizedDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleParameterizedDeclaration"
    // InternalFiacre.g:163:1: ruleParameterizedDeclaration : ( ( rule__ParameterizedDeclaration__Alternatives ) ) ;
    public final void ruleParameterizedDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:167:2: ( ( ( rule__ParameterizedDeclaration__Alternatives ) ) )
            // InternalFiacre.g:168:2: ( ( rule__ParameterizedDeclaration__Alternatives ) )
            {
            // InternalFiacre.g:168:2: ( ( rule__ParameterizedDeclaration__Alternatives ) )
            // InternalFiacre.g:169:3: ( rule__ParameterizedDeclaration__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterizedDeclarationAccess().getAlternatives()); 
            }
            // InternalFiacre.g:170:3: ( rule__ParameterizedDeclaration__Alternatives )
            // InternalFiacre.g:170:4: rule__ParameterizedDeclaration__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterizedDeclaration__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterizedDeclarationAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleParameterizedDeclaration"


    // $ANTLR start "entryRuleFunctionDeclaration"
    // InternalFiacre.g:179:1: entryRuleFunctionDeclaration : ruleFunctionDeclaration EOF ;
    public final void entryRuleFunctionDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:180:1: ( ruleFunctionDeclaration EOF )
            // InternalFiacre.g:181:1: ruleFunctionDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleFunctionDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleFunctionDeclaration"
    // InternalFiacre.g:188:1: ruleFunctionDeclaration : ( ( rule__FunctionDeclaration__Group__0 ) ) ;
    public final void ruleFunctionDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:192:2: ( ( ( rule__FunctionDeclaration__Group__0 ) ) )
            // InternalFiacre.g:193:2: ( ( rule__FunctionDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:193:2: ( ( rule__FunctionDeclaration__Group__0 ) )
            // InternalFiacre.g:194:3: ( rule__FunctionDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:195:3: ( rule__FunctionDeclaration__Group__0 )
            // InternalFiacre.g:195:4: rule__FunctionDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFunctionDeclaration"


    // $ANTLR start "entryRuleTypeDeclaration"
    // InternalFiacre.g:204:1: entryRuleTypeDeclaration : ruleTypeDeclaration EOF ;
    public final void entryRuleTypeDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:205:1: ( ruleTypeDeclaration EOF )
            // InternalFiacre.g:206:1: ruleTypeDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTypeDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTypeDeclaration"
    // InternalFiacre.g:213:1: ruleTypeDeclaration : ( ( rule__TypeDeclaration__Group__0 ) ) ;
    public final void ruleTypeDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:217:2: ( ( ( rule__TypeDeclaration__Group__0 ) ) )
            // InternalFiacre.g:218:2: ( ( rule__TypeDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:218:2: ( ( rule__TypeDeclaration__Group__0 ) )
            // InternalFiacre.g:219:3: ( rule__TypeDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:220:3: ( rule__TypeDeclaration__Group__0 )
            // InternalFiacre.g:220:4: rule__TypeDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeDeclaration"


    // $ANTLR start "entryRuleChannelDeclaration"
    // InternalFiacre.g:229:1: entryRuleChannelDeclaration : ruleChannelDeclaration EOF ;
    public final void entryRuleChannelDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:230:1: ( ruleChannelDeclaration EOF )
            // InternalFiacre.g:231:1: ruleChannelDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleChannelDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleChannelDeclaration"
    // InternalFiacre.g:238:1: ruleChannelDeclaration : ( ( rule__ChannelDeclaration__Group__0 ) ) ;
    public final void ruleChannelDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:242:2: ( ( ( rule__ChannelDeclaration__Group__0 ) ) )
            // InternalFiacre.g:243:2: ( ( rule__ChannelDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:243:2: ( ( rule__ChannelDeclaration__Group__0 ) )
            // InternalFiacre.g:244:3: ( rule__ChannelDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:245:3: ( rule__ChannelDeclaration__Group__0 )
            // InternalFiacre.g:245:4: rule__ChannelDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleChannelDeclaration"


    // $ANTLR start "entryRuleChannelType"
    // InternalFiacre.g:254:1: entryRuleChannelType : ruleChannelType EOF ;
    public final void entryRuleChannelType() throws RecognitionException {
        try {
            // InternalFiacre.g:255:1: ( ruleChannelType EOF )
            // InternalFiacre.g:256:1: ruleChannelType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleChannelType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleChannelType"
    // InternalFiacre.g:263:1: ruleChannelType : ( ( rule__ChannelType__Group__0 ) ) ;
    public final void ruleChannelType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:267:2: ( ( ( rule__ChannelType__Group__0 ) ) )
            // InternalFiacre.g:268:2: ( ( rule__ChannelType__Group__0 ) )
            {
            // InternalFiacre.g:268:2: ( ( rule__ChannelType__Group__0 ) )
            // InternalFiacre.g:269:3: ( rule__ChannelType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:270:3: ( rule__ChannelType__Group__0 )
            // InternalFiacre.g:270:4: rule__ChannelType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleChannelType"


    // $ANTLR start "entryRuleType"
    // InternalFiacre.g:279:1: entryRuleType : ruleType EOF ;
    public final void entryRuleType() throws RecognitionException {
        try {
            // InternalFiacre.g:280:1: ( ruleType EOF )
            // InternalFiacre.g:281:1: ruleType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleType"
    // InternalFiacre.g:288:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
    public final void ruleType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:292:2: ( ( ( rule__Type__Alternatives ) ) )
            // InternalFiacre.g:293:2: ( ( rule__Type__Alternatives ) )
            {
            // InternalFiacre.g:293:2: ( ( rule__Type__Alternatives ) )
            // InternalFiacre.g:294:3: ( rule__Type__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeAccess().getAlternatives()); 
            }
            // InternalFiacre.g:295:3: ( rule__Type__Alternatives )
            // InternalFiacre.g:295:4: rule__Type__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Type__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleTupleType"
    // InternalFiacre.g:304:1: entryRuleTupleType : ruleTupleType EOF ;
    public final void entryRuleTupleType() throws RecognitionException {
        try {
            // InternalFiacre.g:305:1: ( ruleTupleType EOF )
            // InternalFiacre.g:306:1: ruleTupleType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTupleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTupleType"
    // InternalFiacre.g:313:1: ruleTupleType : ( ( rule__TupleType__Group__0 ) ) ;
    public final void ruleTupleType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:317:2: ( ( ( rule__TupleType__Group__0 ) ) )
            // InternalFiacre.g:318:2: ( ( rule__TupleType__Group__0 ) )
            {
            // InternalFiacre.g:318:2: ( ( rule__TupleType__Group__0 ) )
            // InternalFiacre.g:319:3: ( rule__TupleType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:320:3: ( rule__TupleType__Group__0 )
            // InternalFiacre.g:320:4: rule__TupleType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTupleType"


    // $ANTLR start "entryRuleBasicType"
    // InternalFiacre.g:329:1: entryRuleBasicType : ruleBasicType EOF ;
    public final void entryRuleBasicType() throws RecognitionException {
        try {
            // InternalFiacre.g:330:1: ( ruleBasicType EOF )
            // InternalFiacre.g:331:1: ruleBasicType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleBasicType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleBasicType"
    // InternalFiacre.g:338:1: ruleBasicType : ( ( rule__BasicType__Alternatives ) ) ;
    public final void ruleBasicType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:342:2: ( ( ( rule__BasicType__Alternatives ) ) )
            // InternalFiacre.g:343:2: ( ( rule__BasicType__Alternatives ) )
            {
            // InternalFiacre.g:343:2: ( ( rule__BasicType__Alternatives ) )
            // InternalFiacre.g:344:3: ( rule__BasicType__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getAlternatives()); 
            }
            // InternalFiacre.g:345:3: ( rule__BasicType__Alternatives )
            // InternalFiacre.g:345:4: rule__BasicType__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBasicType"


    // $ANTLR start "entryRuleRangeType"
    // InternalFiacre.g:354:1: entryRuleRangeType : ruleRangeType EOF ;
    public final void entryRuleRangeType() throws RecognitionException {
        try {
            // InternalFiacre.g:355:1: ( ruleRangeType EOF )
            // InternalFiacre.g:356:1: ruleRangeType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRangeType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRangeType"
    // InternalFiacre.g:363:1: ruleRangeType : ( ( rule__RangeType__Group__0 ) ) ;
    public final void ruleRangeType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:367:2: ( ( ( rule__RangeType__Group__0 ) ) )
            // InternalFiacre.g:368:2: ( ( rule__RangeType__Group__0 ) )
            {
            // InternalFiacre.g:368:2: ( ( rule__RangeType__Group__0 ) )
            // InternalFiacre.g:369:3: ( rule__RangeType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:370:3: ( rule__RangeType__Group__0 )
            // InternalFiacre.g:370:4: rule__RangeType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRangeType"


    // $ANTLR start "entryRuleUnionType"
    // InternalFiacre.g:379:1: entryRuleUnionType : ruleUnionType EOF ;
    public final void entryRuleUnionType() throws RecognitionException {
        try {
            // InternalFiacre.g:380:1: ( ruleUnionType EOF )
            // InternalFiacre.g:381:1: ruleUnionType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUnionType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUnionType"
    // InternalFiacre.g:388:1: ruleUnionType : ( ( rule__UnionType__Group__0 ) ) ;
    public final void ruleUnionType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:392:2: ( ( ( rule__UnionType__Group__0 ) ) )
            // InternalFiacre.g:393:2: ( ( rule__UnionType__Group__0 ) )
            {
            // InternalFiacre.g:393:2: ( ( rule__UnionType__Group__0 ) )
            // InternalFiacre.g:394:3: ( rule__UnionType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:395:3: ( rule__UnionType__Group__0 )
            // InternalFiacre.g:395:4: rule__UnionType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnionType"


    // $ANTLR start "entryRuleUnionTags"
    // InternalFiacre.g:404:1: entryRuleUnionTags : ruleUnionTags EOF ;
    public final void entryRuleUnionTags() throws RecognitionException {
        try {
            // InternalFiacre.g:405:1: ( ruleUnionTags EOF )
            // InternalFiacre.g:406:1: ruleUnionTags EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUnionTags();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUnionTags"
    // InternalFiacre.g:413:1: ruleUnionTags : ( ( rule__UnionTags__Group__0 ) ) ;
    public final void ruleUnionTags() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:417:2: ( ( ( rule__UnionTags__Group__0 ) ) )
            // InternalFiacre.g:418:2: ( ( rule__UnionTags__Group__0 ) )
            {
            // InternalFiacre.g:418:2: ( ( rule__UnionTags__Group__0 ) )
            // InternalFiacre.g:419:3: ( rule__UnionTags__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getGroup()); 
            }
            // InternalFiacre.g:420:3: ( rule__UnionTags__Group__0 )
            // InternalFiacre.g:420:4: rule__UnionTags__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnionTags"


    // $ANTLR start "entryRuleUnionTagDeclaration"
    // InternalFiacre.g:429:1: entryRuleUnionTagDeclaration : ruleUnionTagDeclaration EOF ;
    public final void entryRuleUnionTagDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:430:1: ( ruleUnionTagDeclaration EOF )
            // InternalFiacre.g:431:1: ruleUnionTagDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUnionTagDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUnionTagDeclaration"
    // InternalFiacre.g:438:1: ruleUnionTagDeclaration : ( ( rule__UnionTagDeclaration__NameAssignment ) ) ;
    public final void ruleUnionTagDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:442:2: ( ( ( rule__UnionTagDeclaration__NameAssignment ) ) )
            // InternalFiacre.g:443:2: ( ( rule__UnionTagDeclaration__NameAssignment ) )
            {
            // InternalFiacre.g:443:2: ( ( rule__UnionTagDeclaration__NameAssignment ) )
            // InternalFiacre.g:444:3: ( rule__UnionTagDeclaration__NameAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagDeclarationAccess().getNameAssignment()); 
            }
            // InternalFiacre.g:445:3: ( rule__UnionTagDeclaration__NameAssignment )
            // InternalFiacre.g:445:4: rule__UnionTagDeclaration__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTagDeclaration__NameAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagDeclarationAccess().getNameAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnionTagDeclaration"


    // $ANTLR start "entryRuleRecordType"
    // InternalFiacre.g:454:1: entryRuleRecordType : ruleRecordType EOF ;
    public final void entryRuleRecordType() throws RecognitionException {
        try {
            // InternalFiacre.g:455:1: ( ruleRecordType EOF )
            // InternalFiacre.g:456:1: ruleRecordType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRecordType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRecordType"
    // InternalFiacre.g:463:1: ruleRecordType : ( ( rule__RecordType__Group__0 ) ) ;
    public final void ruleRecordType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:467:2: ( ( ( rule__RecordType__Group__0 ) ) )
            // InternalFiacre.g:468:2: ( ( rule__RecordType__Group__0 ) )
            {
            // InternalFiacre.g:468:2: ( ( rule__RecordType__Group__0 ) )
            // InternalFiacre.g:469:3: ( rule__RecordType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:470:3: ( rule__RecordType__Group__0 )
            // InternalFiacre.g:470:4: rule__RecordType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRecordType"


    // $ANTLR start "entryRuleRecordFields"
    // InternalFiacre.g:479:1: entryRuleRecordFields : ruleRecordFields EOF ;
    public final void entryRuleRecordFields() throws RecognitionException {
        try {
            // InternalFiacre.g:480:1: ( ruleRecordFields EOF )
            // InternalFiacre.g:481:1: ruleRecordFields EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRecordFields();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRecordFields"
    // InternalFiacre.g:488:1: ruleRecordFields : ( ( rule__RecordFields__Group__0 ) ) ;
    public final void ruleRecordFields() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:492:2: ( ( ( rule__RecordFields__Group__0 ) ) )
            // InternalFiacre.g:493:2: ( ( rule__RecordFields__Group__0 ) )
            {
            // InternalFiacre.g:493:2: ( ( rule__RecordFields__Group__0 ) )
            // InternalFiacre.g:494:3: ( rule__RecordFields__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getGroup()); 
            }
            // InternalFiacre.g:495:3: ( rule__RecordFields__Group__0 )
            // InternalFiacre.g:495:4: rule__RecordFields__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRecordFields"


    // $ANTLR start "entryRuleRecordFieldDeclaration"
    // InternalFiacre.g:504:1: entryRuleRecordFieldDeclaration : ruleRecordFieldDeclaration EOF ;
    public final void entryRuleRecordFieldDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:505:1: ( ruleRecordFieldDeclaration EOF )
            // InternalFiacre.g:506:1: ruleRecordFieldDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRecordFieldDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRecordFieldDeclaration"
    // InternalFiacre.g:513:1: ruleRecordFieldDeclaration : ( ( rule__RecordFieldDeclaration__NameAssignment ) ) ;
    public final void ruleRecordFieldDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:517:2: ( ( ( rule__RecordFieldDeclaration__NameAssignment ) ) )
            // InternalFiacre.g:518:2: ( ( rule__RecordFieldDeclaration__NameAssignment ) )
            {
            // InternalFiacre.g:518:2: ( ( rule__RecordFieldDeclaration__NameAssignment ) )
            // InternalFiacre.g:519:3: ( rule__RecordFieldDeclaration__NameAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldDeclarationAccess().getNameAssignment()); 
            }
            // InternalFiacre.g:520:3: ( rule__RecordFieldDeclaration__NameAssignment )
            // InternalFiacre.g:520:4: rule__RecordFieldDeclaration__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFieldDeclaration__NameAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldDeclarationAccess().getNameAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRecordFieldDeclaration"


    // $ANTLR start "entryRuleQueueType"
    // InternalFiacre.g:529:1: entryRuleQueueType : ruleQueueType EOF ;
    public final void entryRuleQueueType() throws RecognitionException {
        try {
            // InternalFiacre.g:530:1: ( ruleQueueType EOF )
            // InternalFiacre.g:531:1: ruleQueueType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleQueueType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleQueueType"
    // InternalFiacre.g:538:1: ruleQueueType : ( ( rule__QueueType__Group__0 ) ) ;
    public final void ruleQueueType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:542:2: ( ( ( rule__QueueType__Group__0 ) ) )
            // InternalFiacre.g:543:2: ( ( rule__QueueType__Group__0 ) )
            {
            // InternalFiacre.g:543:2: ( ( rule__QueueType__Group__0 ) )
            // InternalFiacre.g:544:3: ( rule__QueueType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:545:3: ( rule__QueueType__Group__0 )
            // InternalFiacre.g:545:4: rule__QueueType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleQueueType"


    // $ANTLR start "entryRuleArrayType"
    // InternalFiacre.g:554:1: entryRuleArrayType : ruleArrayType EOF ;
    public final void entryRuleArrayType() throws RecognitionException {
        try {
            // InternalFiacre.g:555:1: ( ruleArrayType EOF )
            // InternalFiacre.g:556:1: ruleArrayType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleArrayType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleArrayType"
    // InternalFiacre.g:563:1: ruleArrayType : ( ( rule__ArrayType__Group__0 ) ) ;
    public final void ruleArrayType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:567:2: ( ( ( rule__ArrayType__Group__0 ) ) )
            // InternalFiacre.g:568:2: ( ( rule__ArrayType__Group__0 ) )
            {
            // InternalFiacre.g:568:2: ( ( rule__ArrayType__Group__0 ) )
            // InternalFiacre.g:569:3: ( rule__ArrayType__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getGroup()); 
            }
            // InternalFiacre.g:570:3: ( rule__ArrayType__Group__0 )
            // InternalFiacre.g:570:4: rule__ArrayType__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleArrayType"


    // $ANTLR start "entryRuleReferencedType"
    // InternalFiacre.g:579:1: entryRuleReferencedType : ruleReferencedType EOF ;
    public final void entryRuleReferencedType() throws RecognitionException {
        try {
            // InternalFiacre.g:580:1: ( ruleReferencedType EOF )
            // InternalFiacre.g:581:1: ruleReferencedType EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferencedTypeRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleReferencedType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferencedTypeRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleReferencedType"
    // InternalFiacre.g:588:1: ruleReferencedType : ( ( rule__ReferencedType__TypeAssignment ) ) ;
    public final void ruleReferencedType() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:592:2: ( ( ( rule__ReferencedType__TypeAssignment ) ) )
            // InternalFiacre.g:593:2: ( ( rule__ReferencedType__TypeAssignment ) )
            {
            // InternalFiacre.g:593:2: ( ( rule__ReferencedType__TypeAssignment ) )
            // InternalFiacre.g:594:3: ( rule__ReferencedType__TypeAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferencedTypeAccess().getTypeAssignment()); 
            }
            // InternalFiacre.g:595:3: ( rule__ReferencedType__TypeAssignment )
            // InternalFiacre.g:595:4: rule__ReferencedType__TypeAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReferencedType__TypeAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferencedTypeAccess().getTypeAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleReferencedType"


    // $ANTLR start "entryRuleConstantDeclaration"
    // InternalFiacre.g:604:1: entryRuleConstantDeclaration : ruleConstantDeclaration EOF ;
    public final void entryRuleConstantDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:605:1: ( ruleConstantDeclaration EOF )
            // InternalFiacre.g:606:1: ruleConstantDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleConstantDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleConstantDeclaration"
    // InternalFiacre.g:613:1: ruleConstantDeclaration : ( ( rule__ConstantDeclaration__Group__0 ) ) ;
    public final void ruleConstantDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:617:2: ( ( ( rule__ConstantDeclaration__Group__0 ) ) )
            // InternalFiacre.g:618:2: ( ( rule__ConstantDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:618:2: ( ( rule__ConstantDeclaration__Group__0 ) )
            // InternalFiacre.g:619:3: ( rule__ConstantDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:620:3: ( rule__ConstantDeclaration__Group__0 )
            // InternalFiacre.g:620:4: rule__ConstantDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConstantDeclaration"


    // $ANTLR start "entryRuleProcessDeclaration"
    // InternalFiacre.g:629:1: entryRuleProcessDeclaration : ruleProcessDeclaration EOF ;
    public final void entryRuleProcessDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:630:1: ( ruleProcessDeclaration EOF )
            // InternalFiacre.g:631:1: ruleProcessDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleProcessDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleProcessDeclaration"
    // InternalFiacre.g:638:1: ruleProcessDeclaration : ( ( rule__ProcessDeclaration__Group__0 ) ) ;
    public final void ruleProcessDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:642:2: ( ( ( rule__ProcessDeclaration__Group__0 ) ) )
            // InternalFiacre.g:643:2: ( ( rule__ProcessDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:643:2: ( ( rule__ProcessDeclaration__Group__0 ) )
            // InternalFiacre.g:644:3: ( rule__ProcessDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:645:3: ( rule__ProcessDeclaration__Group__0 )
            // InternalFiacre.g:645:4: rule__ProcessDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleProcessDeclaration"


    // $ANTLR start "entryRuleStateDeclaration"
    // InternalFiacre.g:654:1: entryRuleStateDeclaration : ruleStateDeclaration EOF ;
    public final void entryRuleStateDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:655:1: ( ruleStateDeclaration EOF )
            // InternalFiacre.g:656:1: ruleStateDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStateDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStateDeclaration"
    // InternalFiacre.g:663:1: ruleStateDeclaration : ( ( rule__StateDeclaration__NameAssignment ) ) ;
    public final void ruleStateDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:667:2: ( ( ( rule__StateDeclaration__NameAssignment ) ) )
            // InternalFiacre.g:668:2: ( ( rule__StateDeclaration__NameAssignment ) )
            {
            // InternalFiacre.g:668:2: ( ( rule__StateDeclaration__NameAssignment ) )
            // InternalFiacre.g:669:3: ( rule__StateDeclaration__NameAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateDeclarationAccess().getNameAssignment()); 
            }
            // InternalFiacre.g:670:3: ( rule__StateDeclaration__NameAssignment )
            // InternalFiacre.g:670:4: rule__StateDeclaration__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateDeclaration__NameAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateDeclarationAccess().getNameAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStateDeclaration"


    // $ANTLR start "entryRuleTransitionSource"
    // InternalFiacre.g:679:1: entryRuleTransitionSource : ruleTransitionSource EOF ;
    public final void entryRuleTransitionSource() throws RecognitionException {
        try {
            // InternalFiacre.g:680:1: ( ruleTransitionSource EOF )
            // InternalFiacre.g:681:1: ruleTransitionSource EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTransitionSource();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTransitionSource"
    // InternalFiacre.g:688:1: ruleTransitionSource : ( ( rule__TransitionSource__Group__0 ) ) ;
    public final void ruleTransitionSource() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:692:2: ( ( ( rule__TransitionSource__Group__0 ) ) )
            // InternalFiacre.g:693:2: ( ( rule__TransitionSource__Group__0 ) )
            {
            // InternalFiacre.g:693:2: ( ( rule__TransitionSource__Group__0 ) )
            // InternalFiacre.g:694:3: ( rule__TransitionSource__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceAccess().getGroup()); 
            }
            // InternalFiacre.g:695:3: ( rule__TransitionSource__Group__0 )
            // InternalFiacre.g:695:4: rule__TransitionSource__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TransitionSource__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTransitionSource"


    // $ANTLR start "entryRuleTransition"
    // InternalFiacre.g:704:1: entryRuleTransition : ruleTransition EOF ;
    public final void entryRuleTransition() throws RecognitionException {
        try {
            // InternalFiacre.g:705:1: ( ruleTransition EOF )
            // InternalFiacre.g:706:1: ruleTransition EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTransition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTransition"
    // InternalFiacre.g:713:1: ruleTransition : ( ( rule__Transition__Group__0 ) ) ;
    public final void ruleTransition() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:717:2: ( ( ( rule__Transition__Group__0 ) ) )
            // InternalFiacre.g:718:2: ( ( rule__Transition__Group__0 ) )
            {
            // InternalFiacre.g:718:2: ( ( rule__Transition__Group__0 ) )
            // InternalFiacre.g:719:3: ( rule__Transition__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionAccess().getGroup()); 
            }
            // InternalFiacre.g:720:3: ( rule__Transition__Group__0 )
            // InternalFiacre.g:720:4: rule__Transition__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Transition__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTransition"


    // $ANTLR start "entryRuleComponentDeclaration"
    // InternalFiacre.g:729:1: entryRuleComponentDeclaration : ruleComponentDeclaration EOF ;
    public final void entryRuleComponentDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:730:1: ( ruleComponentDeclaration EOF )
            // InternalFiacre.g:731:1: ruleComponentDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleComponentDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleComponentDeclaration"
    // InternalFiacre.g:738:1: ruleComponentDeclaration : ( ( rule__ComponentDeclaration__Group__0 ) ) ;
    public final void ruleComponentDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:742:2: ( ( ( rule__ComponentDeclaration__Group__0 ) ) )
            // InternalFiacre.g:743:2: ( ( rule__ComponentDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:743:2: ( ( rule__ComponentDeclaration__Group__0 ) )
            // InternalFiacre.g:744:3: ( rule__ComponentDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:745:3: ( rule__ComponentDeclaration__Group__0 )
            // InternalFiacre.g:745:4: rule__ComponentDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleComponentDeclaration"


    // $ANTLR start "entryRulePortsDeclaration"
    // InternalFiacre.g:754:1: entryRulePortsDeclaration : rulePortsDeclaration EOF ;
    public final void entryRulePortsDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:755:1: ( rulePortsDeclaration EOF )
            // InternalFiacre.g:756:1: rulePortsDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePortsDeclaration"
    // InternalFiacre.g:763:1: rulePortsDeclaration : ( ( rule__PortsDeclaration__Group__0 ) ) ;
    public final void rulePortsDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:767:2: ( ( ( rule__PortsDeclaration__Group__0 ) ) )
            // InternalFiacre.g:768:2: ( ( rule__PortsDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:768:2: ( ( rule__PortsDeclaration__Group__0 ) )
            // InternalFiacre.g:769:3: ( rule__PortsDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:770:3: ( rule__PortsDeclaration__Group__0 )
            // InternalFiacre.g:770:4: rule__PortsDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePortsDeclaration"


    // $ANTLR start "entryRulePortDeclaration"
    // InternalFiacre.g:779:1: entryRulePortDeclaration : rulePortDeclaration EOF ;
    public final void entryRulePortDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:780:1: ( rulePortDeclaration EOF )
            // InternalFiacre.g:781:1: rulePortDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePortDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePortDeclaration"
    // InternalFiacre.g:788:1: rulePortDeclaration : ( ( rule__PortDeclaration__NameAssignment ) ) ;
    public final void rulePortDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:792:2: ( ( ( rule__PortDeclaration__NameAssignment ) ) )
            // InternalFiacre.g:793:2: ( ( rule__PortDeclaration__NameAssignment ) )
            {
            // InternalFiacre.g:793:2: ( ( rule__PortDeclaration__NameAssignment ) )
            // InternalFiacre.g:794:3: ( rule__PortDeclaration__NameAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortDeclarationAccess().getNameAssignment()); 
            }
            // InternalFiacre.g:795:3: ( rule__PortDeclaration__NameAssignment )
            // InternalFiacre.g:795:4: rule__PortDeclaration__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortDeclaration__NameAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortDeclarationAccess().getNameAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePortDeclaration"


    // $ANTLR start "entryRuleLocalPortsDeclaration"
    // InternalFiacre.g:804:1: entryRuleLocalPortsDeclaration : ruleLocalPortsDeclaration EOF ;
    public final void entryRuleLocalPortsDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:805:1: ( ruleLocalPortsDeclaration EOF )
            // InternalFiacre.g:806:1: ruleLocalPortsDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLocalPortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLocalPortsDeclaration"
    // InternalFiacre.g:813:1: ruleLocalPortsDeclaration : ( ( rule__LocalPortsDeclaration__Group__0 ) ) ;
    public final void ruleLocalPortsDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:817:2: ( ( ( rule__LocalPortsDeclaration__Group__0 ) ) )
            // InternalFiacre.g:818:2: ( ( rule__LocalPortsDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:818:2: ( ( rule__LocalPortsDeclaration__Group__0 ) )
            // InternalFiacre.g:819:3: ( rule__LocalPortsDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:820:3: ( rule__LocalPortsDeclaration__Group__0 )
            // InternalFiacre.g:820:4: rule__LocalPortsDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLocalPortsDeclaration"


    // $ANTLR start "entryRuleParametersDeclaration"
    // InternalFiacre.g:829:1: entryRuleParametersDeclaration : ruleParametersDeclaration EOF ;
    public final void entryRuleParametersDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:830:1: ( ruleParametersDeclaration EOF )
            // InternalFiacre.g:831:1: ruleParametersDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleParametersDeclaration"
    // InternalFiacre.g:838:1: ruleParametersDeclaration : ( ( rule__ParametersDeclaration__Group__0 ) ) ;
    public final void ruleParametersDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:842:2: ( ( ( rule__ParametersDeclaration__Group__0 ) ) )
            // InternalFiacre.g:843:2: ( ( rule__ParametersDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:843:2: ( ( rule__ParametersDeclaration__Group__0 ) )
            // InternalFiacre.g:844:3: ( rule__ParametersDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:845:3: ( rule__ParametersDeclaration__Group__0 )
            // InternalFiacre.g:845:4: rule__ParametersDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleParametersDeclaration"


    // $ANTLR start "entryRuleParameterDeclaration"
    // InternalFiacre.g:854:1: entryRuleParameterDeclaration : ruleParameterDeclaration EOF ;
    public final void entryRuleParameterDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:855:1: ( ruleParameterDeclaration EOF )
            // InternalFiacre.g:856:1: ruleParameterDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleParameterDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleParameterDeclaration"
    // InternalFiacre.g:863:1: ruleParameterDeclaration : ( ( rule__ParameterDeclaration__Group__0 ) ) ;
    public final void ruleParameterDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:867:2: ( ( ( rule__ParameterDeclaration__Group__0 ) ) )
            // InternalFiacre.g:868:2: ( ( rule__ParameterDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:868:2: ( ( rule__ParameterDeclaration__Group__0 ) )
            // InternalFiacre.g:869:3: ( rule__ParameterDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:870:3: ( rule__ParameterDeclaration__Group__0 )
            // InternalFiacre.g:870:4: rule__ParameterDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleParameterDeclaration"


    // $ANTLR start "entryRuleVariablesDeclaration"
    // InternalFiacre.g:879:1: entryRuleVariablesDeclaration : ruleVariablesDeclaration EOF ;
    public final void entryRuleVariablesDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:880:1: ( ruleVariablesDeclaration EOF )
            // InternalFiacre.g:881:1: ruleVariablesDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleVariablesDeclaration"
    // InternalFiacre.g:888:1: ruleVariablesDeclaration : ( ( rule__VariablesDeclaration__Group__0 ) ) ;
    public final void ruleVariablesDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:892:2: ( ( ( rule__VariablesDeclaration__Group__0 ) ) )
            // InternalFiacre.g:893:2: ( ( rule__VariablesDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:893:2: ( ( rule__VariablesDeclaration__Group__0 ) )
            // InternalFiacre.g:894:3: ( rule__VariablesDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:895:3: ( rule__VariablesDeclaration__Group__0 )
            // InternalFiacre.g:895:4: rule__VariablesDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleVariablesDeclaration"


    // $ANTLR start "entryRuleVariableDeclaration"
    // InternalFiacre.g:904:1: entryRuleVariableDeclaration : ruleVariableDeclaration EOF ;
    public final void entryRuleVariableDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:905:1: ( ruleVariableDeclaration EOF )
            // InternalFiacre.g:906:1: ruleVariableDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleVariableDeclaration"
    // InternalFiacre.g:913:1: ruleVariableDeclaration : ( ( rule__VariableDeclaration__NameAssignment ) ) ;
    public final void ruleVariableDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:917:2: ( ( ( rule__VariableDeclaration__NameAssignment ) ) )
            // InternalFiacre.g:918:2: ( ( rule__VariableDeclaration__NameAssignment ) )
            {
            // InternalFiacre.g:918:2: ( ( rule__VariableDeclaration__NameAssignment ) )
            // InternalFiacre.g:919:3: ( rule__VariableDeclaration__NameAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableDeclarationAccess().getNameAssignment()); 
            }
            // InternalFiacre.g:920:3: ( rule__VariableDeclaration__NameAssignment )
            // InternalFiacre.g:920:4: rule__VariableDeclaration__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableDeclaration__NameAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableDeclarationAccess().getNameAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleVariableDeclaration"


    // $ANTLR start "entryRulePriorityDeclaration"
    // InternalFiacre.g:929:1: entryRulePriorityDeclaration : rulePriorityDeclaration EOF ;
    public final void entryRulePriorityDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:930:1: ( rulePriorityDeclaration EOF )
            // InternalFiacre.g:931:1: rulePriorityDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePriorityDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePriorityDeclaration"
    // InternalFiacre.g:938:1: rulePriorityDeclaration : ( ( rule__PriorityDeclaration__Group__0 ) ) ;
    public final void rulePriorityDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:942:2: ( ( ( rule__PriorityDeclaration__Group__0 ) ) )
            // InternalFiacre.g:943:2: ( ( rule__PriorityDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:943:2: ( ( rule__PriorityDeclaration__Group__0 ) )
            // InternalFiacre.g:944:3: ( rule__PriorityDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:945:3: ( rule__PriorityDeclaration__Group__0 )
            // InternalFiacre.g:945:4: rule__PriorityDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePriorityDeclaration"


    // $ANTLR start "entryRulePriorityGroup"
    // InternalFiacre.g:954:1: entryRulePriorityGroup : rulePriorityGroup EOF ;
    public final void entryRulePriorityGroup() throws RecognitionException {
        try {
            // InternalFiacre.g:955:1: ( rulePriorityGroup EOF )
            // InternalFiacre.g:956:1: rulePriorityGroup EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePriorityGroup();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePriorityGroup"
    // InternalFiacre.g:963:1: rulePriorityGroup : ( ( rule__PriorityGroup__Group__0 ) ) ;
    public final void rulePriorityGroup() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:967:2: ( ( ( rule__PriorityGroup__Group__0 ) ) )
            // InternalFiacre.g:968:2: ( ( rule__PriorityGroup__Group__0 ) )
            {
            // InternalFiacre.g:968:2: ( ( rule__PriorityGroup__Group__0 ) )
            // InternalFiacre.g:969:3: ( rule__PriorityGroup__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getGroup()); 
            }
            // InternalFiacre.g:970:3: ( rule__PriorityGroup__Group__0 )
            // InternalFiacre.g:970:4: rule__PriorityGroup__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePriorityGroup"


    // $ANTLR start "entryRuleUnlessStatement"
    // InternalFiacre.g:979:1: entryRuleUnlessStatement : ruleUnlessStatement EOF ;
    public final void entryRuleUnlessStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:980:1: ( ruleUnlessStatement EOF )
            // InternalFiacre.g:981:1: ruleUnlessStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUnlessStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUnlessStatement"
    // InternalFiacre.g:988:1: ruleUnlessStatement : ( ( rule__UnlessStatement__Group__0 ) ) ;
    public final void ruleUnlessStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:992:2: ( ( ( rule__UnlessStatement__Group__0 ) ) )
            // InternalFiacre.g:993:2: ( ( rule__UnlessStatement__Group__0 ) )
            {
            // InternalFiacre.g:993:2: ( ( rule__UnlessStatement__Group__0 ) )
            // InternalFiacre.g:994:3: ( rule__UnlessStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:995:3: ( rule__UnlessStatement__Group__0 )
            // InternalFiacre.g:995:4: rule__UnlessStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnlessStatement"


    // $ANTLR start "entryRuleStatementChoice"
    // InternalFiacre.g:1004:1: entryRuleStatementChoice : ruleStatementChoice EOF ;
    public final void entryRuleStatementChoice() throws RecognitionException {
        try {
            // InternalFiacre.g:1005:1: ( ruleStatementChoice EOF )
            // InternalFiacre.g:1006:1: ruleStatementChoice EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStatementChoice();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStatementChoice"
    // InternalFiacre.g:1013:1: ruleStatementChoice : ( ( rule__StatementChoice__Group__0 ) ) ;
    public final void ruleStatementChoice() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1017:2: ( ( ( rule__StatementChoice__Group__0 ) ) )
            // InternalFiacre.g:1018:2: ( ( rule__StatementChoice__Group__0 ) )
            {
            // InternalFiacre.g:1018:2: ( ( rule__StatementChoice__Group__0 ) )
            // InternalFiacre.g:1019:3: ( rule__StatementChoice__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getGroup()); 
            }
            // InternalFiacre.g:1020:3: ( rule__StatementChoice__Group__0 )
            // InternalFiacre.g:1020:4: rule__StatementChoice__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStatementChoice"


    // $ANTLR start "entryRuleStatementSequence"
    // InternalFiacre.g:1029:1: entryRuleStatementSequence : ruleStatementSequence EOF ;
    public final void entryRuleStatementSequence() throws RecognitionException {
        try {
            // InternalFiacre.g:1030:1: ( ruleStatementSequence EOF )
            // InternalFiacre.g:1031:1: ruleStatementSequence EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStatementSequence"
    // InternalFiacre.g:1038:1: ruleStatementSequence : ( ( rule__StatementSequence__Group__0 ) ) ;
    public final void ruleStatementSequence() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1042:2: ( ( ( rule__StatementSequence__Group__0 ) ) )
            // InternalFiacre.g:1043:2: ( ( rule__StatementSequence__Group__0 ) )
            {
            // InternalFiacre.g:1043:2: ( ( rule__StatementSequence__Group__0 ) )
            // InternalFiacre.g:1044:3: ( rule__StatementSequence__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getGroup()); 
            }
            // InternalFiacre.g:1045:3: ( rule__StatementSequence__Group__0 )
            // InternalFiacre.g:1045:4: rule__StatementSequence__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStatementSequence"


    // $ANTLR start "entryRuleStatement"
    // InternalFiacre.g:1054:1: entryRuleStatement : ruleStatement EOF ;
    public final void entryRuleStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1055:1: ( ruleStatement EOF )
            // InternalFiacre.g:1056:1: ruleStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStatement"
    // InternalFiacre.g:1063:1: ruleStatement : ( ( rule__Statement__Alternatives ) ) ;
    public final void ruleStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1067:2: ( ( ( rule__Statement__Alternatives ) ) )
            // InternalFiacre.g:1068:2: ( ( rule__Statement__Alternatives ) )
            {
            // InternalFiacre.g:1068:2: ( ( rule__Statement__Alternatives ) )
            // InternalFiacre.g:1069:3: ( rule__Statement__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1070:3: ( rule__Statement__Alternatives )
            // InternalFiacre.g:1070:4: rule__Statement__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Statement__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleBlockStatement"
    // InternalFiacre.g:1079:1: entryRuleBlockStatement : ruleBlockStatement EOF ;
    public final void entryRuleBlockStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1080:1: ( ruleBlockStatement EOF )
            // InternalFiacre.g:1081:1: ruleBlockStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleBlockStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleBlockStatement"
    // InternalFiacre.g:1088:1: ruleBlockStatement : ( ( rule__BlockStatement__Group__0 ) ) ;
    public final void ruleBlockStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1092:2: ( ( ( rule__BlockStatement__Group__0 ) ) )
            // InternalFiacre.g:1093:2: ( ( rule__BlockStatement__Group__0 ) )
            {
            // InternalFiacre.g:1093:2: ( ( rule__BlockStatement__Group__0 ) )
            // InternalFiacre.g:1094:3: ( rule__BlockStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1095:3: ( rule__BlockStatement__Group__0 )
            // InternalFiacre.g:1095:4: rule__BlockStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BlockStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBlockStatement"


    // $ANTLR start "entryRuleReturnStatement"
    // InternalFiacre.g:1104:1: entryRuleReturnStatement : ruleReturnStatement EOF ;
    public final void entryRuleReturnStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1105:1: ( ruleReturnStatement EOF )
            // InternalFiacre.g:1106:1: ruleReturnStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReturnStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleReturnStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReturnStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleReturnStatement"
    // InternalFiacre.g:1113:1: ruleReturnStatement : ( ( rule__ReturnStatement__Group__0 ) ) ;
    public final void ruleReturnStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1117:2: ( ( ( rule__ReturnStatement__Group__0 ) ) )
            // InternalFiacre.g:1118:2: ( ( rule__ReturnStatement__Group__0 ) )
            {
            // InternalFiacre.g:1118:2: ( ( rule__ReturnStatement__Group__0 ) )
            // InternalFiacre.g:1119:3: ( rule__ReturnStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReturnStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1120:3: ( rule__ReturnStatement__Group__0 )
            // InternalFiacre.g:1120:4: rule__ReturnStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReturnStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReturnStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleReturnStatement"


    // $ANTLR start "entryRuleNullStatement"
    // InternalFiacre.g:1129:1: entryRuleNullStatement : ruleNullStatement EOF ;
    public final void entryRuleNullStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1130:1: ( ruleNullStatement EOF )
            // InternalFiacre.g:1131:1: ruleNullStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNullStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNullStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNullStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNullStatement"
    // InternalFiacre.g:1138:1: ruleNullStatement : ( ( rule__NullStatement__Group__0 ) ) ;
    public final void ruleNullStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1142:2: ( ( ( rule__NullStatement__Group__0 ) ) )
            // InternalFiacre.g:1143:2: ( ( rule__NullStatement__Group__0 ) )
            {
            // InternalFiacre.g:1143:2: ( ( rule__NullStatement__Group__0 ) )
            // InternalFiacre.g:1144:3: ( rule__NullStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNullStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1145:3: ( rule__NullStatement__Group__0 )
            // InternalFiacre.g:1145:4: rule__NullStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NullStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNullStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNullStatement"


    // $ANTLR start "entryRuleTaggedStatement"
    // InternalFiacre.g:1154:1: entryRuleTaggedStatement : ruleTaggedStatement EOF ;
    public final void entryRuleTaggedStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1155:1: ( ruleTaggedStatement EOF )
            // InternalFiacre.g:1156:1: ruleTaggedStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTaggedStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTaggedStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTaggedStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTaggedStatement"
    // InternalFiacre.g:1163:1: ruleTaggedStatement : ( ( rule__TaggedStatement__Group__0 ) ) ;
    public final void ruleTaggedStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1167:2: ( ( ( rule__TaggedStatement__Group__0 ) ) )
            // InternalFiacre.g:1168:2: ( ( rule__TaggedStatement__Group__0 ) )
            {
            // InternalFiacre.g:1168:2: ( ( rule__TaggedStatement__Group__0 ) )
            // InternalFiacre.g:1169:3: ( rule__TaggedStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTaggedStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1170:3: ( rule__TaggedStatement__Group__0 )
            // InternalFiacre.g:1170:4: rule__TaggedStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TaggedStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTaggedStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTaggedStatement"


    // $ANTLR start "entryRulePatternStatement"
    // InternalFiacre.g:1179:1: entryRulePatternStatement : rulePatternStatement EOF ;
    public final void entryRulePatternStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1180:1: ( rulePatternStatement EOF )
            // InternalFiacre.g:1181:1: rulePatternStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePatternStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePatternStatement"
    // InternalFiacre.g:1188:1: rulePatternStatement : ( ( rule__PatternStatement__Group__0 ) ) ;
    public final void rulePatternStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1192:2: ( ( ( rule__PatternStatement__Group__0 ) ) )
            // InternalFiacre.g:1193:2: ( ( rule__PatternStatement__Group__0 ) )
            {
            // InternalFiacre.g:1193:2: ( ( rule__PatternStatement__Group__0 ) )
            // InternalFiacre.g:1194:3: ( rule__PatternStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1195:3: ( rule__PatternStatement__Group__0 )
            // InternalFiacre.g:1195:4: rule__PatternStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePatternStatement"


    // $ANTLR start "entryRulePattern"
    // InternalFiacre.g:1204:1: entryRulePattern : rulePattern EOF ;
    public final void entryRulePattern() throws RecognitionException {
        try {
            // InternalFiacre.g:1205:1: ( rulePattern EOF )
            // InternalFiacre.g:1206:1: rulePattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePattern"
    // InternalFiacre.g:1213:1: rulePattern : ( ( rule__Pattern__Alternatives ) ) ;
    public final void rulePattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1217:2: ( ( ( rule__Pattern__Alternatives ) ) )
            // InternalFiacre.g:1218:2: ( ( rule__Pattern__Alternatives ) )
            {
            // InternalFiacre.g:1218:2: ( ( rule__Pattern__Alternatives ) )
            // InternalFiacre.g:1219:3: ( rule__Pattern__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1220:3: ( rule__Pattern__Alternatives )
            // InternalFiacre.g:1220:4: rule__Pattern__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Pattern__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePattern"


    // $ANTLR start "entryRuleAnyPattern"
    // InternalFiacre.g:1229:1: entryRuleAnyPattern : ruleAnyPattern EOF ;
    public final void entryRuleAnyPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:1230:1: ( ruleAnyPattern EOF )
            // InternalFiacre.g:1231:1: ruleAnyPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAnyPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAnyPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAnyPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAnyPattern"
    // InternalFiacre.g:1238:1: ruleAnyPattern : ( ( rule__AnyPattern__Group__0 ) ) ;
    public final void ruleAnyPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1242:2: ( ( ( rule__AnyPattern__Group__0 ) ) )
            // InternalFiacre.g:1243:2: ( ( rule__AnyPattern__Group__0 ) )
            {
            // InternalFiacre.g:1243:2: ( ( rule__AnyPattern__Group__0 ) )
            // InternalFiacre.g:1244:3: ( rule__AnyPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAnyPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:1245:3: ( rule__AnyPattern__Group__0 )
            // InternalFiacre.g:1245:4: rule__AnyPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AnyPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAnyPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAnyPattern"


    // $ANTLR start "entryRuleConstantPattern"
    // InternalFiacre.g:1254:1: entryRuleConstantPattern : ruleConstantPattern EOF ;
    public final void entryRuleConstantPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:1255:1: ( ruleConstantPattern EOF )
            // InternalFiacre.g:1256:1: ruleConstantPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleConstantPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleConstantPattern"
    // InternalFiacre.g:1263:1: ruleConstantPattern : ( ( rule__ConstantPattern__ValueAssignment ) ) ;
    public final void ruleConstantPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1267:2: ( ( ( rule__ConstantPattern__ValueAssignment ) ) )
            // InternalFiacre.g:1268:2: ( ( rule__ConstantPattern__ValueAssignment ) )
            {
            // InternalFiacre.g:1268:2: ( ( rule__ConstantPattern__ValueAssignment ) )
            // InternalFiacre.g:1269:3: ( rule__ConstantPattern__ValueAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantPatternAccess().getValueAssignment()); 
            }
            // InternalFiacre.g:1270:3: ( rule__ConstantPattern__ValueAssignment )
            // InternalFiacre.g:1270:4: rule__ConstantPattern__ValueAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantPattern__ValueAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantPatternAccess().getValueAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConstantPattern"


    // $ANTLR start "entryRuleIntegerPattern"
    // InternalFiacre.g:1279:1: entryRuleIntegerPattern : ruleIntegerPattern EOF ;
    public final void entryRuleIntegerPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:1280:1: ( ruleIntegerPattern EOF )
            // InternalFiacre.g:1281:1: ruleIntegerPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleIntegerPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleIntegerPattern"
    // InternalFiacre.g:1288:1: ruleIntegerPattern : ( ( rule__IntegerPattern__Group__0 ) ) ;
    public final void ruleIntegerPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1292:2: ( ( ( rule__IntegerPattern__Group__0 ) ) )
            // InternalFiacre.g:1293:2: ( ( rule__IntegerPattern__Group__0 ) )
            {
            // InternalFiacre.g:1293:2: ( ( rule__IntegerPattern__Group__0 ) )
            // InternalFiacre.g:1294:3: ( rule__IntegerPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:1295:3: ( rule__IntegerPattern__Group__0 )
            // InternalFiacre.g:1295:4: rule__IntegerPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IntegerPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleIntegerPattern"


    // $ANTLR start "entryRuleIdentifierPattern"
    // InternalFiacre.g:1304:1: entryRuleIdentifierPattern : ruleIdentifierPattern EOF ;
    public final void entryRuleIdentifierPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:1305:1: ( ruleIdentifierPattern EOF )
            // InternalFiacre.g:1306:1: ruleIdentifierPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleIdentifierPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleIdentifierPattern"
    // InternalFiacre.g:1313:1: ruleIdentifierPattern : ( ( rule__IdentifierPattern__Alternatives ) ) ;
    public final void ruleIdentifierPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1317:2: ( ( ( rule__IdentifierPattern__Alternatives ) ) )
            // InternalFiacre.g:1318:2: ( ( rule__IdentifierPattern__Alternatives ) )
            {
            // InternalFiacre.g:1318:2: ( ( rule__IdentifierPattern__Alternatives ) )
            // InternalFiacre.g:1319:3: ( rule__IdentifierPattern__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1320:3: ( rule__IdentifierPattern__Alternatives )
            // InternalFiacre.g:1320:4: rule__IdentifierPattern__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleIdentifierPattern"


    // $ANTLR start "entryRuleConditionalStatement"
    // InternalFiacre.g:1329:1: entryRuleConditionalStatement : ruleConditionalStatement EOF ;
    public final void entryRuleConditionalStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1330:1: ( ruleConditionalStatement EOF )
            // InternalFiacre.g:1331:1: ruleConditionalStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleConditionalStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleConditionalStatement"
    // InternalFiacre.g:1338:1: ruleConditionalStatement : ( ( rule__ConditionalStatement__Group__0 ) ) ;
    public final void ruleConditionalStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1342:2: ( ( ( rule__ConditionalStatement__Group__0 ) ) )
            // InternalFiacre.g:1343:2: ( ( rule__ConditionalStatement__Group__0 ) )
            {
            // InternalFiacre.g:1343:2: ( ( rule__ConditionalStatement__Group__0 ) )
            // InternalFiacre.g:1344:3: ( rule__ConditionalStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1345:3: ( rule__ConditionalStatement__Group__0 )
            // InternalFiacre.g:1345:4: rule__ConditionalStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConditionalStatement"


    // $ANTLR start "entryRuleExtendedConditionalStatement"
    // InternalFiacre.g:1354:1: entryRuleExtendedConditionalStatement : ruleExtendedConditionalStatement EOF ;
    public final void entryRuleExtendedConditionalStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1355:1: ( ruleExtendedConditionalStatement EOF )
            // InternalFiacre.g:1356:1: ruleExtendedConditionalStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleExtendedConditionalStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleExtendedConditionalStatement"
    // InternalFiacre.g:1363:1: ruleExtendedConditionalStatement : ( ( rule__ExtendedConditionalStatement__Group__0 ) ) ;
    public final void ruleExtendedConditionalStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1367:2: ( ( ( rule__ExtendedConditionalStatement__Group__0 ) ) )
            // InternalFiacre.g:1368:2: ( ( rule__ExtendedConditionalStatement__Group__0 ) )
            {
            // InternalFiacre.g:1368:2: ( ( rule__ExtendedConditionalStatement__Group__0 ) )
            // InternalFiacre.g:1369:3: ( rule__ExtendedConditionalStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1370:3: ( rule__ExtendedConditionalStatement__Group__0 )
            // InternalFiacre.g:1370:4: rule__ExtendedConditionalStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleExtendedConditionalStatement"


    // $ANTLR start "entryRuleSelectStatement"
    // InternalFiacre.g:1379:1: entryRuleSelectStatement : ruleSelectStatement EOF ;
    public final void entryRuleSelectStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1380:1: ( ruleSelectStatement EOF )
            // InternalFiacre.g:1381:1: ruleSelectStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleSelectStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleSelectStatement"
    // InternalFiacre.g:1388:1: ruleSelectStatement : ( ( rule__SelectStatement__Group__0 ) ) ;
    public final void ruleSelectStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1392:2: ( ( ( rule__SelectStatement__Group__0 ) ) )
            // InternalFiacre.g:1393:2: ( ( rule__SelectStatement__Group__0 ) )
            {
            // InternalFiacre.g:1393:2: ( ( rule__SelectStatement__Group__0 ) )
            // InternalFiacre.g:1394:3: ( rule__SelectStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1395:3: ( rule__SelectStatement__Group__0 )
            // InternalFiacre.g:1395:4: rule__SelectStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSelectStatement"


    // $ANTLR start "entryRuleWhileStatement"
    // InternalFiacre.g:1404:1: entryRuleWhileStatement : ruleWhileStatement EOF ;
    public final void entryRuleWhileStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1405:1: ( ruleWhileStatement EOF )
            // InternalFiacre.g:1406:1: ruleWhileStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleWhileStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleWhileStatement"
    // InternalFiacre.g:1413:1: ruleWhileStatement : ( ( rule__WhileStatement__Group__0 ) ) ;
    public final void ruleWhileStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1417:2: ( ( ( rule__WhileStatement__Group__0 ) ) )
            // InternalFiacre.g:1418:2: ( ( rule__WhileStatement__Group__0 ) )
            {
            // InternalFiacre.g:1418:2: ( ( rule__WhileStatement__Group__0 ) )
            // InternalFiacre.g:1419:3: ( rule__WhileStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1420:3: ( rule__WhileStatement__Group__0 )
            // InternalFiacre.g:1420:4: rule__WhileStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleWhileStatement"


    // $ANTLR start "entryRuleForeachStatement"
    // InternalFiacre.g:1429:1: entryRuleForeachStatement : ruleForeachStatement EOF ;
    public final void entryRuleForeachStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1430:1: ( ruleForeachStatement EOF )
            // InternalFiacre.g:1431:1: ruleForeachStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleForeachStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleForeachStatement"
    // InternalFiacre.g:1438:1: ruleForeachStatement : ( ( rule__ForeachStatement__Group__0 ) ) ;
    public final void ruleForeachStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1442:2: ( ( ( rule__ForeachStatement__Group__0 ) ) )
            // InternalFiacre.g:1443:2: ( ( rule__ForeachStatement__Group__0 ) )
            {
            // InternalFiacre.g:1443:2: ( ( rule__ForeachStatement__Group__0 ) )
            // InternalFiacre.g:1444:3: ( rule__ForeachStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1445:3: ( rule__ForeachStatement__Group__0 )
            // InternalFiacre.g:1445:4: rule__ForeachStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleForeachStatement"


    // $ANTLR start "entryRuleToStatement"
    // InternalFiacre.g:1454:1: entryRuleToStatement : ruleToStatement EOF ;
    public final void entryRuleToStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1455:1: ( ruleToStatement EOF )
            // InternalFiacre.g:1456:1: ruleToStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleToStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleToStatement"
    // InternalFiacre.g:1463:1: ruleToStatement : ( ( rule__ToStatement__Group__0 ) ) ;
    public final void ruleToStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1467:2: ( ( ( rule__ToStatement__Group__0 ) ) )
            // InternalFiacre.g:1468:2: ( ( rule__ToStatement__Group__0 ) )
            {
            // InternalFiacre.g:1468:2: ( ( rule__ToStatement__Group__0 ) )
            // InternalFiacre.g:1469:3: ( rule__ToStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1470:3: ( rule__ToStatement__Group__0 )
            // InternalFiacre.g:1470:4: rule__ToStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ToStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleToStatement"


    // $ANTLR start "entryRuleCaseStatement"
    // InternalFiacre.g:1479:1: entryRuleCaseStatement : ruleCaseStatement EOF ;
    public final void entryRuleCaseStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1480:1: ( ruleCaseStatement EOF )
            // InternalFiacre.g:1481:1: ruleCaseStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleCaseStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleCaseStatement"
    // InternalFiacre.g:1488:1: ruleCaseStatement : ( ( rule__CaseStatement__Group__0 ) ) ;
    public final void ruleCaseStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1492:2: ( ( ( rule__CaseStatement__Group__0 ) ) )
            // InternalFiacre.g:1493:2: ( ( rule__CaseStatement__Group__0 ) )
            {
            // InternalFiacre.g:1493:2: ( ( rule__CaseStatement__Group__0 ) )
            // InternalFiacre.g:1494:3: ( rule__CaseStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1495:3: ( rule__CaseStatement__Group__0 )
            // InternalFiacre.g:1495:4: rule__CaseStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleCaseStatement"


    // $ANTLR start "entryRuleLoopStatement"
    // InternalFiacre.g:1504:1: entryRuleLoopStatement : ruleLoopStatement EOF ;
    public final void entryRuleLoopStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1505:1: ( ruleLoopStatement EOF )
            // InternalFiacre.g:1506:1: ruleLoopStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLoopStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLoopStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLoopStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLoopStatement"
    // InternalFiacre.g:1513:1: ruleLoopStatement : ( ( rule__LoopStatement__Group__0 ) ) ;
    public final void ruleLoopStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1517:2: ( ( ( rule__LoopStatement__Group__0 ) ) )
            // InternalFiacre.g:1518:2: ( ( rule__LoopStatement__Group__0 ) )
            {
            // InternalFiacre.g:1518:2: ( ( rule__LoopStatement__Group__0 ) )
            // InternalFiacre.g:1519:3: ( rule__LoopStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLoopStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1520:3: ( rule__LoopStatement__Group__0 )
            // InternalFiacre.g:1520:4: rule__LoopStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LoopStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLoopStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLoopStatement"


    // $ANTLR start "entryRuleOnStatement"
    // InternalFiacre.g:1529:1: entryRuleOnStatement : ruleOnStatement EOF ;
    public final void entryRuleOnStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1530:1: ( ruleOnStatement EOF )
            // InternalFiacre.g:1531:1: ruleOnStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getOnStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleOnStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getOnStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleOnStatement"
    // InternalFiacre.g:1538:1: ruleOnStatement : ( ( rule__OnStatement__Group__0 ) ) ;
    public final void ruleOnStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1542:2: ( ( ( rule__OnStatement__Group__0 ) ) )
            // InternalFiacre.g:1543:2: ( ( rule__OnStatement__Group__0 ) )
            {
            // InternalFiacre.g:1543:2: ( ( rule__OnStatement__Group__0 ) )
            // InternalFiacre.g:1544:3: ( rule__OnStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getOnStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1545:3: ( rule__OnStatement__Group__0 )
            // InternalFiacre.g:1545:4: rule__OnStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__OnStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getOnStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleOnStatement"


    // $ANTLR start "entryRuleWaitStatement"
    // InternalFiacre.g:1554:1: entryRuleWaitStatement : ruleWaitStatement EOF ;
    public final void entryRuleWaitStatement() throws RecognitionException {
        try {
            // InternalFiacre.g:1555:1: ( ruleWaitStatement EOF )
            // InternalFiacre.g:1556:1: ruleWaitStatement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleWaitStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleWaitStatement"
    // InternalFiacre.g:1563:1: ruleWaitStatement : ( ( rule__WaitStatement__Group__0 ) ) ;
    public final void ruleWaitStatement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1567:2: ( ( ( rule__WaitStatement__Group__0 ) ) )
            // InternalFiacre.g:1568:2: ( ( rule__WaitStatement__Group__0 ) )
            {
            // InternalFiacre.g:1568:2: ( ( rule__WaitStatement__Group__0 ) )
            // InternalFiacre.g:1569:3: ( rule__WaitStatement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getGroup()); 
            }
            // InternalFiacre.g:1570:3: ( rule__WaitStatement__Group__0 )
            // InternalFiacre.g:1570:4: rule__WaitStatement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleWaitStatement"


    // $ANTLR start "entryRuleComposition"
    // InternalFiacre.g:1579:1: entryRuleComposition : ruleComposition EOF ;
    public final void entryRuleComposition() throws RecognitionException {
        try {
            // InternalFiacre.g:1580:1: ( ruleComposition EOF )
            // InternalFiacre.g:1581:1: ruleComposition EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleComposition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleComposition"
    // InternalFiacre.g:1588:1: ruleComposition : ( ( rule__Composition__Group__0 ) ) ;
    public final void ruleComposition() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1592:2: ( ( ( rule__Composition__Group__0 ) ) )
            // InternalFiacre.g:1593:2: ( ( rule__Composition__Group__0 ) )
            {
            // InternalFiacre.g:1593:2: ( ( rule__Composition__Group__0 ) )
            // InternalFiacre.g:1594:3: ( rule__Composition__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getGroup()); 
            }
            // InternalFiacre.g:1595:3: ( rule__Composition__Group__0 )
            // InternalFiacre.g:1595:4: rule__Composition__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleComposition"


    // $ANTLR start "entryRuleBlock"
    // InternalFiacre.g:1604:1: entryRuleBlock : ruleBlock EOF ;
    public final void entryRuleBlock() throws RecognitionException {
        try {
            // InternalFiacre.g:1605:1: ( ruleBlock EOF )
            // InternalFiacre.g:1606:1: ruleBlock EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleBlock();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleBlock"
    // InternalFiacre.g:1613:1: ruleBlock : ( ( rule__Block__Alternatives ) ) ;
    public final void ruleBlock() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1617:2: ( ( ( rule__Block__Alternatives ) ) )
            // InternalFiacre.g:1618:2: ( ( rule__Block__Alternatives ) )
            {
            // InternalFiacre.g:1618:2: ( ( rule__Block__Alternatives ) )
            // InternalFiacre.g:1619:3: ( rule__Block__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1620:3: ( rule__Block__Alternatives )
            // InternalFiacre.g:1620:4: rule__Block__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Block__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBlock"


    // $ANTLR start "entryRuleCompositeBlock"
    // InternalFiacre.g:1629:1: entryRuleCompositeBlock : ruleCompositeBlock EOF ;
    public final void entryRuleCompositeBlock() throws RecognitionException {
        try {
            // InternalFiacre.g:1630:1: ( ruleCompositeBlock EOF )
            // InternalFiacre.g:1631:1: ruleCompositeBlock EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleCompositeBlock();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleCompositeBlock"
    // InternalFiacre.g:1638:1: ruleCompositeBlock : ( ( rule__CompositeBlock__Group__0 ) ) ;
    public final void ruleCompositeBlock() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1642:2: ( ( ( rule__CompositeBlock__Group__0 ) ) )
            // InternalFiacre.g:1643:2: ( ( rule__CompositeBlock__Group__0 ) )
            {
            // InternalFiacre.g:1643:2: ( ( rule__CompositeBlock__Group__0 ) )
            // InternalFiacre.g:1644:3: ( rule__CompositeBlock__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getGroup()); 
            }
            // InternalFiacre.g:1645:3: ( rule__CompositeBlock__Group__0 )
            // InternalFiacre.g:1645:4: rule__CompositeBlock__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleCompositeBlock"


    // $ANTLR start "entryRuleInstanceDeclaration"
    // InternalFiacre.g:1654:1: entryRuleInstanceDeclaration : ruleInstanceDeclaration EOF ;
    public final void entryRuleInstanceDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:1655:1: ( ruleInstanceDeclaration EOF )
            // InternalFiacre.g:1656:1: ruleInstanceDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleInstanceDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleInstanceDeclaration"
    // InternalFiacre.g:1663:1: ruleInstanceDeclaration : ( ( rule__InstanceDeclaration__Group__0 ) ) ;
    public final void ruleInstanceDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1667:2: ( ( ( rule__InstanceDeclaration__Group__0 ) ) )
            // InternalFiacre.g:1668:2: ( ( rule__InstanceDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:1668:2: ( ( rule__InstanceDeclaration__Group__0 ) )
            // InternalFiacre.g:1669:3: ( rule__InstanceDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:1670:3: ( rule__InstanceDeclaration__Group__0 )
            // InternalFiacre.g:1670:4: rule__InstanceDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleInstanceDeclaration"


    // $ANTLR start "entryRulePortSet"
    // InternalFiacre.g:1679:1: entryRulePortSet : rulePortSet EOF ;
    public final void entryRulePortSet() throws RecognitionException {
        try {
            // InternalFiacre.g:1680:1: ( rulePortSet EOF )
            // InternalFiacre.g:1681:1: rulePortSet EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePortSet();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePortSet"
    // InternalFiacre.g:1688:1: rulePortSet : ( ( rule__PortSet__Alternatives ) ) ;
    public final void rulePortSet() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1692:2: ( ( ( rule__PortSet__Alternatives ) ) )
            // InternalFiacre.g:1693:2: ( ( rule__PortSet__Alternatives ) )
            {
            // InternalFiacre.g:1693:2: ( ( rule__PortSet__Alternatives ) )
            // InternalFiacre.g:1694:3: ( rule__PortSet__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1695:3: ( rule__PortSet__Alternatives )
            // InternalFiacre.g:1695:4: rule__PortSet__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePortSet"


    // $ANTLR start "entryRuleComponentInstance"
    // InternalFiacre.g:1704:1: entryRuleComponentInstance : ruleComponentInstance EOF ;
    public final void entryRuleComponentInstance() throws RecognitionException {
        try {
            // InternalFiacre.g:1705:1: ( ruleComponentInstance EOF )
            // InternalFiacre.g:1706:1: ruleComponentInstance EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleComponentInstance();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleComponentInstance"
    // InternalFiacre.g:1713:1: ruleComponentInstance : ( ( rule__ComponentInstance__Group__0 ) ) ;
    public final void ruleComponentInstance() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1717:2: ( ( ( rule__ComponentInstance__Group__0 ) ) )
            // InternalFiacre.g:1718:2: ( ( rule__ComponentInstance__Group__0 ) )
            {
            // InternalFiacre.g:1718:2: ( ( rule__ComponentInstance__Group__0 ) )
            // InternalFiacre.g:1719:3: ( rule__ComponentInstance__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getGroup()); 
            }
            // InternalFiacre.g:1720:3: ( rule__ComponentInstance__Group__0 )
            // InternalFiacre.g:1720:4: rule__ComponentInstance__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleComponentInstance"


    // $ANTLR start "entryRuleExpression"
    // InternalFiacre.g:1729:1: entryRuleExpression : ruleExpression EOF ;
    public final void entryRuleExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:1730:1: ( ruleExpression EOF )
            // InternalFiacre.g:1731:1: ruleExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleExpression"
    // InternalFiacre.g:1738:1: ruleExpression : ( ruleQuantifiedExpression ) ;
    public final void ruleExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1742:2: ( ( ruleQuantifiedExpression ) )
            // InternalFiacre.g:1743:2: ( ruleQuantifiedExpression )
            {
            // InternalFiacre.g:1743:2: ( ruleQuantifiedExpression )
            // InternalFiacre.g:1744:3: ruleQuantifiedExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExpressionAccess().getQuantifiedExpressionParserRuleCall()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQuantifiedExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExpressionAccess().getQuantifiedExpressionParserRuleCall()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleExpression"


    // $ANTLR start "entryRuleQuantifiedExpression"
    // InternalFiacre.g:1754:1: entryRuleQuantifiedExpression : ruleQuantifiedExpression EOF ;
    public final void entryRuleQuantifiedExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:1755:1: ( ruleQuantifiedExpression EOF )
            // InternalFiacre.g:1756:1: ruleQuantifiedExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleQuantifiedExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleQuantifiedExpression"
    // InternalFiacre.g:1763:1: ruleQuantifiedExpression : ( ( rule__QuantifiedExpression__Alternatives ) ) ;
    public final void ruleQuantifiedExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1767:2: ( ( ( rule__QuantifiedExpression__Alternatives ) ) )
            // InternalFiacre.g:1768:2: ( ( rule__QuantifiedExpression__Alternatives ) )
            {
            // InternalFiacre.g:1768:2: ( ( rule__QuantifiedExpression__Alternatives ) )
            // InternalFiacre.g:1769:3: ( rule__QuantifiedExpression__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getAlternatives()); 
            }
            // InternalFiacre.g:1770:3: ( rule__QuantifiedExpression__Alternatives )
            // InternalFiacre.g:1770:4: rule__QuantifiedExpression__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleQuantifiedExpression"


    // $ANTLR start "entryRuleConditional"
    // InternalFiacre.g:1779:1: entryRuleConditional : ruleConditional EOF ;
    public final void entryRuleConditional() throws RecognitionException {
        try {
            // InternalFiacre.g:1780:1: ( ruleConditional EOF )
            // InternalFiacre.g:1781:1: ruleConditional EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleConditional();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleConditional"
    // InternalFiacre.g:1788:1: ruleConditional : ( ( rule__Conditional__Group__0 ) ) ;
    public final void ruleConditional() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1792:2: ( ( ( rule__Conditional__Group__0 ) ) )
            // InternalFiacre.g:1793:2: ( ( rule__Conditional__Group__0 ) )
            {
            // InternalFiacre.g:1793:2: ( ( rule__Conditional__Group__0 ) )
            // InternalFiacre.g:1794:3: ( rule__Conditional__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getGroup()); 
            }
            // InternalFiacre.g:1795:3: ( rule__Conditional__Group__0 )
            // InternalFiacre.g:1795:4: rule__Conditional__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConditional"


    // $ANTLR start "entryRuleDisjunction"
    // InternalFiacre.g:1804:1: entryRuleDisjunction : ruleDisjunction EOF ;
    public final void entryRuleDisjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:1805:1: ( ruleDisjunction EOF )
            // InternalFiacre.g:1806:1: ruleDisjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDisjunction"
    // InternalFiacre.g:1813:1: ruleDisjunction : ( ( rule__Disjunction__Group__0 ) ) ;
    public final void ruleDisjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1817:2: ( ( ( rule__Disjunction__Group__0 ) ) )
            // InternalFiacre.g:1818:2: ( ( rule__Disjunction__Group__0 ) )
            {
            // InternalFiacre.g:1818:2: ( ( rule__Disjunction__Group__0 ) )
            // InternalFiacre.g:1819:3: ( rule__Disjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:1820:3: ( rule__Disjunction__Group__0 )
            // InternalFiacre.g:1820:4: rule__Disjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDisjunction"


    // $ANTLR start "entryRuleImplication"
    // InternalFiacre.g:1829:1: entryRuleImplication : ruleImplication EOF ;
    public final void entryRuleImplication() throws RecognitionException {
        try {
            // InternalFiacre.g:1830:1: ( ruleImplication EOF )
            // InternalFiacre.g:1831:1: ruleImplication EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleImplication"
    // InternalFiacre.g:1838:1: ruleImplication : ( ( rule__Implication__Group__0 ) ) ;
    public final void ruleImplication() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1842:2: ( ( ( rule__Implication__Group__0 ) ) )
            // InternalFiacre.g:1843:2: ( ( rule__Implication__Group__0 ) )
            {
            // InternalFiacre.g:1843:2: ( ( rule__Implication__Group__0 ) )
            // InternalFiacre.g:1844:3: ( rule__Implication__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getGroup()); 
            }
            // InternalFiacre.g:1845:3: ( rule__Implication__Group__0 )
            // InternalFiacre.g:1845:4: rule__Implication__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleImplication"


    // $ANTLR start "entryRuleConjunction"
    // InternalFiacre.g:1854:1: entryRuleConjunction : ruleConjunction EOF ;
    public final void entryRuleConjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:1855:1: ( ruleConjunction EOF )
            // InternalFiacre.g:1856:1: ruleConjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleConjunction"
    // InternalFiacre.g:1863:1: ruleConjunction : ( ( rule__Conjunction__Group__0 ) ) ;
    public final void ruleConjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1867:2: ( ( ( rule__Conjunction__Group__0 ) ) )
            // InternalFiacre.g:1868:2: ( ( rule__Conjunction__Group__0 ) )
            {
            // InternalFiacre.g:1868:2: ( ( rule__Conjunction__Group__0 ) )
            // InternalFiacre.g:1869:3: ( rule__Conjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:1870:3: ( rule__Conjunction__Group__0 )
            // InternalFiacre.g:1870:4: rule__Conjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConjunction"


    // $ANTLR start "entryRuleComparison"
    // InternalFiacre.g:1879:1: entryRuleComparison : ruleComparison EOF ;
    public final void entryRuleComparison() throws RecognitionException {
        try {
            // InternalFiacre.g:1880:1: ( ruleComparison EOF )
            // InternalFiacre.g:1881:1: ruleComparison EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleComparison();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleComparison"
    // InternalFiacre.g:1888:1: ruleComparison : ( ( rule__Comparison__Group__0 ) ) ;
    public final void ruleComparison() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1892:2: ( ( ( rule__Comparison__Group__0 ) ) )
            // InternalFiacre.g:1893:2: ( ( rule__Comparison__Group__0 ) )
            {
            // InternalFiacre.g:1893:2: ( ( rule__Comparison__Group__0 ) )
            // InternalFiacre.g:1894:3: ( rule__Comparison__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getGroup()); 
            }
            // InternalFiacre.g:1895:3: ( rule__Comparison__Group__0 )
            // InternalFiacre.g:1895:4: rule__Comparison__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleComparison"


    // $ANTLR start "entryRuleAddition"
    // InternalFiacre.g:1904:1: entryRuleAddition : ruleAddition EOF ;
    public final void entryRuleAddition() throws RecognitionException {
        try {
            // InternalFiacre.g:1905:1: ( ruleAddition EOF )
            // InternalFiacre.g:1906:1: ruleAddition EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAddition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAddition"
    // InternalFiacre.g:1913:1: ruleAddition : ( ( rule__Addition__Group__0 ) ) ;
    public final void ruleAddition() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1917:2: ( ( ( rule__Addition__Group__0 ) ) )
            // InternalFiacre.g:1918:2: ( ( rule__Addition__Group__0 ) )
            {
            // InternalFiacre.g:1918:2: ( ( rule__Addition__Group__0 ) )
            // InternalFiacre.g:1919:3: ( rule__Addition__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getGroup()); 
            }
            // InternalFiacre.g:1920:3: ( rule__Addition__Group__0 )
            // InternalFiacre.g:1920:4: rule__Addition__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAddition"


    // $ANTLR start "entryRuleSubstraction"
    // InternalFiacre.g:1929:1: entryRuleSubstraction : ruleSubstraction EOF ;
    public final void entryRuleSubstraction() throws RecognitionException {
        try {
            // InternalFiacre.g:1930:1: ( ruleSubstraction EOF )
            // InternalFiacre.g:1931:1: ruleSubstraction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleSubstraction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleSubstraction"
    // InternalFiacre.g:1938:1: ruleSubstraction : ( ( rule__Substraction__Group__0 ) ) ;
    public final void ruleSubstraction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1942:2: ( ( ( rule__Substraction__Group__0 ) ) )
            // InternalFiacre.g:1943:2: ( ( rule__Substraction__Group__0 ) )
            {
            // InternalFiacre.g:1943:2: ( ( rule__Substraction__Group__0 ) )
            // InternalFiacre.g:1944:3: ( rule__Substraction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getGroup()); 
            }
            // InternalFiacre.g:1945:3: ( rule__Substraction__Group__0 )
            // InternalFiacre.g:1945:4: rule__Substraction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSubstraction"


    // $ANTLR start "entryRuleMultiplication"
    // InternalFiacre.g:1954:1: entryRuleMultiplication : ruleMultiplication EOF ;
    public final void entryRuleMultiplication() throws RecognitionException {
        try {
            // InternalFiacre.g:1955:1: ( ruleMultiplication EOF )
            // InternalFiacre.g:1956:1: ruleMultiplication EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleMultiplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleMultiplication"
    // InternalFiacre.g:1963:1: ruleMultiplication : ( ( rule__Multiplication__Group__0 ) ) ;
    public final void ruleMultiplication() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1967:2: ( ( ( rule__Multiplication__Group__0 ) ) )
            // InternalFiacre.g:1968:2: ( ( rule__Multiplication__Group__0 ) )
            {
            // InternalFiacre.g:1968:2: ( ( rule__Multiplication__Group__0 ) )
            // InternalFiacre.g:1969:3: ( rule__Multiplication__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getGroup()); 
            }
            // InternalFiacre.g:1970:3: ( rule__Multiplication__Group__0 )
            // InternalFiacre.g:1970:4: rule__Multiplication__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMultiplication"


    // $ANTLR start "entryRuleDivision"
    // InternalFiacre.g:1979:1: entryRuleDivision : ruleDivision EOF ;
    public final void entryRuleDivision() throws RecognitionException {
        try {
            // InternalFiacre.g:1980:1: ( ruleDivision EOF )
            // InternalFiacre.g:1981:1: ruleDivision EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDivision();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDivision"
    // InternalFiacre.g:1988:1: ruleDivision : ( ( rule__Division__Group__0 ) ) ;
    public final void ruleDivision() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:1992:2: ( ( ( rule__Division__Group__0 ) ) )
            // InternalFiacre.g:1993:2: ( ( rule__Division__Group__0 ) )
            {
            // InternalFiacre.g:1993:2: ( ( rule__Division__Group__0 ) )
            // InternalFiacre.g:1994:3: ( rule__Division__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getGroup()); 
            }
            // InternalFiacre.g:1995:3: ( rule__Division__Group__0 )
            // InternalFiacre.g:1995:4: rule__Division__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDivision"


    // $ANTLR start "entryRuleModulo"
    // InternalFiacre.g:2004:1: entryRuleModulo : ruleModulo EOF ;
    public final void entryRuleModulo() throws RecognitionException {
        try {
            // InternalFiacre.g:2005:1: ( ruleModulo EOF )
            // InternalFiacre.g:2006:1: ruleModulo EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleModulo();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleModulo"
    // InternalFiacre.g:2013:1: ruleModulo : ( ( rule__Modulo__Group__0 ) ) ;
    public final void ruleModulo() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2017:2: ( ( ( rule__Modulo__Group__0 ) ) )
            // InternalFiacre.g:2018:2: ( ( rule__Modulo__Group__0 ) )
            {
            // InternalFiacre.g:2018:2: ( ( rule__Modulo__Group__0 ) )
            // InternalFiacre.g:2019:3: ( rule__Modulo__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getGroup()); 
            }
            // InternalFiacre.g:2020:3: ( rule__Modulo__Group__0 )
            // InternalFiacre.g:2020:4: rule__Modulo__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModulo"


    // $ANTLR start "entryRuleUnaryExpression"
    // InternalFiacre.g:2029:1: entryRuleUnaryExpression : ruleUnaryExpression EOF ;
    public final void entryRuleUnaryExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2030:1: ( ruleUnaryExpression EOF )
            // InternalFiacre.g:2031:1: ruleUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUnaryExpression"
    // InternalFiacre.g:2038:1: ruleUnaryExpression : ( ( rule__UnaryExpression__Alternatives ) ) ;
    public final void ruleUnaryExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2042:2: ( ( ( rule__UnaryExpression__Alternatives ) ) )
            // InternalFiacre.g:2043:2: ( ( rule__UnaryExpression__Alternatives ) )
            {
            // InternalFiacre.g:2043:2: ( ( rule__UnaryExpression__Alternatives ) )
            // InternalFiacre.g:2044:3: ( rule__UnaryExpression__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2045:3: ( rule__UnaryExpression__Alternatives )
            // InternalFiacre.g:2045:4: rule__UnaryExpression__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnaryExpression"


    // $ANTLR start "entryRuleProjection"
    // InternalFiacre.g:2054:1: entryRuleProjection : ruleProjection EOF ;
    public final void entryRuleProjection() throws RecognitionException {
        try {
            // InternalFiacre.g:2055:1: ( ruleProjection EOF )
            // InternalFiacre.g:2056:1: ruleProjection EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleProjection();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleProjection"
    // InternalFiacre.g:2063:1: ruleProjection : ( ( rule__Projection__Group__0 ) ) ;
    public final void ruleProjection() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2067:2: ( ( ( rule__Projection__Group__0 ) ) )
            // InternalFiacre.g:2068:2: ( ( rule__Projection__Group__0 ) )
            {
            // InternalFiacre.g:2068:2: ( ( rule__Projection__Group__0 ) )
            // InternalFiacre.g:2069:3: ( rule__Projection__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getGroup()); 
            }
            // InternalFiacre.g:2070:3: ( rule__Projection__Group__0 )
            // InternalFiacre.g:2070:4: rule__Projection__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleProjection"


    // $ANTLR start "entryRuleAtomicExpression"
    // InternalFiacre.g:2079:1: entryRuleAtomicExpression : ruleAtomicExpression EOF ;
    public final void entryRuleAtomicExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2080:1: ( ruleAtomicExpression EOF )
            // InternalFiacre.g:2081:1: ruleAtomicExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAtomicExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAtomicExpression"
    // InternalFiacre.g:2088:1: ruleAtomicExpression : ( ( rule__AtomicExpression__Alternatives ) ) ;
    public final void ruleAtomicExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2092:2: ( ( ( rule__AtomicExpression__Alternatives ) ) )
            // InternalFiacre.g:2093:2: ( ( rule__AtomicExpression__Alternatives ) )
            {
            // InternalFiacre.g:2093:2: ( ( rule__AtomicExpression__Alternatives ) )
            // InternalFiacre.g:2094:3: ( rule__AtomicExpression__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicExpressionAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2095:3: ( rule__AtomicExpression__Alternatives )
            // InternalFiacre.g:2095:4: rule__AtomicExpression__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicExpression__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicExpressionAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAtomicExpression"


    // $ANTLR start "entryRuleReferenceExpression"
    // InternalFiacre.g:2104:1: entryRuleReferenceExpression : ruleReferenceExpression EOF ;
    public final void entryRuleReferenceExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2105:1: ( ruleReferenceExpression EOF )
            // InternalFiacre.g:2106:1: ruleReferenceExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleReferenceExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleReferenceExpression"
    // InternalFiacre.g:2113:1: ruleReferenceExpression : ( ( rule__ReferenceExpression__Group__0 ) ) ;
    public final void ruleReferenceExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2117:2: ( ( ( rule__ReferenceExpression__Group__0 ) ) )
            // InternalFiacre.g:2118:2: ( ( rule__ReferenceExpression__Group__0 ) )
            {
            // InternalFiacre.g:2118:2: ( ( rule__ReferenceExpression__Group__0 ) )
            // InternalFiacre.g:2119:3: ( rule__ReferenceExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2120:3: ( rule__ReferenceExpression__Group__0 )
            // InternalFiacre.g:2120:4: rule__ReferenceExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReferenceExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleReferenceExpression"


    // $ANTLR start "entryRuleIdentifierExpression"
    // InternalFiacre.g:2129:1: entryRuleIdentifierExpression : ruleIdentifierExpression EOF ;
    public final void entryRuleIdentifierExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2130:1: ( ruleIdentifierExpression EOF )
            // InternalFiacre.g:2131:1: ruleIdentifierExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleIdentifierExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleIdentifierExpression"
    // InternalFiacre.g:2138:1: ruleIdentifierExpression : ( ( rule__IdentifierExpression__Alternatives ) ) ;
    public final void ruleIdentifierExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2142:2: ( ( ( rule__IdentifierExpression__Alternatives ) ) )
            // InternalFiacre.g:2143:2: ( ( rule__IdentifierExpression__Alternatives ) )
            {
            // InternalFiacre.g:2143:2: ( ( rule__IdentifierExpression__Alternatives ) )
            // InternalFiacre.g:2144:3: ( rule__IdentifierExpression__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2145:3: ( rule__IdentifierExpression__Alternatives )
            // InternalFiacre.g:2145:4: rule__IdentifierExpression__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleIdentifierExpression"


    // $ANTLR start "entryRuleRecordExpression"
    // InternalFiacre.g:2154:1: entryRuleRecordExpression : ruleRecordExpression EOF ;
    public final void entryRuleRecordExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2155:1: ( ruleRecordExpression EOF )
            // InternalFiacre.g:2156:1: ruleRecordExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRecordExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRecordExpression"
    // InternalFiacre.g:2163:1: ruleRecordExpression : ( ( rule__RecordExpression__Group__0 ) ) ;
    public final void ruleRecordExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2167:2: ( ( ( rule__RecordExpression__Group__0 ) ) )
            // InternalFiacre.g:2168:2: ( ( rule__RecordExpression__Group__0 ) )
            {
            // InternalFiacre.g:2168:2: ( ( rule__RecordExpression__Group__0 ) )
            // InternalFiacre.g:2169:3: ( rule__RecordExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2170:3: ( rule__RecordExpression__Group__0 )
            // InternalFiacre.g:2170:4: rule__RecordExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRecordExpression"


    // $ANTLR start "entryRuleFieldExpression"
    // InternalFiacre.g:2179:1: entryRuleFieldExpression : ruleFieldExpression EOF ;
    public final void entryRuleFieldExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2180:1: ( ruleFieldExpression EOF )
            // InternalFiacre.g:2181:1: ruleFieldExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleFieldExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleFieldExpression"
    // InternalFiacre.g:2188:1: ruleFieldExpression : ( ( rule__FieldExpression__Group__0 ) ) ;
    public final void ruleFieldExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2192:2: ( ( ( rule__FieldExpression__Group__0 ) ) )
            // InternalFiacre.g:2193:2: ( ( rule__FieldExpression__Group__0 ) )
            {
            // InternalFiacre.g:2193:2: ( ( rule__FieldExpression__Group__0 ) )
            // InternalFiacre.g:2194:3: ( rule__FieldExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2195:3: ( rule__FieldExpression__Group__0 )
            // InternalFiacre.g:2195:4: rule__FieldExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFieldExpression"


    // $ANTLR start "entryRuleArrayExpression"
    // InternalFiacre.g:2204:1: entryRuleArrayExpression : ruleArrayExpression EOF ;
    public final void entryRuleArrayExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2205:1: ( ruleArrayExpression EOF )
            // InternalFiacre.g:2206:1: ruleArrayExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleArrayExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleArrayExpression"
    // InternalFiacre.g:2213:1: ruleArrayExpression : ( ( rule__ArrayExpression__Group__0 ) ) ;
    public final void ruleArrayExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2217:2: ( ( ( rule__ArrayExpression__Group__0 ) ) )
            // InternalFiacre.g:2218:2: ( ( rule__ArrayExpression__Group__0 ) )
            {
            // InternalFiacre.g:2218:2: ( ( rule__ArrayExpression__Group__0 ) )
            // InternalFiacre.g:2219:3: ( rule__ArrayExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2220:3: ( rule__ArrayExpression__Group__0 )
            // InternalFiacre.g:2220:4: rule__ArrayExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleArrayExpression"


    // $ANTLR start "entryRuleQueueExpression"
    // InternalFiacre.g:2229:1: entryRuleQueueExpression : ruleQueueExpression EOF ;
    public final void entryRuleQueueExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2230:1: ( ruleQueueExpression EOF )
            // InternalFiacre.g:2231:1: ruleQueueExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleQueueExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleQueueExpression"
    // InternalFiacre.g:2238:1: ruleQueueExpression : ( ( rule__QueueExpression__Group__0 ) ) ;
    public final void ruleQueueExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2242:2: ( ( ( rule__QueueExpression__Group__0 ) ) )
            // InternalFiacre.g:2243:2: ( ( rule__QueueExpression__Group__0 ) )
            {
            // InternalFiacre.g:2243:2: ( ( rule__QueueExpression__Group__0 ) )
            // InternalFiacre.g:2244:3: ( rule__QueueExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2245:3: ( rule__QueueExpression__Group__0 )
            // InternalFiacre.g:2245:4: rule__QueueExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleQueueExpression"


    // $ANTLR start "entryRuleEnqueueExpression"
    // InternalFiacre.g:2254:1: entryRuleEnqueueExpression : ruleEnqueueExpression EOF ;
    public final void entryRuleEnqueueExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2255:1: ( ruleEnqueueExpression EOF )
            // InternalFiacre.g:2256:1: ruleEnqueueExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleEnqueueExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleEnqueueExpression"
    // InternalFiacre.g:2263:1: ruleEnqueueExpression : ( ( rule__EnqueueExpression__Group__0 ) ) ;
    public final void ruleEnqueueExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2267:2: ( ( ( rule__EnqueueExpression__Group__0 ) ) )
            // InternalFiacre.g:2268:2: ( ( rule__EnqueueExpression__Group__0 ) )
            {
            // InternalFiacre.g:2268:2: ( ( rule__EnqueueExpression__Group__0 ) )
            // InternalFiacre.g:2269:3: ( rule__EnqueueExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2270:3: ( rule__EnqueueExpression__Group__0 )
            // InternalFiacre.g:2270:4: rule__EnqueueExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEnqueueExpression"


    // $ANTLR start "entryRuleAppendExpression"
    // InternalFiacre.g:2279:1: entryRuleAppendExpression : ruleAppendExpression EOF ;
    public final void entryRuleAppendExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2280:1: ( ruleAppendExpression EOF )
            // InternalFiacre.g:2281:1: ruleAppendExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAppendExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAppendExpression"
    // InternalFiacre.g:2288:1: ruleAppendExpression : ( ( rule__AppendExpression__Group__0 ) ) ;
    public final void ruleAppendExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2292:2: ( ( ( rule__AppendExpression__Group__0 ) ) )
            // InternalFiacre.g:2293:2: ( ( rule__AppendExpression__Group__0 ) )
            {
            // InternalFiacre.g:2293:2: ( ( rule__AppendExpression__Group__0 ) )
            // InternalFiacre.g:2294:3: ( rule__AppendExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getGroup()); 
            }
            // InternalFiacre.g:2295:3: ( rule__AppendExpression__Group__0 )
            // InternalFiacre.g:2295:4: rule__AppendExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAppendExpression"


    // $ANTLR start "entryRuleLiteralExpression"
    // InternalFiacre.g:2304:1: entryRuleLiteralExpression : ruleLiteralExpression EOF ;
    public final void entryRuleLiteralExpression() throws RecognitionException {
        try {
            // InternalFiacre.g:2305:1: ( ruleLiteralExpression EOF )
            // InternalFiacre.g:2306:1: ruleLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLiteralExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLiteralExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLiteralExpressionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLiteralExpression"
    // InternalFiacre.g:2313:1: ruleLiteralExpression : ( ( rule__LiteralExpression__Alternatives ) ) ;
    public final void ruleLiteralExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2317:2: ( ( ( rule__LiteralExpression__Alternatives ) ) )
            // InternalFiacre.g:2318:2: ( ( rule__LiteralExpression__Alternatives ) )
            {
            // InternalFiacre.g:2318:2: ( ( rule__LiteralExpression__Alternatives ) )
            // InternalFiacre.g:2319:3: ( rule__LiteralExpression__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLiteralExpressionAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2320:3: ( rule__LiteralExpression__Alternatives )
            // InternalFiacre.g:2320:4: rule__LiteralExpression__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LiteralExpression__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLiteralExpressionAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLiteralExpression"


    // $ANTLR start "entryRuleBooleanLiteral"
    // InternalFiacre.g:2329:1: entryRuleBooleanLiteral : ruleBooleanLiteral EOF ;
    public final void entryRuleBooleanLiteral() throws RecognitionException {
        try {
            // InternalFiacre.g:2330:1: ( ruleBooleanLiteral EOF )
            // InternalFiacre.g:2331:1: ruleBooleanLiteral EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleBooleanLiteral();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleBooleanLiteral"
    // InternalFiacre.g:2338:1: ruleBooleanLiteral : ( ( rule__BooleanLiteral__Alternatives ) ) ;
    public final void ruleBooleanLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2342:2: ( ( ( rule__BooleanLiteral__Alternatives ) ) )
            // InternalFiacre.g:2343:2: ( ( rule__BooleanLiteral__Alternatives ) )
            {
            // InternalFiacre.g:2343:2: ( ( rule__BooleanLiteral__Alternatives ) )
            // InternalFiacre.g:2344:3: ( rule__BooleanLiteral__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2345:3: ( rule__BooleanLiteral__Alternatives )
            // InternalFiacre.g:2345:4: rule__BooleanLiteral__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BooleanLiteral__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBooleanLiteral"


    // $ANTLR start "entryRuleNaturalLiteral"
    // InternalFiacre.g:2354:1: entryRuleNaturalLiteral : ruleNaturalLiteral EOF ;
    public final void entryRuleNaturalLiteral() throws RecognitionException {
        try {
            // InternalFiacre.g:2355:1: ( ruleNaturalLiteral EOF )
            // InternalFiacre.g:2356:1: ruleNaturalLiteral EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLiteralRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNaturalLiteral();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLiteralRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNaturalLiteral"
    // InternalFiacre.g:2363:1: ruleNaturalLiteral : ( ( rule__NaturalLiteral__ValueAssignment ) ) ;
    public final void ruleNaturalLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2367:2: ( ( ( rule__NaturalLiteral__ValueAssignment ) ) )
            // InternalFiacre.g:2368:2: ( ( rule__NaturalLiteral__ValueAssignment ) )
            {
            // InternalFiacre.g:2368:2: ( ( rule__NaturalLiteral__ValueAssignment ) )
            // InternalFiacre.g:2369:3: ( rule__NaturalLiteral__ValueAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLiteralAccess().getValueAssignment()); 
            }
            // InternalFiacre.g:2370:3: ( rule__NaturalLiteral__ValueAssignment )
            // InternalFiacre.g:2370:4: rule__NaturalLiteral__ValueAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLiteral__ValueAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLiteralAccess().getValueAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNaturalLiteral"


    // $ANTLR start "entryRuleLowerBound"
    // InternalFiacre.g:2379:1: entryRuleLowerBound : ruleLowerBound EOF ;
    public final void entryRuleLowerBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2380:1: ( ruleLowerBound EOF )
            // InternalFiacre.g:2381:1: ruleLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLowerBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLowerBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLowerBound"
    // InternalFiacre.g:2388:1: ruleLowerBound : ( ( rule__LowerBound__Alternatives ) ) ;
    public final void ruleLowerBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2392:2: ( ( ( rule__LowerBound__Alternatives ) ) )
            // InternalFiacre.g:2393:2: ( ( rule__LowerBound__Alternatives ) )
            {
            // InternalFiacre.g:2393:2: ( ( rule__LowerBound__Alternatives ) )
            // InternalFiacre.g:2394:3: ( rule__LowerBound__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLowerBoundAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2395:3: ( rule__LowerBound__Alternatives )
            // InternalFiacre.g:2395:4: rule__LowerBound__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LowerBound__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLowerBoundAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLowerBound"


    // $ANTLR start "entryRuleUpperBound"
    // InternalFiacre.g:2404:1: entryRuleUpperBound : ruleUpperBound EOF ;
    public final void entryRuleUpperBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2405:1: ( ruleUpperBound EOF )
            // InternalFiacre.g:2406:1: ruleUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUpperBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUpperBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleUpperBound"
    // InternalFiacre.g:2413:1: ruleUpperBound : ( ( rule__UpperBound__Alternatives ) ) ;
    public final void ruleUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2417:2: ( ( ( rule__UpperBound__Alternatives ) ) )
            // InternalFiacre.g:2418:2: ( ( rule__UpperBound__Alternatives ) )
            {
            // InternalFiacre.g:2418:2: ( ( rule__UpperBound__Alternatives ) )
            // InternalFiacre.g:2419:3: ( rule__UpperBound__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUpperBoundAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2420:3: ( rule__UpperBound__Alternatives )
            // InternalFiacre.g:2420:4: rule__UpperBound__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UpperBound__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUpperBoundAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUpperBound"


    // $ANTLR start "entryRuleNaturalLowerBound"
    // InternalFiacre.g:2429:1: entryRuleNaturalLowerBound : ruleNaturalLowerBound EOF ;
    public final void entryRuleNaturalLowerBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2430:1: ( ruleNaturalLowerBound EOF )
            // InternalFiacre.g:2431:1: ruleNaturalLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNaturalLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNaturalLowerBound"
    // InternalFiacre.g:2438:1: ruleNaturalLowerBound : ( ( rule__NaturalLowerBound__Group__0 ) ) ;
    public final void ruleNaturalLowerBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2442:2: ( ( ( rule__NaturalLowerBound__Group__0 ) ) )
            // InternalFiacre.g:2443:2: ( ( rule__NaturalLowerBound__Group__0 ) )
            {
            // InternalFiacre.g:2443:2: ( ( rule__NaturalLowerBound__Group__0 ) )
            // InternalFiacre.g:2444:3: ( rule__NaturalLowerBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2445:3: ( rule__NaturalLowerBound__Group__0 )
            // InternalFiacre.g:2445:4: rule__NaturalLowerBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLowerBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNaturalLowerBound"


    // $ANTLR start "entryRuleNaturalUpperBound"
    // InternalFiacre.g:2454:1: entryRuleNaturalUpperBound : ruleNaturalUpperBound EOF ;
    public final void entryRuleNaturalUpperBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2455:1: ( ruleNaturalUpperBound EOF )
            // InternalFiacre.g:2456:1: ruleNaturalUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNaturalUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNaturalUpperBound"
    // InternalFiacre.g:2463:1: ruleNaturalUpperBound : ( ( rule__NaturalUpperBound__Group__0 ) ) ;
    public final void ruleNaturalUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2467:2: ( ( ( rule__NaturalUpperBound__Group__0 ) ) )
            // InternalFiacre.g:2468:2: ( ( rule__NaturalUpperBound__Group__0 ) )
            {
            // InternalFiacre.g:2468:2: ( ( rule__NaturalUpperBound__Group__0 ) )
            // InternalFiacre.g:2469:3: ( rule__NaturalUpperBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2470:3: ( rule__NaturalUpperBound__Group__0 )
            // InternalFiacre.g:2470:4: rule__NaturalUpperBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalUpperBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNaturalUpperBound"


    // $ANTLR start "entryRuleDecimalLowerBound"
    // InternalFiacre.g:2479:1: entryRuleDecimalLowerBound : ruleDecimalLowerBound EOF ;
    public final void entryRuleDecimalLowerBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2480:1: ( ruleDecimalLowerBound EOF )
            // InternalFiacre.g:2481:1: ruleDecimalLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDecimalLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDecimalLowerBound"
    // InternalFiacre.g:2488:1: ruleDecimalLowerBound : ( ( rule__DecimalLowerBound__Group__0 ) ) ;
    public final void ruleDecimalLowerBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2492:2: ( ( ( rule__DecimalLowerBound__Group__0 ) ) )
            // InternalFiacre.g:2493:2: ( ( rule__DecimalLowerBound__Group__0 ) )
            {
            // InternalFiacre.g:2493:2: ( ( rule__DecimalLowerBound__Group__0 ) )
            // InternalFiacre.g:2494:3: ( rule__DecimalLowerBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2495:3: ( rule__DecimalLowerBound__Group__0 )
            // InternalFiacre.g:2495:4: rule__DecimalLowerBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalLowerBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDecimalLowerBound"


    // $ANTLR start "entryRuleDecimalUpperBound"
    // InternalFiacre.g:2504:1: entryRuleDecimalUpperBound : ruleDecimalUpperBound EOF ;
    public final void entryRuleDecimalUpperBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2505:1: ( ruleDecimalUpperBound EOF )
            // InternalFiacre.g:2506:1: ruleDecimalUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDecimalUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDecimalUpperBound"
    // InternalFiacre.g:2513:1: ruleDecimalUpperBound : ( ( rule__DecimalUpperBound__Group__0 ) ) ;
    public final void ruleDecimalUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2517:2: ( ( ( rule__DecimalUpperBound__Group__0 ) ) )
            // InternalFiacre.g:2518:2: ( ( rule__DecimalUpperBound__Group__0 ) )
            {
            // InternalFiacre.g:2518:2: ( ( rule__DecimalUpperBound__Group__0 ) )
            // InternalFiacre.g:2519:3: ( rule__DecimalUpperBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2520:3: ( rule__DecimalUpperBound__Group__0 )
            // InternalFiacre.g:2520:4: rule__DecimalUpperBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalUpperBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDecimalUpperBound"


    // $ANTLR start "entryRuleVariableLowerBound"
    // InternalFiacre.g:2529:1: entryRuleVariableLowerBound : ruleVariableLowerBound EOF ;
    public final void entryRuleVariableLowerBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2530:1: ( ruleVariableLowerBound EOF )
            // InternalFiacre.g:2531:1: ruleVariableLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleVariableLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleVariableLowerBound"
    // InternalFiacre.g:2538:1: ruleVariableLowerBound : ( ( rule__VariableLowerBound__Group__0 ) ) ;
    public final void ruleVariableLowerBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2542:2: ( ( ( rule__VariableLowerBound__Group__0 ) ) )
            // InternalFiacre.g:2543:2: ( ( rule__VariableLowerBound__Group__0 ) )
            {
            // InternalFiacre.g:2543:2: ( ( rule__VariableLowerBound__Group__0 ) )
            // InternalFiacre.g:2544:3: ( rule__VariableLowerBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2545:3: ( rule__VariableLowerBound__Group__0 )
            // InternalFiacre.g:2545:4: rule__VariableLowerBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableLowerBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleVariableLowerBound"


    // $ANTLR start "entryRuleVariableUpperBound"
    // InternalFiacre.g:2554:1: entryRuleVariableUpperBound : ruleVariableUpperBound EOF ;
    public final void entryRuleVariableUpperBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2555:1: ( ruleVariableUpperBound EOF )
            // InternalFiacre.g:2556:1: ruleVariableUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleVariableUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleVariableUpperBound"
    // InternalFiacre.g:2563:1: ruleVariableUpperBound : ( ( rule__VariableUpperBound__Group__0 ) ) ;
    public final void ruleVariableUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2567:2: ( ( ( rule__VariableUpperBound__Group__0 ) ) )
            // InternalFiacre.g:2568:2: ( ( rule__VariableUpperBound__Group__0 ) )
            {
            // InternalFiacre.g:2568:2: ( ( rule__VariableUpperBound__Group__0 ) )
            // InternalFiacre.g:2569:3: ( rule__VariableUpperBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2570:3: ( rule__VariableUpperBound__Group__0 )
            // InternalFiacre.g:2570:4: rule__VariableUpperBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableUpperBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleVariableUpperBound"


    // $ANTLR start "entryRuleInfiniteUpperBound"
    // InternalFiacre.g:2579:1: entryRuleInfiniteUpperBound : ruleInfiniteUpperBound EOF ;
    public final void entryRuleInfiniteUpperBound() throws RecognitionException {
        try {
            // InternalFiacre.g:2580:1: ( ruleInfiniteUpperBound EOF )
            // InternalFiacre.g:2581:1: ruleInfiniteUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfiniteUpperBoundRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleInfiniteUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfiniteUpperBoundRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleInfiniteUpperBound"
    // InternalFiacre.g:2588:1: ruleInfiniteUpperBound : ( ( rule__InfiniteUpperBound__Group__0 ) ) ;
    public final void ruleInfiniteUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2592:2: ( ( ( rule__InfiniteUpperBound__Group__0 ) ) )
            // InternalFiacre.g:2593:2: ( ( rule__InfiniteUpperBound__Group__0 ) )
            {
            // InternalFiacre.g:2593:2: ( ( rule__InfiniteUpperBound__Group__0 ) )
            // InternalFiacre.g:2594:3: ( rule__InfiniteUpperBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfiniteUpperBoundAccess().getGroup()); 
            }
            // InternalFiacre.g:2595:3: ( rule__InfiniteUpperBound__Group__0 )
            // InternalFiacre.g:2595:4: rule__InfiniteUpperBound__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfiniteUpperBound__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfiniteUpperBoundAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleInfiniteUpperBound"


    // $ANTLR start "entryRuleRequirement"
    // InternalFiacre.g:2604:1: entryRuleRequirement : ruleRequirement EOF ;
    public final void entryRuleRequirement() throws RecognitionException {
        try {
            // InternalFiacre.g:2605:1: ( ruleRequirement EOF )
            // InternalFiacre.g:2606:1: ruleRequirement EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleRequirement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleRequirement"
    // InternalFiacre.g:2613:1: ruleRequirement : ( ( rule__Requirement__Group__0 ) ) ;
    public final void ruleRequirement() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2617:2: ( ( ( rule__Requirement__Group__0 ) ) )
            // InternalFiacre.g:2618:2: ( ( rule__Requirement__Group__0 ) )
            {
            // InternalFiacre.g:2618:2: ( ( rule__Requirement__Group__0 ) )
            // InternalFiacre.g:2619:3: ( rule__Requirement__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getGroup()); 
            }
            // InternalFiacre.g:2620:3: ( rule__Requirement__Group__0 )
            // InternalFiacre.g:2620:4: rule__Requirement__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRequirement"


    // $ANTLR start "entryRulePropertyDeclaration"
    // InternalFiacre.g:2629:1: entryRulePropertyDeclaration : rulePropertyDeclaration EOF ;
    public final void entryRulePropertyDeclaration() throws RecognitionException {
        try {
            // InternalFiacre.g:2630:1: ( rulePropertyDeclaration EOF )
            // InternalFiacre.g:2631:1: rulePropertyDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePropertyDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePropertyDeclaration"
    // InternalFiacre.g:2638:1: rulePropertyDeclaration : ( ( rule__PropertyDeclaration__Group__0 ) ) ;
    public final void rulePropertyDeclaration() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2642:2: ( ( ( rule__PropertyDeclaration__Group__0 ) ) )
            // InternalFiacre.g:2643:2: ( ( rule__PropertyDeclaration__Group__0 ) )
            {
            // InternalFiacre.g:2643:2: ( ( rule__PropertyDeclaration__Group__0 ) )
            // InternalFiacre.g:2644:3: ( rule__PropertyDeclaration__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getGroup()); 
            }
            // InternalFiacre.g:2645:3: ( rule__PropertyDeclaration__Group__0 )
            // InternalFiacre.g:2645:4: rule__PropertyDeclaration__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePropertyDeclaration"


    // $ANTLR start "entryRuleProperty"
    // InternalFiacre.g:2654:1: entryRuleProperty : ruleProperty EOF ;
    public final void entryRuleProperty() throws RecognitionException {
        try {
            // InternalFiacre.g:2655:1: ( ruleProperty EOF )
            // InternalFiacre.g:2656:1: ruleProperty EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleProperty"
    // InternalFiacre.g:2663:1: ruleProperty : ( ruleQuantifiedProperty ) ;
    public final void ruleProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2667:2: ( ( ruleQuantifiedProperty ) )
            // InternalFiacre.g:2668:2: ( ruleQuantifiedProperty )
            {
            // InternalFiacre.g:2668:2: ( ruleQuantifiedProperty )
            // InternalFiacre.g:2669:3: ruleQuantifiedProperty
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyAccess().getQuantifiedPropertyParserRuleCall()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQuantifiedProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyAccess().getQuantifiedPropertyParserRuleCall()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleProperty"


    // $ANTLR start "entryRuleQuantifiedProperty"
    // InternalFiacre.g:2679:1: entryRuleQuantifiedProperty : ruleQuantifiedProperty EOF ;
    public final void entryRuleQuantifiedProperty() throws RecognitionException {
        try {
            // InternalFiacre.g:2680:1: ( ruleQuantifiedProperty EOF )
            // InternalFiacre.g:2681:1: ruleQuantifiedProperty EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleQuantifiedProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleQuantifiedProperty"
    // InternalFiacre.g:2688:1: ruleQuantifiedProperty : ( ( rule__QuantifiedProperty__Alternatives ) ) ;
    public final void ruleQuantifiedProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2692:2: ( ( ( rule__QuantifiedProperty__Alternatives ) ) )
            // InternalFiacre.g:2693:2: ( ( rule__QuantifiedProperty__Alternatives ) )
            {
            // InternalFiacre.g:2693:2: ( ( rule__QuantifiedProperty__Alternatives ) )
            // InternalFiacre.g:2694:3: ( rule__QuantifiedProperty__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2695:3: ( rule__QuantifiedProperty__Alternatives )
            // InternalFiacre.g:2695:4: rule__QuantifiedProperty__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleQuantifiedProperty"


    // $ANTLR start "entryRulePropertyDisjunction"
    // InternalFiacre.g:2704:1: entryRulePropertyDisjunction : rulePropertyDisjunction EOF ;
    public final void entryRulePropertyDisjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:2705:1: ( rulePropertyDisjunction EOF )
            // InternalFiacre.g:2706:1: rulePropertyDisjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePropertyDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePropertyDisjunction"
    // InternalFiacre.g:2713:1: rulePropertyDisjunction : ( ( rule__PropertyDisjunction__Group__0 ) ) ;
    public final void rulePropertyDisjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2717:2: ( ( ( rule__PropertyDisjunction__Group__0 ) ) )
            // InternalFiacre.g:2718:2: ( ( rule__PropertyDisjunction__Group__0 ) )
            {
            // InternalFiacre.g:2718:2: ( ( rule__PropertyDisjunction__Group__0 ) )
            // InternalFiacre.g:2719:3: ( rule__PropertyDisjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:2720:3: ( rule__PropertyDisjunction__Group__0 )
            // InternalFiacre.g:2720:4: rule__PropertyDisjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePropertyDisjunction"


    // $ANTLR start "entryRulePropertyImplication"
    // InternalFiacre.g:2729:1: entryRulePropertyImplication : rulePropertyImplication EOF ;
    public final void entryRulePropertyImplication() throws RecognitionException {
        try {
            // InternalFiacre.g:2730:1: ( rulePropertyImplication EOF )
            // InternalFiacre.g:2731:1: rulePropertyImplication EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePropertyImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePropertyImplication"
    // InternalFiacre.g:2738:1: rulePropertyImplication : ( ( rule__PropertyImplication__Group__0 ) ) ;
    public final void rulePropertyImplication() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2742:2: ( ( ( rule__PropertyImplication__Group__0 ) ) )
            // InternalFiacre.g:2743:2: ( ( rule__PropertyImplication__Group__0 ) )
            {
            // InternalFiacre.g:2743:2: ( ( rule__PropertyImplication__Group__0 ) )
            // InternalFiacre.g:2744:3: ( rule__PropertyImplication__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getGroup()); 
            }
            // InternalFiacre.g:2745:3: ( rule__PropertyImplication__Group__0 )
            // InternalFiacre.g:2745:4: rule__PropertyImplication__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePropertyImplication"


    // $ANTLR start "entryRulePropertyConjunction"
    // InternalFiacre.g:2754:1: entryRulePropertyConjunction : rulePropertyConjunction EOF ;
    public final void entryRulePropertyConjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:2755:1: ( rulePropertyConjunction EOF )
            // InternalFiacre.g:2756:1: rulePropertyConjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePropertyConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePropertyConjunction"
    // InternalFiacre.g:2763:1: rulePropertyConjunction : ( ( rule__PropertyConjunction__Group__0 ) ) ;
    public final void rulePropertyConjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2767:2: ( ( ( rule__PropertyConjunction__Group__0 ) ) )
            // InternalFiacre.g:2768:2: ( ( rule__PropertyConjunction__Group__0 ) )
            {
            // InternalFiacre.g:2768:2: ( ( rule__PropertyConjunction__Group__0 ) )
            // InternalFiacre.g:2769:3: ( rule__PropertyConjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:2770:3: ( rule__PropertyConjunction__Group__0 )
            // InternalFiacre.g:2770:4: rule__PropertyConjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePropertyConjunction"


    // $ANTLR start "entryRulePropertyNegation"
    // InternalFiacre.g:2779:1: entryRulePropertyNegation : rulePropertyNegation EOF ;
    public final void entryRulePropertyNegation() throws RecognitionException {
        try {
            // InternalFiacre.g:2780:1: ( rulePropertyNegation EOF )
            // InternalFiacre.g:2781:1: rulePropertyNegation EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePropertyNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePropertyNegation"
    // InternalFiacre.g:2788:1: rulePropertyNegation : ( ( rule__PropertyNegation__Alternatives ) ) ;
    public final void rulePropertyNegation() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2792:2: ( ( ( rule__PropertyNegation__Alternatives ) ) )
            // InternalFiacre.g:2793:2: ( ( rule__PropertyNegation__Alternatives ) )
            {
            // InternalFiacre.g:2793:2: ( ( rule__PropertyNegation__Alternatives ) )
            // InternalFiacre.g:2794:3: ( rule__PropertyNegation__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2795:3: ( rule__PropertyNegation__Alternatives )
            // InternalFiacre.g:2795:4: rule__PropertyNegation__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyNegation__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePropertyNegation"


    // $ANTLR start "entryRuleAtomicProperty"
    // InternalFiacre.g:2804:1: entryRuleAtomicProperty : ruleAtomicProperty EOF ;
    public final void entryRuleAtomicProperty() throws RecognitionException {
        try {
            // InternalFiacre.g:2805:1: ( ruleAtomicProperty EOF )
            // InternalFiacre.g:2806:1: ruleAtomicProperty EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicPropertyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAtomicProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicPropertyRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAtomicProperty"
    // InternalFiacre.g:2813:1: ruleAtomicProperty : ( ( rule__AtomicProperty__Alternatives ) ) ;
    public final void ruleAtomicProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2817:2: ( ( ( rule__AtomicProperty__Alternatives ) ) )
            // InternalFiacre.g:2818:2: ( ( rule__AtomicProperty__Alternatives ) )
            {
            // InternalFiacre.g:2818:2: ( ( rule__AtomicProperty__Alternatives ) )
            // InternalFiacre.g:2819:3: ( rule__AtomicProperty__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicPropertyAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2820:3: ( rule__AtomicProperty__Alternatives )
            // InternalFiacre.g:2820:4: rule__AtomicProperty__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicProperty__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicPropertyAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAtomicProperty"


    // $ANTLR start "entryRulePatternProperty"
    // InternalFiacre.g:2829:1: entryRulePatternProperty : rulePatternProperty EOF ;
    public final void entryRulePatternProperty() throws RecognitionException {
        try {
            // InternalFiacre.g:2830:1: ( rulePatternProperty EOF )
            // InternalFiacre.g:2831:1: rulePatternProperty EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternPropertyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePatternProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternPropertyRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePatternProperty"
    // InternalFiacre.g:2838:1: rulePatternProperty : ( ( rule__PatternProperty__Alternatives ) ) ;
    public final void rulePatternProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2842:2: ( ( ( rule__PatternProperty__Alternatives ) ) )
            // InternalFiacre.g:2843:2: ( ( rule__PatternProperty__Alternatives ) )
            {
            // InternalFiacre.g:2843:2: ( ( rule__PatternProperty__Alternatives ) )
            // InternalFiacre.g:2844:3: ( rule__PatternProperty__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternPropertyAccess().getAlternatives()); 
            }
            // InternalFiacre.g:2845:3: ( rule__PatternProperty__Alternatives )
            // InternalFiacre.g:2845:4: rule__PatternProperty__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternProperty__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternPropertyAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePatternProperty"


    // $ANTLR start "entryRuleLTLPattern"
    // InternalFiacre.g:2854:1: entryRuleLTLPattern : ruleLTLPattern EOF ;
    public final void entryRuleLTLPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2855:1: ( ruleLTLPattern EOF )
            // InternalFiacre.g:2856:1: ruleLTLPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLPattern"
    // InternalFiacre.g:2863:1: ruleLTLPattern : ( ( rule__LTLPattern__Group__0 ) ) ;
    public final void ruleLTLPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2867:2: ( ( ( rule__LTLPattern__Group__0 ) ) )
            // InternalFiacre.g:2868:2: ( ( rule__LTLPattern__Group__0 ) )
            {
            // InternalFiacre.g:2868:2: ( ( rule__LTLPattern__Group__0 ) )
            // InternalFiacre.g:2869:3: ( rule__LTLPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2870:3: ( rule__LTLPattern__Group__0 )
            // InternalFiacre.g:2870:4: rule__LTLPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLPattern"


    // $ANTLR start "entryRuleDeadlockFreePattern"
    // InternalFiacre.g:2879:1: entryRuleDeadlockFreePattern : ruleDeadlockFreePattern EOF ;
    public final void entryRuleDeadlockFreePattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2880:1: ( ruleDeadlockFreePattern EOF )
            // InternalFiacre.g:2881:1: ruleDeadlockFreePattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeadlockFreePatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleDeadlockFreePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeadlockFreePatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleDeadlockFreePattern"
    // InternalFiacre.g:2888:1: ruleDeadlockFreePattern : ( ( rule__DeadlockFreePattern__Group__0 ) ) ;
    public final void ruleDeadlockFreePattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2892:2: ( ( ( rule__DeadlockFreePattern__Group__0 ) ) )
            // InternalFiacre.g:2893:2: ( ( rule__DeadlockFreePattern__Group__0 ) )
            {
            // InternalFiacre.g:2893:2: ( ( rule__DeadlockFreePattern__Group__0 ) )
            // InternalFiacre.g:2894:3: ( rule__DeadlockFreePattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeadlockFreePatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2895:3: ( rule__DeadlockFreePattern__Group__0 )
            // InternalFiacre.g:2895:4: rule__DeadlockFreePattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DeadlockFreePattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeadlockFreePatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDeadlockFreePattern"


    // $ANTLR start "entryRuleInfinitelyOftenPattern"
    // InternalFiacre.g:2904:1: entryRuleInfinitelyOftenPattern : ruleInfinitelyOftenPattern EOF ;
    public final void entryRuleInfinitelyOftenPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2905:1: ( ruleInfinitelyOftenPattern EOF )
            // InternalFiacre.g:2906:1: ruleInfinitelyOftenPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfinitelyOftenPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleInfinitelyOftenPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfinitelyOftenPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleInfinitelyOftenPattern"
    // InternalFiacre.g:2913:1: ruleInfinitelyOftenPattern : ( ( rule__InfinitelyOftenPattern__Group__0 ) ) ;
    public final void ruleInfinitelyOftenPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2917:2: ( ( ( rule__InfinitelyOftenPattern__Group__0 ) ) )
            // InternalFiacre.g:2918:2: ( ( rule__InfinitelyOftenPattern__Group__0 ) )
            {
            // InternalFiacre.g:2918:2: ( ( rule__InfinitelyOftenPattern__Group__0 ) )
            // InternalFiacre.g:2919:3: ( rule__InfinitelyOftenPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfinitelyOftenPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2920:3: ( rule__InfinitelyOftenPattern__Group__0 )
            // InternalFiacre.g:2920:4: rule__InfinitelyOftenPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfinitelyOftenPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfinitelyOftenPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleInfinitelyOftenPattern"


    // $ANTLR start "entryRuleMortalPattern"
    // InternalFiacre.g:2929:1: entryRuleMortalPattern : ruleMortalPattern EOF ;
    public final void entryRuleMortalPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2930:1: ( ruleMortalPattern EOF )
            // InternalFiacre.g:2931:1: ruleMortalPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMortalPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleMortalPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMortalPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleMortalPattern"
    // InternalFiacre.g:2938:1: ruleMortalPattern : ( ( rule__MortalPattern__Group__0 ) ) ;
    public final void ruleMortalPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2942:2: ( ( ( rule__MortalPattern__Group__0 ) ) )
            // InternalFiacre.g:2943:2: ( ( rule__MortalPattern__Group__0 ) )
            {
            // InternalFiacre.g:2943:2: ( ( rule__MortalPattern__Group__0 ) )
            // InternalFiacre.g:2944:3: ( rule__MortalPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMortalPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2945:3: ( rule__MortalPattern__Group__0 )
            // InternalFiacre.g:2945:4: rule__MortalPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__MortalPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMortalPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMortalPattern"


    // $ANTLR start "entryRulePresencePattern"
    // InternalFiacre.g:2954:1: entryRulePresencePattern : rulePresencePattern EOF ;
    public final void entryRulePresencePattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2955:1: ( rulePresencePattern EOF )
            // InternalFiacre.g:2956:1: rulePresencePattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePresencePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePresencePattern"
    // InternalFiacre.g:2963:1: rulePresencePattern : ( ( rule__PresencePattern__Group__0 ) ) ;
    public final void rulePresencePattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2967:2: ( ( ( rule__PresencePattern__Group__0 ) ) )
            // InternalFiacre.g:2968:2: ( ( rule__PresencePattern__Group__0 ) )
            {
            // InternalFiacre.g:2968:2: ( ( rule__PresencePattern__Group__0 ) )
            // InternalFiacre.g:2969:3: ( rule__PresencePattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2970:3: ( rule__PresencePattern__Group__0 )
            // InternalFiacre.g:2970:4: rule__PresencePattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePresencePattern"


    // $ANTLR start "entryRuleAbsencePattern"
    // InternalFiacre.g:2979:1: entryRuleAbsencePattern : ruleAbsencePattern EOF ;
    public final void entryRuleAbsencePattern() throws RecognitionException {
        try {
            // InternalFiacre.g:2980:1: ( ruleAbsencePattern EOF )
            // InternalFiacre.g:2981:1: ruleAbsencePattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAbsencePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAbsencePattern"
    // InternalFiacre.g:2988:1: ruleAbsencePattern : ( ( rule__AbsencePattern__Group__0 ) ) ;
    public final void ruleAbsencePattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:2992:2: ( ( ( rule__AbsencePattern__Group__0 ) ) )
            // InternalFiacre.g:2993:2: ( ( rule__AbsencePattern__Group__0 ) )
            {
            // InternalFiacre.g:2993:2: ( ( rule__AbsencePattern__Group__0 ) )
            // InternalFiacre.g:2994:3: ( rule__AbsencePattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getGroup()); 
            }
            // InternalFiacre.g:2995:3: ( rule__AbsencePattern__Group__0 )
            // InternalFiacre.g:2995:4: rule__AbsencePattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAbsencePattern"


    // $ANTLR start "entryRuleAlwaysPattern"
    // InternalFiacre.g:3004:1: entryRuleAlwaysPattern : ruleAlwaysPattern EOF ;
    public final void entryRuleAlwaysPattern() throws RecognitionException {
        try {
            // InternalFiacre.g:3005:1: ( ruleAlwaysPattern EOF )
            // InternalFiacre.g:3006:1: ruleAlwaysPattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAlwaysPattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAlwaysPattern"
    // InternalFiacre.g:3013:1: ruleAlwaysPattern : ( ( rule__AlwaysPattern__Group__0 ) ) ;
    public final void ruleAlwaysPattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3017:2: ( ( ( rule__AlwaysPattern__Group__0 ) ) )
            // InternalFiacre.g:3018:2: ( ( rule__AlwaysPattern__Group__0 ) )
            {
            // InternalFiacre.g:3018:2: ( ( rule__AlwaysPattern__Group__0 ) )
            // InternalFiacre.g:3019:3: ( rule__AlwaysPattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getGroup()); 
            }
            // InternalFiacre.g:3020:3: ( rule__AlwaysPattern__Group__0 )
            // InternalFiacre.g:3020:4: rule__AlwaysPattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAlwaysPattern"


    // $ANTLR start "entryRuleSequencePattern"
    // InternalFiacre.g:3029:1: entryRuleSequencePattern : ruleSequencePattern EOF ;
    public final void entryRuleSequencePattern() throws RecognitionException {
        try {
            // InternalFiacre.g:3030:1: ( ruleSequencePattern EOF )
            // InternalFiacre.g:3031:1: ruleSequencePattern EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleSequencePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleSequencePattern"
    // InternalFiacre.g:3038:1: ruleSequencePattern : ( ( rule__SequencePattern__Group__0 ) ) ;
    public final void ruleSequencePattern() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3042:2: ( ( ( rule__SequencePattern__Group__0 ) ) )
            // InternalFiacre.g:3043:2: ( ( rule__SequencePattern__Group__0 ) )
            {
            // InternalFiacre.g:3043:2: ( ( rule__SequencePattern__Group__0 ) )
            // InternalFiacre.g:3044:3: ( rule__SequencePattern__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getGroup()); 
            }
            // InternalFiacre.g:3045:3: ( rule__SequencePattern__Group__0 )
            // InternalFiacre.g:3045:4: rule__SequencePattern__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSequencePattern"


    // $ANTLR start "entryRuleLTLProperty"
    // InternalFiacre.g:3054:1: entryRuleLTLProperty : ruleLTLProperty EOF ;
    public final void entryRuleLTLProperty() throws RecognitionException {
        try {
            // InternalFiacre.g:3055:1: ( ruleLTLProperty EOF )
            // InternalFiacre.g:3056:1: ruleLTLProperty EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPropertyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPropertyRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLProperty"
    // InternalFiacre.g:3063:1: ruleLTLProperty : ( ruleLTLQuantified ) ;
    public final void ruleLTLProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3067:2: ( ( ruleLTLQuantified ) )
            // InternalFiacre.g:3068:2: ( ruleLTLQuantified )
            {
            // InternalFiacre.g:3068:2: ( ruleLTLQuantified )
            // InternalFiacre.g:3069:3: ruleLTLQuantified
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPropertyAccess().getLTLQuantifiedParserRuleCall()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLQuantified();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPropertyAccess().getLTLQuantifiedParserRuleCall()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLProperty"


    // $ANTLR start "entryRuleLTLQuantified"
    // InternalFiacre.g:3079:1: entryRuleLTLQuantified : ruleLTLQuantified EOF ;
    public final void entryRuleLTLQuantified() throws RecognitionException {
        try {
            // InternalFiacre.g:3080:1: ( ruleLTLQuantified EOF )
            // InternalFiacre.g:3081:1: ruleLTLQuantified EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLQuantified();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLQuantified"
    // InternalFiacre.g:3088:1: ruleLTLQuantified : ( ( rule__LTLQuantified__Alternatives ) ) ;
    public final void ruleLTLQuantified() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3092:2: ( ( ( rule__LTLQuantified__Alternatives ) ) )
            // InternalFiacre.g:3093:2: ( ( rule__LTLQuantified__Alternatives ) )
            {
            // InternalFiacre.g:3093:2: ( ( rule__LTLQuantified__Alternatives ) )
            // InternalFiacre.g:3094:3: ( rule__LTLQuantified__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3095:3: ( rule__LTLQuantified__Alternatives )
            // InternalFiacre.g:3095:4: rule__LTLQuantified__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLQuantified"


    // $ANTLR start "entryRuleLTLDisjunction"
    // InternalFiacre.g:3104:1: entryRuleLTLDisjunction : ruleLTLDisjunction EOF ;
    public final void entryRuleLTLDisjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:3105:1: ( ruleLTLDisjunction EOF )
            // InternalFiacre.g:3106:1: ruleLTLDisjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLDisjunction"
    // InternalFiacre.g:3113:1: ruleLTLDisjunction : ( ( rule__LTLDisjunction__Group__0 ) ) ;
    public final void ruleLTLDisjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3117:2: ( ( ( rule__LTLDisjunction__Group__0 ) ) )
            // InternalFiacre.g:3118:2: ( ( rule__LTLDisjunction__Group__0 ) )
            {
            // InternalFiacre.g:3118:2: ( ( rule__LTLDisjunction__Group__0 ) )
            // InternalFiacre.g:3119:3: ( rule__LTLDisjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:3120:3: ( rule__LTLDisjunction__Group__0 )
            // InternalFiacre.g:3120:4: rule__LTLDisjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLDisjunction"


    // $ANTLR start "entryRuleLTLImplication"
    // InternalFiacre.g:3129:1: entryRuleLTLImplication : ruleLTLImplication EOF ;
    public final void entryRuleLTLImplication() throws RecognitionException {
        try {
            // InternalFiacre.g:3130:1: ( ruleLTLImplication EOF )
            // InternalFiacre.g:3131:1: ruleLTLImplication EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLImplication"
    // InternalFiacre.g:3138:1: ruleLTLImplication : ( ( rule__LTLImplication__Group__0 ) ) ;
    public final void ruleLTLImplication() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3142:2: ( ( ( rule__LTLImplication__Group__0 ) ) )
            // InternalFiacre.g:3143:2: ( ( rule__LTLImplication__Group__0 ) )
            {
            // InternalFiacre.g:3143:2: ( ( rule__LTLImplication__Group__0 ) )
            // InternalFiacre.g:3144:3: ( rule__LTLImplication__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getGroup()); 
            }
            // InternalFiacre.g:3145:3: ( rule__LTLImplication__Group__0 )
            // InternalFiacre.g:3145:4: rule__LTLImplication__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLImplication"


    // $ANTLR start "entryRuleLTLConjunction"
    // InternalFiacre.g:3154:1: entryRuleLTLConjunction : ruleLTLConjunction EOF ;
    public final void entryRuleLTLConjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:3155:1: ( ruleLTLConjunction EOF )
            // InternalFiacre.g:3156:1: ruleLTLConjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLConjunction"
    // InternalFiacre.g:3163:1: ruleLTLConjunction : ( ( rule__LTLConjunction__Group__0 ) ) ;
    public final void ruleLTLConjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3167:2: ( ( ( rule__LTLConjunction__Group__0 ) ) )
            // InternalFiacre.g:3168:2: ( ( rule__LTLConjunction__Group__0 ) )
            {
            // InternalFiacre.g:3168:2: ( ( rule__LTLConjunction__Group__0 ) )
            // InternalFiacre.g:3169:3: ( rule__LTLConjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:3170:3: ( rule__LTLConjunction__Group__0 )
            // InternalFiacre.g:3170:4: rule__LTLConjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLConjunction"


    // $ANTLR start "entryRuleLTLBinary"
    // InternalFiacre.g:3179:1: entryRuleLTLBinary : ruleLTLBinary EOF ;
    public final void entryRuleLTLBinary() throws RecognitionException {
        try {
            // InternalFiacre.g:3180:1: ( ruleLTLBinary EOF )
            // InternalFiacre.g:3181:1: ruleLTLBinary EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLBinary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLBinary"
    // InternalFiacre.g:3188:1: ruleLTLBinary : ( ( rule__LTLBinary__Group__0 ) ) ;
    public final void ruleLTLBinary() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3192:2: ( ( ( rule__LTLBinary__Group__0 ) ) )
            // InternalFiacre.g:3193:2: ( ( rule__LTLBinary__Group__0 ) )
            {
            // InternalFiacre.g:3193:2: ( ( rule__LTLBinary__Group__0 ) )
            // InternalFiacre.g:3194:3: ( rule__LTLBinary__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getGroup()); 
            }
            // InternalFiacre.g:3195:3: ( rule__LTLBinary__Group__0 )
            // InternalFiacre.g:3195:4: rule__LTLBinary__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLBinary"


    // $ANTLR start "entryRuleLTLUnary"
    // InternalFiacre.g:3204:1: entryRuleLTLUnary : ruleLTLUnary EOF ;
    public final void entryRuleLTLUnary() throws RecognitionException {
        try {
            // InternalFiacre.g:3205:1: ( ruleLTLUnary EOF )
            // InternalFiacre.g:3206:1: ruleLTLUnary EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLTLUnary"
    // InternalFiacre.g:3213:1: ruleLTLUnary : ( ( rule__LTLUnary__Alternatives ) ) ;
    public final void ruleLTLUnary() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3217:2: ( ( ( rule__LTLUnary__Alternatives ) ) )
            // InternalFiacre.g:3218:2: ( ( rule__LTLUnary__Alternatives ) )
            {
            // InternalFiacre.g:3218:2: ( ( rule__LTLUnary__Alternatives ) )
            // InternalFiacre.g:3219:3: ( rule__LTLUnary__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3220:3: ( rule__LTLUnary__Alternatives )
            // InternalFiacre.g:3220:4: rule__LTLUnary__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLTLUnary"


    // $ANTLR start "entryRuleAtomicLTL"
    // InternalFiacre.g:3229:1: entryRuleAtomicLTL : ruleAtomicLTL EOF ;
    public final void entryRuleAtomicLTL() throws RecognitionException {
        try {
            // InternalFiacre.g:3230:1: ( ruleAtomicLTL EOF )
            // InternalFiacre.g:3231:1: ruleAtomicLTL EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAtomicLTL();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAtomicLTL"
    // InternalFiacre.g:3238:1: ruleAtomicLTL : ( ( rule__AtomicLTL__Alternatives ) ) ;
    public final void ruleAtomicLTL() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3242:2: ( ( ( rule__AtomicLTL__Alternatives ) ) )
            // InternalFiacre.g:3243:2: ( ( rule__AtomicLTL__Alternatives ) )
            {
            // InternalFiacre.g:3243:2: ( ( rule__AtomicLTL__Alternatives ) )
            // InternalFiacre.g:3244:3: ( rule__AtomicLTL__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3245:3: ( rule__AtomicLTL__Alternatives )
            // InternalFiacre.g:3245:4: rule__AtomicLTL__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAtomicLTL"


    // $ANTLR start "entryRuleStateEvent"
    // InternalFiacre.g:3254:1: entryRuleStateEvent : ruleStateEvent EOF ;
    public final void entryRuleStateEvent() throws RecognitionException {
        try {
            // InternalFiacre.g:3255:1: ( ruleStateEvent EOF )
            // InternalFiacre.g:3256:1: ruleStateEvent EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateEventRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStateEvent();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateEventRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStateEvent"
    // InternalFiacre.g:3263:1: ruleStateEvent : ( ( rule__StateEvent__Alternatives ) ) ;
    public final void ruleStateEvent() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3267:2: ( ( ( rule__StateEvent__Alternatives ) ) )
            // InternalFiacre.g:3268:2: ( ( rule__StateEvent__Alternatives ) )
            {
            // InternalFiacre.g:3268:2: ( ( rule__StateEvent__Alternatives ) )
            // InternalFiacre.g:3269:3: ( rule__StateEvent__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateEventAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3270:3: ( rule__StateEvent__Alternatives )
            // InternalFiacre.g:3270:4: rule__StateEvent__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateEvent__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateEventAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStateEvent"


    // $ANTLR start "entryRuleEnterStateEvent"
    // InternalFiacre.g:3279:1: entryRuleEnterStateEvent : ruleEnterStateEvent EOF ;
    public final void entryRuleEnterStateEvent() throws RecognitionException {
        try {
            // InternalFiacre.g:3280:1: ( ruleEnterStateEvent EOF )
            // InternalFiacre.g:3281:1: ruleEnterStateEvent EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnterStateEventRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleEnterStateEvent();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnterStateEventRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleEnterStateEvent"
    // InternalFiacre.g:3288:1: ruleEnterStateEvent : ( ( rule__EnterStateEvent__Group__0 ) ) ;
    public final void ruleEnterStateEvent() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3292:2: ( ( ( rule__EnterStateEvent__Group__0 ) ) )
            // InternalFiacre.g:3293:2: ( ( rule__EnterStateEvent__Group__0 ) )
            {
            // InternalFiacre.g:3293:2: ( ( rule__EnterStateEvent__Group__0 ) )
            // InternalFiacre.g:3294:3: ( rule__EnterStateEvent__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnterStateEventAccess().getGroup()); 
            }
            // InternalFiacre.g:3295:3: ( rule__EnterStateEvent__Group__0 )
            // InternalFiacre.g:3295:4: rule__EnterStateEvent__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnterStateEvent__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnterStateEventAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEnterStateEvent"


    // $ANTLR start "entryRuleLeaveStateEvent"
    // InternalFiacre.g:3304:1: entryRuleLeaveStateEvent : ruleLeaveStateEvent EOF ;
    public final void entryRuleLeaveStateEvent() throws RecognitionException {
        try {
            // InternalFiacre.g:3305:1: ( ruleLeaveStateEvent EOF )
            // InternalFiacre.g:3306:1: ruleLeaveStateEvent EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLeaveStateEventRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleLeaveStateEvent();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLeaveStateEventRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleLeaveStateEvent"
    // InternalFiacre.g:3313:1: ruleLeaveStateEvent : ( ( rule__LeaveStateEvent__Group__0 ) ) ;
    public final void ruleLeaveStateEvent() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3317:2: ( ( ( rule__LeaveStateEvent__Group__0 ) ) )
            // InternalFiacre.g:3318:2: ( ( rule__LeaveStateEvent__Group__0 ) )
            {
            // InternalFiacre.g:3318:2: ( ( rule__LeaveStateEvent__Group__0 ) )
            // InternalFiacre.g:3319:3: ( rule__LeaveStateEvent__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLeaveStateEventAccess().getGroup()); 
            }
            // InternalFiacre.g:3320:3: ( rule__LeaveStateEvent__Group__0 )
            // InternalFiacre.g:3320:4: rule__LeaveStateEvent__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LeaveStateEvent__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLeaveStateEventAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLeaveStateEvent"


    // $ANTLR start "entryRuleObservable"
    // InternalFiacre.g:3329:1: entryRuleObservable : ruleObservable EOF ;
    public final void entryRuleObservable() throws RecognitionException {
        try {
            // InternalFiacre.g:3330:1: ( ruleObservable EOF )
            // InternalFiacre.g:3331:1: ruleObservable EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservable"
    // InternalFiacre.g:3338:1: ruleObservable : ( ruleObservableDisjunction ) ;
    public final void ruleObservable() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3342:2: ( ( ruleObservableDisjunction ) )
            // InternalFiacre.g:3343:2: ( ruleObservableDisjunction )
            {
            // InternalFiacre.g:3343:2: ( ruleObservableDisjunction )
            // InternalFiacre.g:3344:3: ruleObservableDisjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableAccess().getObservableDisjunctionParserRuleCall()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableAccess().getObservableDisjunctionParserRuleCall()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservable"


    // $ANTLR start "entryRuleObservableDisjunction"
    // InternalFiacre.g:3354:1: entryRuleObservableDisjunction : ruleObservableDisjunction EOF ;
    public final void entryRuleObservableDisjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:3355:1: ( ruleObservableDisjunction EOF )
            // InternalFiacre.g:3356:1: ruleObservableDisjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservableDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservableDisjunction"
    // InternalFiacre.g:3363:1: ruleObservableDisjunction : ( ( rule__ObservableDisjunction__Group__0 ) ) ;
    public final void ruleObservableDisjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3367:2: ( ( ( rule__ObservableDisjunction__Group__0 ) ) )
            // InternalFiacre.g:3368:2: ( ( rule__ObservableDisjunction__Group__0 ) )
            {
            // InternalFiacre.g:3368:2: ( ( rule__ObservableDisjunction__Group__0 ) )
            // InternalFiacre.g:3369:3: ( rule__ObservableDisjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:3370:3: ( rule__ObservableDisjunction__Group__0 )
            // InternalFiacre.g:3370:4: rule__ObservableDisjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservableDisjunction"


    // $ANTLR start "entryRuleObservableImplication"
    // InternalFiacre.g:3379:1: entryRuleObservableImplication : ruleObservableImplication EOF ;
    public final void entryRuleObservableImplication() throws RecognitionException {
        try {
            // InternalFiacre.g:3380:1: ( ruleObservableImplication EOF )
            // InternalFiacre.g:3381:1: ruleObservableImplication EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservableImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservableImplication"
    // InternalFiacre.g:3388:1: ruleObservableImplication : ( ( rule__ObservableImplication__Group__0 ) ) ;
    public final void ruleObservableImplication() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3392:2: ( ( ( rule__ObservableImplication__Group__0 ) ) )
            // InternalFiacre.g:3393:2: ( ( rule__ObservableImplication__Group__0 ) )
            {
            // InternalFiacre.g:3393:2: ( ( rule__ObservableImplication__Group__0 ) )
            // InternalFiacre.g:3394:3: ( rule__ObservableImplication__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getGroup()); 
            }
            // InternalFiacre.g:3395:3: ( rule__ObservableImplication__Group__0 )
            // InternalFiacre.g:3395:4: rule__ObservableImplication__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservableImplication"


    // $ANTLR start "entryRuleObservableConjunction"
    // InternalFiacre.g:3404:1: entryRuleObservableConjunction : ruleObservableConjunction EOF ;
    public final void entryRuleObservableConjunction() throws RecognitionException {
        try {
            // InternalFiacre.g:3405:1: ( ruleObservableConjunction EOF )
            // InternalFiacre.g:3406:1: ruleObservableConjunction EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservableConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservableConjunction"
    // InternalFiacre.g:3413:1: ruleObservableConjunction : ( ( rule__ObservableConjunction__Group__0 ) ) ;
    public final void ruleObservableConjunction() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3417:2: ( ( ( rule__ObservableConjunction__Group__0 ) ) )
            // InternalFiacre.g:3418:2: ( ( rule__ObservableConjunction__Group__0 ) )
            {
            // InternalFiacre.g:3418:2: ( ( rule__ObservableConjunction__Group__0 ) )
            // InternalFiacre.g:3419:3: ( rule__ObservableConjunction__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getGroup()); 
            }
            // InternalFiacre.g:3420:3: ( rule__ObservableConjunction__Group__0 )
            // InternalFiacre.g:3420:4: rule__ObservableConjunction__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservableConjunction"


    // $ANTLR start "entryRuleObservableNegation"
    // InternalFiacre.g:3429:1: entryRuleObservableNegation : ruleObservableNegation EOF ;
    public final void entryRuleObservableNegation() throws RecognitionException {
        try {
            // InternalFiacre.g:3430:1: ( ruleObservableNegation EOF )
            // InternalFiacre.g:3431:1: ruleObservableNegation EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservableNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservableNegation"
    // InternalFiacre.g:3438:1: ruleObservableNegation : ( ( rule__ObservableNegation__Alternatives ) ) ;
    public final void ruleObservableNegation() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3442:2: ( ( ( rule__ObservableNegation__Alternatives ) ) )
            // InternalFiacre.g:3443:2: ( ( rule__ObservableNegation__Alternatives ) )
            {
            // InternalFiacre.g:3443:2: ( ( rule__ObservableNegation__Alternatives ) )
            // InternalFiacre.g:3444:3: ( rule__ObservableNegation__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3445:3: ( rule__ObservableNegation__Alternatives )
            // InternalFiacre.g:3445:4: rule__ObservableNegation__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableNegation__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservableNegation"


    // $ANTLR start "entryRuleAtomicObservable"
    // InternalFiacre.g:3454:1: entryRuleAtomicObservable : ruleAtomicObservable EOF ;
    public final void entryRuleAtomicObservable() throws RecognitionException {
        try {
            // InternalFiacre.g:3455:1: ( ruleAtomicObservable EOF )
            // InternalFiacre.g:3456:1: ruleAtomicObservable EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicObservableRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicObservableRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleAtomicObservable"
    // InternalFiacre.g:3463:1: ruleAtomicObservable : ( ( rule__AtomicObservable__Alternatives ) ) ;
    public final void ruleAtomicObservable() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3467:2: ( ( ( rule__AtomicObservable__Alternatives ) ) )
            // InternalFiacre.g:3468:2: ( ( rule__AtomicObservable__Alternatives ) )
            {
            // InternalFiacre.g:3468:2: ( ( rule__AtomicObservable__Alternatives ) )
            // InternalFiacre.g:3469:3: ( rule__AtomicObservable__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicObservableAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3470:3: ( rule__AtomicObservable__Alternatives )
            // InternalFiacre.g:3470:4: rule__AtomicObservable__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicObservable__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicObservableAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAtomicObservable"


    // $ANTLR start "entryRuleObservableEvent"
    // InternalFiacre.g:3479:1: entryRuleObservableEvent : ruleObservableEvent EOF ;
    public final void entryRuleObservableEvent() throws RecognitionException {
        try {
            // InternalFiacre.g:3480:1: ( ruleObservableEvent EOF )
            // InternalFiacre.g:3481:1: ruleObservableEvent EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableEventRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleObservableEvent();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableEventRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleObservableEvent"
    // InternalFiacre.g:3488:1: ruleObservableEvent : ( ( rule__ObservableEvent__Alternatives ) ) ;
    public final void ruleObservableEvent() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3492:2: ( ( ( rule__ObservableEvent__Alternatives ) ) )
            // InternalFiacre.g:3493:2: ( ( rule__ObservableEvent__Alternatives ) )
            {
            // InternalFiacre.g:3493:2: ( ( rule__ObservableEvent__Alternatives ) )
            // InternalFiacre.g:3494:3: ( rule__ObservableEvent__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableEventAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3495:3: ( rule__ObservableEvent__Alternatives )
            // InternalFiacre.g:3495:4: rule__ObservableEvent__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableEvent__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableEventAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleObservableEvent"


    // $ANTLR start "entryRulePathEvent"
    // InternalFiacre.g:3504:1: entryRulePathEvent : rulePathEvent EOF ;
    public final void entryRulePathEvent() throws RecognitionException {
        try {
            // InternalFiacre.g:3505:1: ( rulePathEvent EOF )
            // InternalFiacre.g:3506:1: rulePathEvent EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePathEvent();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePathEvent"
    // InternalFiacre.g:3513:1: rulePathEvent : ( ( rule__PathEvent__Group__0 ) ) ;
    public final void rulePathEvent() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3517:2: ( ( ( rule__PathEvent__Group__0 ) ) )
            // InternalFiacre.g:3518:2: ( ( rule__PathEvent__Group__0 ) )
            {
            // InternalFiacre.g:3518:2: ( ( rule__PathEvent__Group__0 ) )
            // InternalFiacre.g:3519:3: ( rule__PathEvent__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventAccess().getGroup()); 
            }
            // InternalFiacre.g:3520:3: ( rule__PathEvent__Group__0 )
            // InternalFiacre.g:3520:4: rule__PathEvent__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathEvent__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePathEvent"


    // $ANTLR start "entryRulePath"
    // InternalFiacre.g:3529:1: entryRulePath : rulePath EOF ;
    public final void entryRulePath() throws RecognitionException {
        try {
            // InternalFiacre.g:3530:1: ( rulePath EOF )
            // InternalFiacre.g:3531:1: rulePath EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePath();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePath"
    // InternalFiacre.g:3538:1: rulePath : ( ( ( rule__Path__Group__0 ) ) ( ( rule__Path__Group__0 )* ) ) ;
    public final void rulePath() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3542:2: ( ( ( ( rule__Path__Group__0 ) ) ( ( rule__Path__Group__0 )* ) ) )
            // InternalFiacre.g:3543:2: ( ( ( rule__Path__Group__0 ) ) ( ( rule__Path__Group__0 )* ) )
            {
            // InternalFiacre.g:3543:2: ( ( ( rule__Path__Group__0 ) ) ( ( rule__Path__Group__0 )* ) )
            // InternalFiacre.g:3544:3: ( ( rule__Path__Group__0 ) ) ( ( rule__Path__Group__0 )* )
            {
            // InternalFiacre.g:3544:3: ( ( rule__Path__Group__0 ) )
            // InternalFiacre.g:3545:4: ( rule__Path__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathAccess().getGroup()); 
            }
            // InternalFiacre.g:3546:4: ( rule__Path__Group__0 )
            // InternalFiacre.g:3546:5: rule__Path__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_3);
            rule__Path__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathAccess().getGroup()); 
            }

            }

            // InternalFiacre.g:3549:3: ( ( rule__Path__Group__0 )* )
            // InternalFiacre.g:3550:4: ( rule__Path__Group__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathAccess().getGroup()); 
            }
            // InternalFiacre.g:3551:4: ( rule__Path__Group__0 )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID||LA1_0==RULE_INT) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // InternalFiacre.g:3551:5: rule__Path__Group__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_3);
            	    rule__Path__Group__0();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathAccess().getGroup()); 
            }

            }


            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePath"


    // $ANTLR start "entryRulePathItem"
    // InternalFiacre.g:3561:1: entryRulePathItem : rulePathItem EOF ;
    public final void entryRulePathItem() throws RecognitionException {
        try {
            // InternalFiacre.g:3562:1: ( rulePathItem EOF )
            // InternalFiacre.g:3563:1: rulePathItem EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathItemRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            rulePathItem();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathItemRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "rulePathItem"
    // InternalFiacre.g:3570:1: rulePathItem : ( ( rule__PathItem__Alternatives ) ) ;
    public final void rulePathItem() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3574:2: ( ( ( rule__PathItem__Alternatives ) ) )
            // InternalFiacre.g:3575:2: ( ( rule__PathItem__Alternatives ) )
            {
            // InternalFiacre.g:3575:2: ( ( rule__PathItem__Alternatives ) )
            // InternalFiacre.g:3576:3: ( rule__PathItem__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathItemAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3577:3: ( rule__PathItem__Alternatives )
            // InternalFiacre.g:3577:4: rule__PathItem__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathItem__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathItemAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePathItem"


    // $ANTLR start "entryRuleNaturalItem"
    // InternalFiacre.g:3586:1: entryRuleNaturalItem : ruleNaturalItem EOF ;
    public final void entryRuleNaturalItem() throws RecognitionException {
        try {
            // InternalFiacre.g:3587:1: ( ruleNaturalItem EOF )
            // InternalFiacre.g:3588:1: ruleNaturalItem EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalItemRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNaturalItem();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalItemRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNaturalItem"
    // InternalFiacre.g:3595:1: ruleNaturalItem : ( ( rule__NaturalItem__ValueAssignment ) ) ;
    public final void ruleNaturalItem() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3599:2: ( ( ( rule__NaturalItem__ValueAssignment ) ) )
            // InternalFiacre.g:3600:2: ( ( rule__NaturalItem__ValueAssignment ) )
            {
            // InternalFiacre.g:3600:2: ( ( rule__NaturalItem__ValueAssignment ) )
            // InternalFiacre.g:3601:3: ( rule__NaturalItem__ValueAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalItemAccess().getValueAssignment()); 
            }
            // InternalFiacre.g:3602:3: ( rule__NaturalItem__ValueAssignment )
            // InternalFiacre.g:3602:4: rule__NaturalItem__ValueAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalItem__ValueAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalItemAccess().getValueAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNaturalItem"


    // $ANTLR start "entryRuleNamedItem"
    // InternalFiacre.g:3611:1: entryRuleNamedItem : ruleNamedItem EOF ;
    public final void entryRuleNamedItem() throws RecognitionException {
        try {
            // InternalFiacre.g:3612:1: ( ruleNamedItem EOF )
            // InternalFiacre.g:3613:1: ruleNamedItem EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNamedItemRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleNamedItem();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNamedItemRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleNamedItem"
    // InternalFiacre.g:3620:1: ruleNamedItem : ( ( rule__NamedItem__DeclarationAssignment ) ) ;
    public final void ruleNamedItem() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3624:2: ( ( ( rule__NamedItem__DeclarationAssignment ) ) )
            // InternalFiacre.g:3625:2: ( ( rule__NamedItem__DeclarationAssignment ) )
            {
            // InternalFiacre.g:3625:2: ( ( rule__NamedItem__DeclarationAssignment ) )
            // InternalFiacre.g:3626:3: ( rule__NamedItem__DeclarationAssignment )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNamedItemAccess().getDeclarationAssignment()); 
            }
            // InternalFiacre.g:3627:3: ( rule__NamedItem__DeclarationAssignment )
            // InternalFiacre.g:3627:4: rule__NamedItem__DeclarationAssignment
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NamedItem__DeclarationAssignment();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNamedItemAccess().getDeclarationAssignment()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNamedItem"


    // $ANTLR start "entryRuleSubject"
    // InternalFiacre.g:3636:1: entryRuleSubject : ruleSubject EOF ;
    public final void entryRuleSubject() throws RecognitionException {
        try {
            // InternalFiacre.g:3637:1: ( ruleSubject EOF )
            // InternalFiacre.g:3638:1: ruleSubject EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubjectRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubjectRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleSubject"
    // InternalFiacre.g:3645:1: ruleSubject : ( ( rule__Subject__Alternatives ) ) ;
    public final void ruleSubject() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3649:2: ( ( ( rule__Subject__Alternatives ) ) )
            // InternalFiacre.g:3650:2: ( ( rule__Subject__Alternatives ) )
            {
            // InternalFiacre.g:3650:2: ( ( rule__Subject__Alternatives ) )
            // InternalFiacre.g:3651:3: ( rule__Subject__Alternatives )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubjectAccess().getAlternatives()); 
            }
            // InternalFiacre.g:3652:3: ( rule__Subject__Alternatives )
            // InternalFiacre.g:3652:4: rule__Subject__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Subject__Alternatives();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubjectAccess().getAlternatives()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSubject"


    // $ANTLR start "entryRuleStateSubject"
    // InternalFiacre.g:3661:1: entryRuleStateSubject : ruleStateSubject EOF ;
    public final void entryRuleStateSubject() throws RecognitionException {
        try {
            // InternalFiacre.g:3662:1: ( ruleStateSubject EOF )
            // InternalFiacre.g:3663:1: ruleStateSubject EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleStateSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleStateSubject"
    // InternalFiacre.g:3670:1: ruleStateSubject : ( ( rule__StateSubject__Group__0 ) ) ;
    public final void ruleStateSubject() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3674:2: ( ( ( rule__StateSubject__Group__0 ) ) )
            // InternalFiacre.g:3675:2: ( ( rule__StateSubject__Group__0 ) )
            {
            // InternalFiacre.g:3675:2: ( ( rule__StateSubject__Group__0 ) )
            // InternalFiacre.g:3676:3: ( rule__StateSubject__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectAccess().getGroup()); 
            }
            // InternalFiacre.g:3677:3: ( rule__StateSubject__Group__0 )
            // InternalFiacre.g:3677:4: rule__StateSubject__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateSubject__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleStateSubject"


    // $ANTLR start "entryRuleValueSubject"
    // InternalFiacre.g:3686:1: entryRuleValueSubject : ruleValueSubject EOF ;
    public final void entryRuleValueSubject() throws RecognitionException {
        try {
            // InternalFiacre.g:3687:1: ( ruleValueSubject EOF )
            // InternalFiacre.g:3688:1: ruleValueSubject EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getValueSubjectRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleValueSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getValueSubjectRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleValueSubject"
    // InternalFiacre.g:3695:1: ruleValueSubject : ( ( rule__ValueSubject__Group__0 ) ) ;
    public final void ruleValueSubject() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3699:2: ( ( ( rule__ValueSubject__Group__0 ) ) )
            // InternalFiacre.g:3700:2: ( ( rule__ValueSubject__Group__0 ) )
            {
            // InternalFiacre.g:3700:2: ( ( rule__ValueSubject__Group__0 ) )
            // InternalFiacre.g:3701:3: ( rule__ValueSubject__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getValueSubjectAccess().getGroup()); 
            }
            // InternalFiacre.g:3702:3: ( rule__ValueSubject__Group__0 )
            // InternalFiacre.g:3702:4: rule__ValueSubject__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ValueSubject__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getValueSubjectAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleValueSubject"


    // $ANTLR start "entryRuleTagSubject"
    // InternalFiacre.g:3711:1: entryRuleTagSubject : ruleTagSubject EOF ;
    public final void entryRuleTagSubject() throws RecognitionException {
        try {
            // InternalFiacre.g:3712:1: ( ruleTagSubject EOF )
            // InternalFiacre.g:3713:1: ruleTagSubject EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTagSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleTagSubject"
    // InternalFiacre.g:3720:1: ruleTagSubject : ( ( rule__TagSubject__Group__0 ) ) ;
    public final void ruleTagSubject() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3724:2: ( ( ( rule__TagSubject__Group__0 ) ) )
            // InternalFiacre.g:3725:2: ( ( rule__TagSubject__Group__0 ) )
            {
            // InternalFiacre.g:3725:2: ( ( rule__TagSubject__Group__0 ) )
            // InternalFiacre.g:3726:3: ( rule__TagSubject__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectAccess().getGroup()); 
            }
            // InternalFiacre.g:3727:3: ( rule__TagSubject__Group__0 )
            // InternalFiacre.g:3727:4: rule__TagSubject__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TagSubject__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTagSubject"


    // $ANTLR start "entryRuleEventSubject"
    // InternalFiacre.g:3736:1: entryRuleEventSubject : ruleEventSubject EOF ;
    public final void entryRuleEventSubject() throws RecognitionException {
        try {
            // InternalFiacre.g:3737:1: ( ruleEventSubject EOF )
            // InternalFiacre.g:3738:1: ruleEventSubject EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEventSubjectRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_1);
            ruleEventSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEventSubjectRule()); 
            }
            match(input,EOF,FollowSets000.FOLLOW_2); if (state.failed) return ;

            }

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


    // $ANTLR start "ruleEventSubject"
    // InternalFiacre.g:3745:1: ruleEventSubject : ( ( rule__EventSubject__Group__0 ) ) ;
    public final void ruleEventSubject() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3749:2: ( ( ( rule__EventSubject__Group__0 ) ) )
            // InternalFiacre.g:3750:2: ( ( rule__EventSubject__Group__0 ) )
            {
            // InternalFiacre.g:3750:2: ( ( rule__EventSubject__Group__0 ) )
            // InternalFiacre.g:3751:3: ( rule__EventSubject__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEventSubjectAccess().getGroup()); 
            }
            // InternalFiacre.g:3752:3: ( rule__EventSubject__Group__0 )
            // InternalFiacre.g:3752:4: rule__EventSubject__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EventSubject__Group__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEventSubjectAccess().getGroup()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEventSubject"


    // $ANTLR start "rule__Model__Alternatives_2"
    // InternalFiacre.g:3760:1: rule__Model__Alternatives_2 : ( ( ( rule__Model__DeclarationsAssignment_2_0 ) ) | ( ( rule__Model__RequirementsAssignment_2_1 ) ) | ( ( rule__Model__RootAssignment_2_2 ) ) );
    public final void rule__Model__Alternatives_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3764:1: ( ( ( rule__Model__DeclarationsAssignment_2_0 ) ) | ( ( rule__Model__RequirementsAssignment_2_1 ) ) | ( ( rule__Model__RootAssignment_2_2 ) ) )
            int alt2=3;
            switch ( input.LA(1) ) {
            case 19:
            case 26:
            case 27:
            case 39:
            case 40:
            case 48:
            case 112:
                {
                alt2=1;
                }
                break;
            case 109:
                {
                alt2=2;
                }
                break;
            case RULE_ID:
                {
                alt2=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // InternalFiacre.g:3765:2: ( ( rule__Model__DeclarationsAssignment_2_0 ) )
                    {
                    // InternalFiacre.g:3765:2: ( ( rule__Model__DeclarationsAssignment_2_0 ) )
                    // InternalFiacre.g:3766:3: ( rule__Model__DeclarationsAssignment_2_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getModelAccess().getDeclarationsAssignment_2_0()); 
                    }
                    // InternalFiacre.g:3767:3: ( rule__Model__DeclarationsAssignment_2_0 )
                    // InternalFiacre.g:3767:4: rule__Model__DeclarationsAssignment_2_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Model__DeclarationsAssignment_2_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getModelAccess().getDeclarationsAssignment_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3771:2: ( ( rule__Model__RequirementsAssignment_2_1 ) )
                    {
                    // InternalFiacre.g:3771:2: ( ( rule__Model__RequirementsAssignment_2_1 ) )
                    // InternalFiacre.g:3772:3: ( rule__Model__RequirementsAssignment_2_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getModelAccess().getRequirementsAssignment_2_1()); 
                    }
                    // InternalFiacre.g:3773:3: ( rule__Model__RequirementsAssignment_2_1 )
                    // InternalFiacre.g:3773:4: rule__Model__RequirementsAssignment_2_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Model__RequirementsAssignment_2_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getModelAccess().getRequirementsAssignment_2_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3777:2: ( ( rule__Model__RootAssignment_2_2 ) )
                    {
                    // InternalFiacre.g:3777:2: ( ( rule__Model__RootAssignment_2_2 ) )
                    // InternalFiacre.g:3778:3: ( rule__Model__RootAssignment_2_2 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getModelAccess().getRootAssignment_2_2()); 
                    }
                    // InternalFiacre.g:3779:3: ( rule__Model__RootAssignment_2_2 )
                    // InternalFiacre.g:3779:4: rule__Model__RootAssignment_2_2
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Model__RootAssignment_2_2();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getModelAccess().getRootAssignment_2_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Alternatives_2"


    // $ANTLR start "rule__Declaration__Alternatives"
    // InternalFiacre.g:3787:1: rule__Declaration__Alternatives : ( ( ruleTypeDeclaration ) | ( ruleChannelDeclaration ) | ( ruleConstantDeclaration ) | ( ruleParameterizedDeclaration ) | ( rulePropertyDeclaration ) );
    public final void rule__Declaration__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3791:1: ( ( ruleTypeDeclaration ) | ( ruleChannelDeclaration ) | ( ruleConstantDeclaration ) | ( ruleParameterizedDeclaration ) | ( rulePropertyDeclaration ) )
            int alt3=5;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt3=1;
                }
                break;
            case 27:
                {
                alt3=2;
                }
                break;
            case 39:
                {
                alt3=3;
                }
                break;
            case 19:
            case 40:
            case 48:
                {
                alt3=4;
                }
                break;
            case 112:
                {
                alt3=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // InternalFiacre.g:3792:2: ( ruleTypeDeclaration )
                    {
                    // InternalFiacre.g:3792:2: ( ruleTypeDeclaration )
                    // InternalFiacre.g:3793:3: ruleTypeDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDeclarationAccess().getTypeDeclarationParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleTypeDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDeclarationAccess().getTypeDeclarationParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3798:2: ( ruleChannelDeclaration )
                    {
                    // InternalFiacre.g:3798:2: ( ruleChannelDeclaration )
                    // InternalFiacre.g:3799:3: ruleChannelDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDeclarationAccess().getChannelDeclarationParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleChannelDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDeclarationAccess().getChannelDeclarationParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3804:2: ( ruleConstantDeclaration )
                    {
                    // InternalFiacre.g:3804:2: ( ruleConstantDeclaration )
                    // InternalFiacre.g:3805:3: ruleConstantDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDeclarationAccess().getConstantDeclarationParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleConstantDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDeclarationAccess().getConstantDeclarationParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:3810:2: ( ruleParameterizedDeclaration )
                    {
                    // InternalFiacre.g:3810:2: ( ruleParameterizedDeclaration )
                    // InternalFiacre.g:3811:3: ruleParameterizedDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDeclarationAccess().getParameterizedDeclarationParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleParameterizedDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDeclarationAccess().getParameterizedDeclarationParserRuleCall_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:3816:2: ( rulePropertyDeclaration )
                    {
                    // InternalFiacre.g:3816:2: ( rulePropertyDeclaration )
                    // InternalFiacre.g:3817:3: rulePropertyDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDeclarationAccess().getPropertyDeclarationParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePropertyDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDeclarationAccess().getPropertyDeclarationParserRuleCall_4()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Declaration__Alternatives"


    // $ANTLR start "rule__ParameterizedDeclaration__Alternatives"
    // InternalFiacre.g:3826:1: rule__ParameterizedDeclaration__Alternatives : ( ( ruleProcessDeclaration ) | ( ruleComponentDeclaration ) | ( ruleFunctionDeclaration ) );
    public final void rule__ParameterizedDeclaration__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3830:1: ( ( ruleProcessDeclaration ) | ( ruleComponentDeclaration ) | ( ruleFunctionDeclaration ) )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 40:
                {
                alt4=1;
                }
                break;
            case 48:
                {
                alt4=2;
                }
                break;
            case 19:
                {
                alt4=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // InternalFiacre.g:3831:2: ( ruleProcessDeclaration )
                    {
                    // InternalFiacre.g:3831:2: ( ruleProcessDeclaration )
                    // InternalFiacre.g:3832:3: ruleProcessDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getParameterizedDeclarationAccess().getProcessDeclarationParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleProcessDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getParameterizedDeclarationAccess().getProcessDeclarationParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3837:2: ( ruleComponentDeclaration )
                    {
                    // InternalFiacre.g:3837:2: ( ruleComponentDeclaration )
                    // InternalFiacre.g:3838:3: ruleComponentDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getParameterizedDeclarationAccess().getComponentDeclarationParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleComponentDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getParameterizedDeclarationAccess().getComponentDeclarationParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3843:2: ( ruleFunctionDeclaration )
                    {
                    // InternalFiacre.g:3843:2: ( ruleFunctionDeclaration )
                    // InternalFiacre.g:3844:3: ruleFunctionDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getParameterizedDeclarationAccess().getFunctionDeclarationParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getParameterizedDeclarationAccess().getFunctionDeclarationParserRuleCall_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterizedDeclaration__Alternatives"


    // $ANTLR start "rule__ChannelType__Alternatives_2"
    // InternalFiacre.g:3853:1: rule__ChannelType__Alternatives_2 : ( ( ( rule__ChannelType__Group_2_0__0 ) ) | ( 'none' ) | ( 'sync' ) );
    public final void rule__ChannelType__Alternatives_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3857:1: ( ( ( rule__ChannelType__Group_2_0__0 ) ) | ( 'none' ) | ( 'sync' ) )
            int alt5=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
            case RULE_INT:
            case 14:
            case 22:
            case 28:
            case 31:
            case 32:
            case 33:
            case 35:
            case 37:
            case 38:
            case 42:
            case 49:
            case 77:
            case 78:
            case 87:
            case 91:
            case 92:
            case 93:
            case 94:
            case 95:
            case 96:
            case 97:
            case 99:
            case 100:
            case 102:
            case 104:
            case 105:
            case 106:
            case 107:
            case 137:
                {
                alt5=1;
                }
                break;
            case 12:
                {
                int LA5_2 = input.LA(2);

                if ( (synpred10_InternalFiacre()) ) {
                    alt5=1;
                }
                else if ( (synpred11_InternalFiacre()) ) {
                    alt5=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 5, 2, input);

                    throw nvae;
                }
                }
                break;
            case 13:
                {
                alt5=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // InternalFiacre.g:3858:2: ( ( rule__ChannelType__Group_2_0__0 ) )
                    {
                    // InternalFiacre.g:3858:2: ( ( rule__ChannelType__Group_2_0__0 ) )
                    // InternalFiacre.g:3859:3: ( rule__ChannelType__Group_2_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getGroup_2_0()); 
                    }
                    // InternalFiacre.g:3860:3: ( rule__ChannelType__Group_2_0__0 )
                    // InternalFiacre.g:3860:4: rule__ChannelType__Group_2_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__Group_2_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getGroup_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3864:2: ( 'none' )
                    {
                    // InternalFiacre.g:3864:2: ( 'none' )
                    // InternalFiacre.g:3865:3: 'none'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getNoneKeyword_2_1()); 
                    }
                    match(input,12,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getNoneKeyword_2_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3870:2: ( 'sync' )
                    {
                    // InternalFiacre.g:3870:2: ( 'sync' )
                    // InternalFiacre.g:3871:3: 'sync'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getSyncKeyword_2_2()); 
                    }
                    match(input,13,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getSyncKeyword_2_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Alternatives_2"


    // $ANTLR start "rule__ChannelType__Alternatives_2_0_0"
    // InternalFiacre.g:3880:1: rule__ChannelType__Alternatives_2_0_0 : ( ( ( rule__ChannelType__Group_2_0_0_0__0 ) ) | ( ( rule__ChannelType__OutAssignment_2_0_0_1 ) ) );
    public final void rule__ChannelType__Alternatives_2_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3884:1: ( ( ( rule__ChannelType__Group_2_0_0_0__0 ) ) | ( ( rule__ChannelType__OutAssignment_2_0_0_1 ) ) )
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==49) ) {
                alt6=1;
            }
            else if ( (LA6_0==137) ) {
                alt6=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }
            switch (alt6) {
                case 1 :
                    // InternalFiacre.g:3885:2: ( ( rule__ChannelType__Group_2_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:3885:2: ( ( rule__ChannelType__Group_2_0_0_0__0 ) )
                    // InternalFiacre.g:3886:3: ( rule__ChannelType__Group_2_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getGroup_2_0_0_0()); 
                    }
                    // InternalFiacre.g:3887:3: ( rule__ChannelType__Group_2_0_0_0__0 )
                    // InternalFiacre.g:3887:4: rule__ChannelType__Group_2_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__Group_2_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getGroup_2_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3891:2: ( ( rule__ChannelType__OutAssignment_2_0_0_1 ) )
                    {
                    // InternalFiacre.g:3891:2: ( ( rule__ChannelType__OutAssignment_2_0_0_1 ) )
                    // InternalFiacre.g:3892:3: ( rule__ChannelType__OutAssignment_2_0_0_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getOutAssignment_2_0_0_1()); 
                    }
                    // InternalFiacre.g:3893:3: ( rule__ChannelType__OutAssignment_2_0_0_1 )
                    // InternalFiacre.g:3893:4: rule__ChannelType__OutAssignment_2_0_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__OutAssignment_2_0_0_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getOutAssignment_2_0_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Alternatives_2_0_0"


    // $ANTLR start "rule__ChannelType__Alternatives_2_0_1"
    // InternalFiacre.g:3901:1: rule__ChannelType__Alternatives_2_0_1 : ( ( ( rule__ChannelType__TypeAssignment_2_0_1_0 ) ) | ( 'none' ) );
    public final void rule__ChannelType__Alternatives_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3905:1: ( ( ( rule__ChannelType__TypeAssignment_2_0_1_0 ) ) | ( 'none' ) )
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==RULE_ID||LA7_0==RULE_INT||LA7_0==14||LA7_0==22||LA7_0==28||(LA7_0>=31 && LA7_0<=33)||LA7_0==35||(LA7_0>=37 && LA7_0<=38)||LA7_0==42||(LA7_0>=77 && LA7_0<=78)||LA7_0==87||(LA7_0>=91 && LA7_0<=97)||(LA7_0>=99 && LA7_0<=100)||LA7_0==102||(LA7_0>=104 && LA7_0<=107)) ) {
                alt7=1;
            }
            else if ( (LA7_0==12) ) {
                alt7=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }
            switch (alt7) {
                case 1 :
                    // InternalFiacre.g:3906:2: ( ( rule__ChannelType__TypeAssignment_2_0_1_0 ) )
                    {
                    // InternalFiacre.g:3906:2: ( ( rule__ChannelType__TypeAssignment_2_0_1_0 ) )
                    // InternalFiacre.g:3907:3: ( rule__ChannelType__TypeAssignment_2_0_1_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getTypeAssignment_2_0_1_0()); 
                    }
                    // InternalFiacre.g:3908:3: ( rule__ChannelType__TypeAssignment_2_0_1_0 )
                    // InternalFiacre.g:3908:4: rule__ChannelType__TypeAssignment_2_0_1_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__TypeAssignment_2_0_1_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getTypeAssignment_2_0_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3912:2: ( 'none' )
                    {
                    // InternalFiacre.g:3912:2: ( 'none' )
                    // InternalFiacre.g:3913:3: 'none'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getChannelTypeAccess().getNoneKeyword_2_0_1_1()); 
                    }
                    match(input,12,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getChannelTypeAccess().getNoneKeyword_2_0_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Alternatives_2_0_1"


    // $ANTLR start "rule__Type__Alternatives"
    // InternalFiacre.g:3922:1: rule__Type__Alternatives : ( ( ruleBasicType ) | ( ruleRangeType ) | ( ruleUnionType ) | ( ruleRecordType ) | ( ruleQueueType ) | ( ruleArrayType ) | ( ruleReferencedType ) );
    public final void rule__Type__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3926:1: ( ( ruleBasicType ) | ( ruleRangeType ) | ( ruleUnionType ) | ( ruleRecordType ) | ( ruleQueueType ) | ( ruleArrayType ) | ( ruleReferencedType ) )
            int alt8=7;
            alt8 = dfa8.predict(input);
            switch (alt8) {
                case 1 :
                    // InternalFiacre.g:3927:2: ( ruleBasicType )
                    {
                    // InternalFiacre.g:3927:2: ( ruleBasicType )
                    // InternalFiacre.g:3928:3: ruleBasicType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getBasicTypeParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleBasicType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getBasicTypeParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3933:2: ( ruleRangeType )
                    {
                    // InternalFiacre.g:3933:2: ( ruleRangeType )
                    // InternalFiacre.g:3934:3: ruleRangeType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getRangeTypeParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleRangeType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getRangeTypeParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3939:2: ( ruleUnionType )
                    {
                    // InternalFiacre.g:3939:2: ( ruleUnionType )
                    // InternalFiacre.g:3940:3: ruleUnionType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getUnionTypeParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleUnionType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getUnionTypeParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:3945:2: ( ruleRecordType )
                    {
                    // InternalFiacre.g:3945:2: ( ruleRecordType )
                    // InternalFiacre.g:3946:3: ruleRecordType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getRecordTypeParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleRecordType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getRecordTypeParserRuleCall_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:3951:2: ( ruleQueueType )
                    {
                    // InternalFiacre.g:3951:2: ( ruleQueueType )
                    // InternalFiacre.g:3952:3: ruleQueueType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getQueueTypeParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleQueueType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getQueueTypeParserRuleCall_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:3957:2: ( ruleArrayType )
                    {
                    // InternalFiacre.g:3957:2: ( ruleArrayType )
                    // InternalFiacre.g:3958:3: ruleArrayType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getArrayTypeParserRuleCall_5()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleArrayType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getArrayTypeParserRuleCall_5()); 
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalFiacre.g:3963:2: ( ruleReferencedType )
                    {
                    // InternalFiacre.g:3963:2: ( ruleReferencedType )
                    // InternalFiacre.g:3964:3: ruleReferencedType
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getTypeAccess().getReferencedTypeParserRuleCall_6()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleReferencedType();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getTypeAccess().getReferencedTypeParserRuleCall_6()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Type__Alternatives"


    // $ANTLR start "rule__BasicType__Alternatives"
    // InternalFiacre.g:3973:1: rule__BasicType__Alternatives : ( ( ( rule__BasicType__Group_0__0 ) ) | ( ( rule__BasicType__Group_1__0 ) ) | ( ( rule__BasicType__Group_2__0 ) ) );
    public final void rule__BasicType__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:3977:1: ( ( ( rule__BasicType__Group_0__0 ) ) | ( ( rule__BasicType__Group_1__0 ) ) | ( ( rule__BasicType__Group_2__0 ) ) )
            int alt9=3;
            switch ( input.LA(1) ) {
            case 31:
                {
                alt9=1;
                }
                break;
            case 32:
                {
                alt9=2;
                }
                break;
            case 33:
                {
                alt9=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // InternalFiacre.g:3978:2: ( ( rule__BasicType__Group_0__0 ) )
                    {
                    // InternalFiacre.g:3978:2: ( ( rule__BasicType__Group_0__0 ) )
                    // InternalFiacre.g:3979:3: ( rule__BasicType__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBasicTypeAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:3980:3: ( rule__BasicType__Group_0__0 )
                    // InternalFiacre.g:3980:4: rule__BasicType__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__BasicType__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBasicTypeAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:3984:2: ( ( rule__BasicType__Group_1__0 ) )
                    {
                    // InternalFiacre.g:3984:2: ( ( rule__BasicType__Group_1__0 ) )
                    // InternalFiacre.g:3985:3: ( rule__BasicType__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBasicTypeAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:3986:3: ( rule__BasicType__Group_1__0 )
                    // InternalFiacre.g:3986:4: rule__BasicType__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__BasicType__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBasicTypeAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:3990:2: ( ( rule__BasicType__Group_2__0 ) )
                    {
                    // InternalFiacre.g:3990:2: ( ( rule__BasicType__Group_2__0 ) )
                    // InternalFiacre.g:3991:3: ( rule__BasicType__Group_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBasicTypeAccess().getGroup_2()); 
                    }
                    // InternalFiacre.g:3992:3: ( rule__BasicType__Group_2__0 )
                    // InternalFiacre.g:3992:4: rule__BasicType__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__BasicType__Group_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBasicTypeAccess().getGroup_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Alternatives"


    // $ANTLR start "rule__Statement__Alternatives"
    // InternalFiacre.g:4000:1: rule__Statement__Alternatives : ( ( ruleNullStatement ) | ( ruleTaggedStatement ) | ( rulePatternStatement ) | ( ruleConditionalStatement ) | ( ruleSelectStatement ) | ( ruleWhileStatement ) | ( ruleForeachStatement ) | ( ruleToStatement ) | ( ruleCaseStatement ) | ( ruleLoopStatement ) | ( ruleOnStatement ) | ( ruleWaitStatement ) | ( ruleReturnStatement ) | ( ruleBlockStatement ) );
    public final void rule__Statement__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4004:1: ( ( ruleNullStatement ) | ( ruleTaggedStatement ) | ( rulePatternStatement ) | ( ruleConditionalStatement ) | ( ruleSelectStatement ) | ( ruleWhileStatement ) | ( ruleForeachStatement ) | ( ruleToStatement ) | ( ruleCaseStatement ) | ( ruleLoopStatement ) | ( ruleOnStatement ) | ( ruleWaitStatement ) | ( ruleReturnStatement ) | ( ruleBlockStatement ) )
            int alt10=14;
            switch ( input.LA(1) ) {
            case 56:
                {
                alt10=1;
                }
                break;
            case 30:
                {
                alt10=2;
                }
                break;
            case RULE_ID:
            case RULE_INT:
            case 14:
            case 22:
            case 57:
            case 87:
            case 106:
            case 107:
                {
                alt10=3;
                }
                break;
            case 62:
                {
                alt10=4;
                }
                break;
            case 66:
                {
                alt10=5;
                }
                break;
            case 67:
                {
                alt10=6;
                }
                break;
            case 69:
                {
                alt10=7;
                }
                break;
            case 70:
                {
                alt10=8;
                }
                break;
            case 71:
                {
                alt10=9;
                }
                break;
            case 72:
                {
                alt10=10;
                }
                break;
            case 73:
                {
                alt10=11;
                }
                break;
            case 74:
                {
                alt10=12;
                }
                break;
            case 55:
                {
                alt10=13;
                }
                break;
            case 54:
                {
                alt10=14;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }

            switch (alt10) {
                case 1 :
                    // InternalFiacre.g:4005:2: ( ruleNullStatement )
                    {
                    // InternalFiacre.g:4005:2: ( ruleNullStatement )
                    // InternalFiacre.g:4006:3: ruleNullStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getNullStatementParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNullStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getNullStatementParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4011:2: ( ruleTaggedStatement )
                    {
                    // InternalFiacre.g:4011:2: ( ruleTaggedStatement )
                    // InternalFiacre.g:4012:3: ruleTaggedStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getTaggedStatementParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleTaggedStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getTaggedStatementParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4017:2: ( rulePatternStatement )
                    {
                    // InternalFiacre.g:4017:2: ( rulePatternStatement )
                    // InternalFiacre.g:4018:3: rulePatternStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getPatternStatementParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePatternStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getPatternStatementParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4023:2: ( ruleConditionalStatement )
                    {
                    // InternalFiacre.g:4023:2: ( ruleConditionalStatement )
                    // InternalFiacre.g:4024:3: ruleConditionalStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getConditionalStatementParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleConditionalStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getConditionalStatementParserRuleCall_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4029:2: ( ruleSelectStatement )
                    {
                    // InternalFiacre.g:4029:2: ( ruleSelectStatement )
                    // InternalFiacre.g:4030:3: ruleSelectStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getSelectStatementParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleSelectStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getSelectStatementParserRuleCall_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4035:2: ( ruleWhileStatement )
                    {
                    // InternalFiacre.g:4035:2: ( ruleWhileStatement )
                    // InternalFiacre.g:4036:3: ruleWhileStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getWhileStatementParserRuleCall_5()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleWhileStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getWhileStatementParserRuleCall_5()); 
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalFiacre.g:4041:2: ( ruleForeachStatement )
                    {
                    // InternalFiacre.g:4041:2: ( ruleForeachStatement )
                    // InternalFiacre.g:4042:3: ruleForeachStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getForeachStatementParserRuleCall_6()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleForeachStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getForeachStatementParserRuleCall_6()); 
                    }

                    }


                    }
                    break;
                case 8 :
                    // InternalFiacre.g:4047:2: ( ruleToStatement )
                    {
                    // InternalFiacre.g:4047:2: ( ruleToStatement )
                    // InternalFiacre.g:4048:3: ruleToStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getToStatementParserRuleCall_7()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleToStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getToStatementParserRuleCall_7()); 
                    }

                    }


                    }
                    break;
                case 9 :
                    // InternalFiacre.g:4053:2: ( ruleCaseStatement )
                    {
                    // InternalFiacre.g:4053:2: ( ruleCaseStatement )
                    // InternalFiacre.g:4054:3: ruleCaseStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getCaseStatementParserRuleCall_8()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleCaseStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getCaseStatementParserRuleCall_8()); 
                    }

                    }


                    }
                    break;
                case 10 :
                    // InternalFiacre.g:4059:2: ( ruleLoopStatement )
                    {
                    // InternalFiacre.g:4059:2: ( ruleLoopStatement )
                    // InternalFiacre.g:4060:3: ruleLoopStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getLoopStatementParserRuleCall_9()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleLoopStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getLoopStatementParserRuleCall_9()); 
                    }

                    }


                    }
                    break;
                case 11 :
                    // InternalFiacre.g:4065:2: ( ruleOnStatement )
                    {
                    // InternalFiacre.g:4065:2: ( ruleOnStatement )
                    // InternalFiacre.g:4066:3: ruleOnStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getOnStatementParserRuleCall_10()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleOnStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getOnStatementParserRuleCall_10()); 
                    }

                    }


                    }
                    break;
                case 12 :
                    // InternalFiacre.g:4071:2: ( ruleWaitStatement )
                    {
                    // InternalFiacre.g:4071:2: ( ruleWaitStatement )
                    // InternalFiacre.g:4072:3: ruleWaitStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getWaitStatementParserRuleCall_11()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleWaitStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getWaitStatementParserRuleCall_11()); 
                    }

                    }


                    }
                    break;
                case 13 :
                    // InternalFiacre.g:4077:2: ( ruleReturnStatement )
                    {
                    // InternalFiacre.g:4077:2: ( ruleReturnStatement )
                    // InternalFiacre.g:4078:3: ruleReturnStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getReturnStatementParserRuleCall_12()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleReturnStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getReturnStatementParserRuleCall_12()); 
                    }

                    }


                    }
                    break;
                case 14 :
                    // InternalFiacre.g:4083:2: ( ruleBlockStatement )
                    {
                    // InternalFiacre.g:4083:2: ( ruleBlockStatement )
                    // InternalFiacre.g:4084:3: ruleBlockStatement
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStatementAccess().getBlockStatementParserRuleCall_13()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleBlockStatement();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStatementAccess().getBlockStatementParserRuleCall_13()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Statement__Alternatives"


    // $ANTLR start "rule__PatternStatement__Alternatives_1"
    // InternalFiacre.g:4093:1: rule__PatternStatement__Alternatives_1 : ( ( ( rule__PatternStatement__Group_1_0__0 ) ) | ( ( rule__PatternStatement__Group_1_1__0 ) ) | ( ( rule__PatternStatement__Group_1_2__0 ) ) | ( ( rule__PatternStatement__Group_1_3__0 ) ) | ( ( rule__PatternStatement__Group_1_4__0 ) ) | ( ( rule__PatternStatement__Group_1_5__0 ) ) );
    public final void rule__PatternStatement__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4097:1: ( ( ( rule__PatternStatement__Group_1_0__0 ) ) | ( ( rule__PatternStatement__Group_1_1__0 ) ) | ( ( rule__PatternStatement__Group_1_2__0 ) ) | ( ( rule__PatternStatement__Group_1_3__0 ) ) | ( ( rule__PatternStatement__Group_1_4__0 ) ) | ( ( rule__PatternStatement__Group_1_5__0 ) ) )
            int alt11=6;
            switch ( input.LA(1) ) {
            case 24:
                {
                int LA11_1 = input.LA(2);

                if ( (synpred35_InternalFiacre()) ) {
                    alt11=1;
                }
                else if ( (synpred37_InternalFiacre()) ) {
                    alt11=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 1, input);

                    throw nvae;
                }
                }
                break;
            case 50:
                {
                int LA11_2 = input.LA(2);

                if ( (synpred36_InternalFiacre()) ) {
                    alt11=2;
                }
                else if ( (synpred38_InternalFiacre()) ) {
                    alt11=4;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 2, input);

                    throw nvae;
                }
                }
                break;
            case 59:
                {
                alt11=5;
                }
                break;
            case 60:
                {
                alt11=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // InternalFiacre.g:4098:2: ( ( rule__PatternStatement__Group_1_0__0 ) )
                    {
                    // InternalFiacre.g:4098:2: ( ( rule__PatternStatement__Group_1_0__0 ) )
                    // InternalFiacre.g:4099:3: ( rule__PatternStatement__Group_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_0()); 
                    }
                    // InternalFiacre.g:4100:3: ( rule__PatternStatement__Group_1_0__0 )
                    // InternalFiacre.g:4100:4: rule__PatternStatement__Group_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4104:2: ( ( rule__PatternStatement__Group_1_1__0 ) )
                    {
                    // InternalFiacre.g:4104:2: ( ( rule__PatternStatement__Group_1_1__0 ) )
                    // InternalFiacre.g:4105:3: ( rule__PatternStatement__Group_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_1()); 
                    }
                    // InternalFiacre.g:4106:3: ( rule__PatternStatement__Group_1_1__0 )
                    // InternalFiacre.g:4106:4: rule__PatternStatement__Group_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4110:2: ( ( rule__PatternStatement__Group_1_2__0 ) )
                    {
                    // InternalFiacre.g:4110:2: ( ( rule__PatternStatement__Group_1_2__0 ) )
                    // InternalFiacre.g:4111:3: ( rule__PatternStatement__Group_1_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_2()); 
                    }
                    // InternalFiacre.g:4112:3: ( rule__PatternStatement__Group_1_2__0 )
                    // InternalFiacre.g:4112:4: rule__PatternStatement__Group_1_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4116:2: ( ( rule__PatternStatement__Group_1_3__0 ) )
                    {
                    // InternalFiacre.g:4116:2: ( ( rule__PatternStatement__Group_1_3__0 ) )
                    // InternalFiacre.g:4117:3: ( rule__PatternStatement__Group_1_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_3()); 
                    }
                    // InternalFiacre.g:4118:3: ( rule__PatternStatement__Group_1_3__0 )
                    // InternalFiacre.g:4118:4: rule__PatternStatement__Group_1_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4122:2: ( ( rule__PatternStatement__Group_1_4__0 ) )
                    {
                    // InternalFiacre.g:4122:2: ( ( rule__PatternStatement__Group_1_4__0 ) )
                    // InternalFiacre.g:4123:3: ( rule__PatternStatement__Group_1_4__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_4()); 
                    }
                    // InternalFiacre.g:4124:3: ( rule__PatternStatement__Group_1_4__0 )
                    // InternalFiacre.g:4124:4: rule__PatternStatement__Group_1_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_4__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4128:2: ( ( rule__PatternStatement__Group_1_5__0 ) )
                    {
                    // InternalFiacre.g:4128:2: ( ( rule__PatternStatement__Group_1_5__0 ) )
                    // InternalFiacre.g:4129:3: ( rule__PatternStatement__Group_1_5__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternStatementAccess().getGroup_1_5()); 
                    }
                    // InternalFiacre.g:4130:3: ( rule__PatternStatement__Group_1_5__0 )
                    // InternalFiacre.g:4130:4: rule__PatternStatement__Group_1_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_5__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternStatementAccess().getGroup_1_5()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Alternatives_1"


    // $ANTLR start "rule__Pattern__Alternatives"
    // InternalFiacre.g:4138:1: rule__Pattern__Alternatives : ( ( ruleAnyPattern ) | ( ruleIntegerPattern ) | ( ruleConstantPattern ) | ( ( rule__Pattern__Group_3__0 ) ) | ( ruleIdentifierPattern ) );
    public final void rule__Pattern__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4142:1: ( ( ruleAnyPattern ) | ( ruleIntegerPattern ) | ( ruleConstantPattern ) | ( ( rule__Pattern__Group_3__0 ) ) | ( ruleIdentifierPattern ) )
            int alt12=5;
            switch ( input.LA(1) ) {
            case 57:
                {
                alt12=1;
                }
                break;
            case 14:
            case 87:
                {
                alt12=2;
                }
                break;
            case RULE_INT:
            case 106:
            case 107:
                {
                alt12=3;
                }
                break;
            case 22:
                {
                alt12=4;
                }
                break;
            case RULE_ID:
                {
                alt12=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }

            switch (alt12) {
                case 1 :
                    // InternalFiacre.g:4143:2: ( ruleAnyPattern )
                    {
                    // InternalFiacre.g:4143:2: ( ruleAnyPattern )
                    // InternalFiacre.g:4144:3: ruleAnyPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternAccess().getAnyPatternParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAnyPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternAccess().getAnyPatternParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4149:2: ( ruleIntegerPattern )
                    {
                    // InternalFiacre.g:4149:2: ( ruleIntegerPattern )
                    // InternalFiacre.g:4150:3: ruleIntegerPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternAccess().getIntegerPatternParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleIntegerPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternAccess().getIntegerPatternParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4155:2: ( ruleConstantPattern )
                    {
                    // InternalFiacre.g:4155:2: ( ruleConstantPattern )
                    // InternalFiacre.g:4156:3: ruleConstantPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternAccess().getConstantPatternParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleConstantPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternAccess().getConstantPatternParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4161:2: ( ( rule__Pattern__Group_3__0 ) )
                    {
                    // InternalFiacre.g:4161:2: ( ( rule__Pattern__Group_3__0 ) )
                    // InternalFiacre.g:4162:3: ( rule__Pattern__Group_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternAccess().getGroup_3()); 
                    }
                    // InternalFiacre.g:4163:3: ( rule__Pattern__Group_3__0 )
                    // InternalFiacre.g:4163:4: rule__Pattern__Group_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Pattern__Group_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternAccess().getGroup_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4167:2: ( ruleIdentifierPattern )
                    {
                    // InternalFiacre.g:4167:2: ( ruleIdentifierPattern )
                    // InternalFiacre.g:4168:3: ruleIdentifierPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternAccess().getIdentifierPatternParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleIdentifierPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternAccess().getIdentifierPatternParserRuleCall_4()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Alternatives"


    // $ANTLR start "rule__IntegerPattern__Alternatives_0"
    // InternalFiacre.g:4177:1: rule__IntegerPattern__Alternatives_0 : ( ( '+' ) | ( ( rule__IntegerPattern__NegativeAssignment_0_1 ) ) );
    public final void rule__IntegerPattern__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4181:1: ( ( '+' ) | ( ( rule__IntegerPattern__NegativeAssignment_0_1 ) ) )
            int alt13=2;
            int LA13_0 = input.LA(1);

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

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // InternalFiacre.g:4182:2: ( '+' )
                    {
                    // InternalFiacre.g:4182:2: ( '+' )
                    // InternalFiacre.g:4183:3: '+'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIntegerPatternAccess().getPlusSignKeyword_0_0()); 
                    }
                    match(input,14,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIntegerPatternAccess().getPlusSignKeyword_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4188:2: ( ( rule__IntegerPattern__NegativeAssignment_0_1 ) )
                    {
                    // InternalFiacre.g:4188:2: ( ( rule__IntegerPattern__NegativeAssignment_0_1 ) )
                    // InternalFiacre.g:4189:3: ( rule__IntegerPattern__NegativeAssignment_0_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIntegerPatternAccess().getNegativeAssignment_0_1()); 
                    }
                    // InternalFiacre.g:4190:3: ( rule__IntegerPattern__NegativeAssignment_0_1 )
                    // InternalFiacre.g:4190:4: rule__IntegerPattern__NegativeAssignment_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IntegerPattern__NegativeAssignment_0_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIntegerPatternAccess().getNegativeAssignment_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__Alternatives_0"


    // $ANTLR start "rule__IdentifierPattern__Alternatives"
    // InternalFiacre.g:4198:1: rule__IdentifierPattern__Alternatives : ( ( ( rule__IdentifierPattern__Group_0__0 ) ) | ( ( rule__IdentifierPattern__Group_1__0 ) ) );
    public final void rule__IdentifierPattern__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4202:1: ( ( ( rule__IdentifierPattern__Group_0__0 ) ) | ( ( rule__IdentifierPattern__Group_1__0 ) ) )
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==RULE_ID) ) {
                int LA14_1 = input.LA(2);

                if ( (LA14_1==EOF||LA14_1==RULE_ID||LA14_1==15||LA14_1==17||LA14_1==19||(LA14_1>=23 && LA14_1<=24)||(LA14_1>=26 && LA14_1<=27)||LA14_1==36||(LA14_1>=39 && LA14_1<=40)||LA14_1==42||(LA14_1>=47 && LA14_1<=48)||(LA14_1>=50 && LA14_1<=53)||(LA14_1>=58 && LA14_1<=61)||(LA14_1>=64 && LA14_1<=65)||LA14_1==75||LA14_1==109||LA14_1==112) ) {
                    alt14=2;
                }
                else if ( (LA14_1==22) ) {
                    alt14=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 14, 1, input);

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

                throw nvae;
            }
            switch (alt14) {
                case 1 :
                    // InternalFiacre.g:4203:2: ( ( rule__IdentifierPattern__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4203:2: ( ( rule__IdentifierPattern__Group_0__0 ) )
                    // InternalFiacre.g:4204:3: ( rule__IdentifierPattern__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierPatternAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4205:3: ( rule__IdentifierPattern__Group_0__0 )
                    // InternalFiacre.g:4205:4: rule__IdentifierPattern__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierPattern__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierPatternAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4209:2: ( ( rule__IdentifierPattern__Group_1__0 ) )
                    {
                    // InternalFiacre.g:4209:2: ( ( rule__IdentifierPattern__Group_1__0 ) )
                    // InternalFiacre.g:4210:3: ( rule__IdentifierPattern__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierPatternAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:4211:3: ( rule__IdentifierPattern__Group_1__0 )
                    // InternalFiacre.g:4211:4: rule__IdentifierPattern__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierPattern__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierPatternAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Alternatives"


    // $ANTLR start "rule__IdentifierPattern__Alternatives_1_1"
    // InternalFiacre.g:4219:1: rule__IdentifierPattern__Alternatives_1_1 : ( ( ( rule__IdentifierPattern__Group_1_1_0__0 ) ) | ( ( rule__IdentifierPattern__Group_1_1_1__0 ) ) );
    public final void rule__IdentifierPattern__Alternatives_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4223:1: ( ( ( rule__IdentifierPattern__Group_1_1_0__0 ) ) | ( ( rule__IdentifierPattern__Group_1_1_1__0 ) ) )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==42) ) {
                alt15=1;
            }
            else if ( (LA15_0==61) ) {
                alt15=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // InternalFiacre.g:4224:2: ( ( rule__IdentifierPattern__Group_1_1_0__0 ) )
                    {
                    // InternalFiacre.g:4224:2: ( ( rule__IdentifierPattern__Group_1_1_0__0 ) )
                    // InternalFiacre.g:4225:3: ( rule__IdentifierPattern__Group_1_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierPatternAccess().getGroup_1_1_0()); 
                    }
                    // InternalFiacre.g:4226:3: ( rule__IdentifierPattern__Group_1_1_0__0 )
                    // InternalFiacre.g:4226:4: rule__IdentifierPattern__Group_1_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierPattern__Group_1_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierPatternAccess().getGroup_1_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4230:2: ( ( rule__IdentifierPattern__Group_1_1_1__0 ) )
                    {
                    // InternalFiacre.g:4230:2: ( ( rule__IdentifierPattern__Group_1_1_1__0 ) )
                    // InternalFiacre.g:4231:3: ( rule__IdentifierPattern__Group_1_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierPatternAccess().getGroup_1_1_1()); 
                    }
                    // InternalFiacre.g:4232:3: ( rule__IdentifierPattern__Group_1_1_1__0 )
                    // InternalFiacre.g:4232:4: rule__IdentifierPattern__Group_1_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierPattern__Group_1_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierPatternAccess().getGroup_1_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Alternatives_1_1"


    // $ANTLR start "rule__Block__Alternatives"
    // InternalFiacre.g:4240:1: rule__Block__Alternatives : ( ( ruleCompositeBlock ) | ( ruleInstanceDeclaration ) );
    public final void rule__Block__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4244:1: ( ( ruleCompositeBlock ) | ( ruleInstanceDeclaration ) )
            int alt16=2;
            alt16 = dfa16.predict(input);
            switch (alt16) {
                case 1 :
                    // InternalFiacre.g:4245:2: ( ruleCompositeBlock )
                    {
                    // InternalFiacre.g:4245:2: ( ruleCompositeBlock )
                    // InternalFiacre.g:4246:3: ruleCompositeBlock
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBlockAccess().getCompositeBlockParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleCompositeBlock();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBlockAccess().getCompositeBlockParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4251:2: ( ruleInstanceDeclaration )
                    {
                    // InternalFiacre.g:4251:2: ( ruleInstanceDeclaration )
                    // InternalFiacre.g:4252:3: ruleInstanceDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBlockAccess().getInstanceDeclarationParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleInstanceDeclaration();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBlockAccess().getInstanceDeclarationParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Block__Alternatives"


    // $ANTLR start "rule__CompositeBlock__Alternatives_0"
    // InternalFiacre.g:4261:1: rule__CompositeBlock__Alternatives_0 : ( ( ( rule__CompositeBlock__Group_0_0__0 ) ) | ( '->' ) );
    public final void rule__CompositeBlock__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4265:1: ( ( ( rule__CompositeBlock__Group_0_0__0 ) ) | ( '->' ) )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==RULE_ID||LA17_0==RULE_INT||LA17_0==14||LA17_0==22||LA17_0==42||(LA17_0>=77 && LA17_0<=78)||(LA17_0>=87 && LA17_0<=88)||(LA17_0>=91 && LA17_0<=97)||(LA17_0>=99 && LA17_0<=100)||LA17_0==102||(LA17_0>=104 && LA17_0<=107)) ) {
                alt17=1;
            }
            else if ( (LA17_0==15) ) {
                alt17=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // InternalFiacre.g:4266:2: ( ( rule__CompositeBlock__Group_0_0__0 ) )
                    {
                    // InternalFiacre.g:4266:2: ( ( rule__CompositeBlock__Group_0_0__0 ) )
                    // InternalFiacre.g:4267:3: ( rule__CompositeBlock__Group_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getCompositeBlockAccess().getGroup_0_0()); 
                    }
                    // InternalFiacre.g:4268:3: ( rule__CompositeBlock__Group_0_0__0 )
                    // InternalFiacre.g:4268:4: rule__CompositeBlock__Group_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__CompositeBlock__Group_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getCompositeBlockAccess().getGroup_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4272:2: ( '->' )
                    {
                    // InternalFiacre.g:4272:2: ( '->' )
                    // InternalFiacre.g:4273:3: '->'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getCompositeBlockAccess().getHyphenMinusGreaterThanSignKeyword_0_1()); 
                    }
                    match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getCompositeBlockAccess().getHyphenMinusGreaterThanSignKeyword_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Alternatives_0"


    // $ANTLR start "rule__InstanceDeclaration__Alternatives_0"
    // InternalFiacre.g:4282:1: rule__InstanceDeclaration__Alternatives_0 : ( ( ( rule__InstanceDeclaration__Group_0_0__0 ) ) | ( '->' ) );
    public final void rule__InstanceDeclaration__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4286:1: ( ( ( rule__InstanceDeclaration__Group_0_0__0 ) ) | ( '->' ) )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==RULE_ID||LA18_0==RULE_INT||LA18_0==14||LA18_0==22||LA18_0==42||(LA18_0>=77 && LA18_0<=78)||(LA18_0>=87 && LA18_0<=88)||(LA18_0>=91 && LA18_0<=97)||(LA18_0>=99 && LA18_0<=100)||LA18_0==102||(LA18_0>=104 && LA18_0<=107)) ) {
                alt18=1;
            }
            else if ( (LA18_0==15) ) {
                alt18=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // InternalFiacre.g:4287:2: ( ( rule__InstanceDeclaration__Group_0_0__0 ) )
                    {
                    // InternalFiacre.g:4287:2: ( ( rule__InstanceDeclaration__Group_0_0__0 ) )
                    // InternalFiacre.g:4288:3: ( rule__InstanceDeclaration__Group_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getInstanceDeclarationAccess().getGroup_0_0()); 
                    }
                    // InternalFiacre.g:4289:3: ( rule__InstanceDeclaration__Group_0_0__0 )
                    // InternalFiacre.g:4289:4: rule__InstanceDeclaration__Group_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__InstanceDeclaration__Group_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getInstanceDeclarationAccess().getGroup_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4293:2: ( '->' )
                    {
                    // InternalFiacre.g:4293:2: ( '->' )
                    // InternalFiacre.g:4294:3: '->'
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getInstanceDeclarationAccess().getHyphenMinusGreaterThanSignKeyword_0_1()); 
                    }
                    match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getInstanceDeclarationAccess().getHyphenMinusGreaterThanSignKeyword_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Alternatives_0"


    // $ANTLR start "rule__PortSet__Alternatives"
    // InternalFiacre.g:4303:1: rule__PortSet__Alternatives : ( ( ( rule__PortSet__AllPortsAssignment_0 ) ) | ( ( rule__PortSet__Group_1__0 ) ) );
    public final void rule__PortSet__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4307:1: ( ( ( rule__PortSet__AllPortsAssignment_0 ) ) | ( ( rule__PortSet__Group_1__0 ) ) )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==88) ) {
                alt19=1;
            }
            else if ( (LA19_0==RULE_ID||LA19_0==RULE_INT||LA19_0==14||LA19_0==22||LA19_0==42||(LA19_0>=77 && LA19_0<=78)||LA19_0==87||(LA19_0>=91 && LA19_0<=97)||(LA19_0>=99 && LA19_0<=100)||LA19_0==102||(LA19_0>=104 && LA19_0<=107)) ) {
                alt19=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // InternalFiacre.g:4308:2: ( ( rule__PortSet__AllPortsAssignment_0 ) )
                    {
                    // InternalFiacre.g:4308:2: ( ( rule__PortSet__AllPortsAssignment_0 ) )
                    // InternalFiacre.g:4309:3: ( rule__PortSet__AllPortsAssignment_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPortSetAccess().getAllPortsAssignment_0()); 
                    }
                    // InternalFiacre.g:4310:3: ( rule__PortSet__AllPortsAssignment_0 )
                    // InternalFiacre.g:4310:4: rule__PortSet__AllPortsAssignment_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PortSet__AllPortsAssignment_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPortSetAccess().getAllPortsAssignment_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4314:2: ( ( rule__PortSet__Group_1__0 ) )
                    {
                    // InternalFiacre.g:4314:2: ( ( rule__PortSet__Group_1__0 ) )
                    // InternalFiacre.g:4315:3: ( rule__PortSet__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPortSetAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:4316:3: ( rule__PortSet__Group_1__0 )
                    // InternalFiacre.g:4316:4: rule__PortSet__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PortSet__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPortSetAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Alternatives"


    // $ANTLR start "rule__QuantifiedExpression__Alternatives"
    // InternalFiacre.g:4324:1: rule__QuantifiedExpression__Alternatives : ( ( ( rule__QuantifiedExpression__Group_0__0 ) ) | ( ruleConditional ) );
    public final void rule__QuantifiedExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4328:1: ( ( ( rule__QuantifiedExpression__Group_0__0 ) ) | ( ruleConditional ) )
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( ((LA20_0>=77 && LA20_0<=78)) ) {
                alt20=1;
            }
            else if ( (LA20_0==RULE_ID||LA20_0==RULE_INT||LA20_0==14||LA20_0==22||LA20_0==42||LA20_0==87||(LA20_0>=91 && LA20_0<=97)||(LA20_0>=99 && LA20_0<=100)||LA20_0==102||(LA20_0>=104 && LA20_0<=107)) ) {
                alt20=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // InternalFiacre.g:4329:2: ( ( rule__QuantifiedExpression__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4329:2: ( ( rule__QuantifiedExpression__Group_0__0 ) )
                    // InternalFiacre.g:4330:3: ( rule__QuantifiedExpression__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedExpressionAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4331:3: ( rule__QuantifiedExpression__Group_0__0 )
                    // InternalFiacre.g:4331:4: rule__QuantifiedExpression__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedExpression__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedExpressionAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4335:2: ( ruleConditional )
                    {
                    // InternalFiacre.g:4335:2: ( ruleConditional )
                    // InternalFiacre.g:4336:3: ruleConditional
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedExpressionAccess().getConditionalParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleConditional();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedExpressionAccess().getConditionalParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Alternatives"


    // $ANTLR start "rule__QuantifiedExpression__Alternatives_0_0"
    // InternalFiacre.g:4345:1: rule__QuantifiedExpression__Alternatives_0_0 : ( ( ( rule__QuantifiedExpression__Group_0_0_0__0 ) ) | ( ( rule__QuantifiedExpression__Group_0_0_1__0 ) ) );
    public final void rule__QuantifiedExpression__Alternatives_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4349:1: ( ( ( rule__QuantifiedExpression__Group_0_0_0__0 ) ) | ( ( rule__QuantifiedExpression__Group_0_0_1__0 ) ) )
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==77) ) {
                alt21=1;
            }
            else if ( (LA21_0==78) ) {
                alt21=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;
            }
            switch (alt21) {
                case 1 :
                    // InternalFiacre.g:4350:2: ( ( rule__QuantifiedExpression__Group_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:4350:2: ( ( rule__QuantifiedExpression__Group_0_0_0__0 ) )
                    // InternalFiacre.g:4351:3: ( rule__QuantifiedExpression__Group_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_0_0()); 
                    }
                    // InternalFiacre.g:4352:3: ( rule__QuantifiedExpression__Group_0_0_0__0 )
                    // InternalFiacre.g:4352:4: rule__QuantifiedExpression__Group_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedExpression__Group_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4356:2: ( ( rule__QuantifiedExpression__Group_0_0_1__0 ) )
                    {
                    // InternalFiacre.g:4356:2: ( ( rule__QuantifiedExpression__Group_0_0_1__0 ) )
                    // InternalFiacre.g:4357:3: ( rule__QuantifiedExpression__Group_0_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_0_1()); 
                    }
                    // InternalFiacre.g:4358:3: ( rule__QuantifiedExpression__Group_0_0_1__0 )
                    // InternalFiacre.g:4358:4: rule__QuantifiedExpression__Group_0_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedExpression__Group_0_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Alternatives_0_0"


    // $ANTLR start "rule__Comparison__Alternatives_1_0"
    // InternalFiacre.g:4366:1: rule__Comparison__Alternatives_1_0 : ( ( ( rule__Comparison__Group_1_0_0__0 ) ) | ( ( rule__Comparison__Group_1_0_1__0 ) ) | ( ( rule__Comparison__Group_1_0_2__0 ) ) | ( ( rule__Comparison__Group_1_0_3__0 ) ) | ( ( rule__Comparison__Group_1_0_4__0 ) ) | ( ( rule__Comparison__Group_1_0_5__0 ) ) );
    public final void rule__Comparison__Alternatives_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4370:1: ( ( ( rule__Comparison__Group_1_0_0__0 ) ) | ( ( rule__Comparison__Group_1_0_1__0 ) ) | ( ( rule__Comparison__Group_1_0_2__0 ) ) | ( ( rule__Comparison__Group_1_0_3__0 ) ) | ( ( rule__Comparison__Group_1_0_4__0 ) ) | ( ( rule__Comparison__Group_1_0_5__0 ) ) )
            int alt22=6;
            switch ( input.LA(1) ) {
            case 82:
                {
                alt22=1;
                }
                break;
            case 83:
                {
                alt22=2;
                }
                break;
            case 84:
                {
                alt22=3;
                }
                break;
            case 85:
                {
                alt22=4;
                }
                break;
            case 16:
                {
                alt22=5;
                }
                break;
            case 86:
                {
                alt22=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }

            switch (alt22) {
                case 1 :
                    // InternalFiacre.g:4371:2: ( ( rule__Comparison__Group_1_0_0__0 ) )
                    {
                    // InternalFiacre.g:4371:2: ( ( rule__Comparison__Group_1_0_0__0 ) )
                    // InternalFiacre.g:4372:3: ( rule__Comparison__Group_1_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_0()); 
                    }
                    // InternalFiacre.g:4373:3: ( rule__Comparison__Group_1_0_0__0 )
                    // InternalFiacre.g:4373:4: rule__Comparison__Group_1_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4377:2: ( ( rule__Comparison__Group_1_0_1__0 ) )
                    {
                    // InternalFiacre.g:4377:2: ( ( rule__Comparison__Group_1_0_1__0 ) )
                    // InternalFiacre.g:4378:3: ( rule__Comparison__Group_1_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_1()); 
                    }
                    // InternalFiacre.g:4379:3: ( rule__Comparison__Group_1_0_1__0 )
                    // InternalFiacre.g:4379:4: rule__Comparison__Group_1_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4383:2: ( ( rule__Comparison__Group_1_0_2__0 ) )
                    {
                    // InternalFiacre.g:4383:2: ( ( rule__Comparison__Group_1_0_2__0 ) )
                    // InternalFiacre.g:4384:3: ( rule__Comparison__Group_1_0_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_2()); 
                    }
                    // InternalFiacre.g:4385:3: ( rule__Comparison__Group_1_0_2__0 )
                    // InternalFiacre.g:4385:4: rule__Comparison__Group_1_0_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4389:2: ( ( rule__Comparison__Group_1_0_3__0 ) )
                    {
                    // InternalFiacre.g:4389:2: ( ( rule__Comparison__Group_1_0_3__0 ) )
                    // InternalFiacre.g:4390:3: ( rule__Comparison__Group_1_0_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_3()); 
                    }
                    // InternalFiacre.g:4391:3: ( rule__Comparison__Group_1_0_3__0 )
                    // InternalFiacre.g:4391:4: rule__Comparison__Group_1_0_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4395:2: ( ( rule__Comparison__Group_1_0_4__0 ) )
                    {
                    // InternalFiacre.g:4395:2: ( ( rule__Comparison__Group_1_0_4__0 ) )
                    // InternalFiacre.g:4396:3: ( rule__Comparison__Group_1_0_4__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_4()); 
                    }
                    // InternalFiacre.g:4397:3: ( rule__Comparison__Group_1_0_4__0 )
                    // InternalFiacre.g:4397:4: rule__Comparison__Group_1_0_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_4__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4401:2: ( ( rule__Comparison__Group_1_0_5__0 ) )
                    {
                    // InternalFiacre.g:4401:2: ( ( rule__Comparison__Group_1_0_5__0 ) )
                    // InternalFiacre.g:4402:3: ( rule__Comparison__Group_1_0_5__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getComparisonAccess().getGroup_1_0_5()); 
                    }
                    // InternalFiacre.g:4403:3: ( rule__Comparison__Group_1_0_5__0 )
                    // InternalFiacre.g:4403:4: rule__Comparison__Group_1_0_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1_0_5__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getComparisonAccess().getGroup_1_0_5()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Alternatives_1_0"


    // $ANTLR start "rule__UnaryExpression__Alternatives"
    // InternalFiacre.g:4411:1: rule__UnaryExpression__Alternatives : ( ( ( rule__UnaryExpression__Group_0__0 ) ) | ( ruleProjection ) );
    public final void rule__UnaryExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4415:1: ( ( ( rule__UnaryExpression__Group_0__0 ) ) | ( ruleProjection ) )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==14||LA23_0==87||(LA23_0>=91 && LA23_0<=97)) ) {
                alt23=1;
            }
            else if ( (LA23_0==RULE_ID||LA23_0==RULE_INT||LA23_0==22||LA23_0==42||(LA23_0>=99 && LA23_0<=100)||LA23_0==102||(LA23_0>=104 && LA23_0<=107)) ) {
                alt23=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // InternalFiacre.g:4416:2: ( ( rule__UnaryExpression__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4416:2: ( ( rule__UnaryExpression__Group_0__0 ) )
                    // InternalFiacre.g:4417:3: ( rule__UnaryExpression__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4418:3: ( rule__UnaryExpression__Group_0__0 )
                    // InternalFiacre.g:4418:4: rule__UnaryExpression__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4422:2: ( ruleProjection )
                    {
                    // InternalFiacre.g:4422:2: ( ruleProjection )
                    // InternalFiacre.g:4423:3: ruleProjection
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getProjectionParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleProjection();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getProjectionParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Alternatives"


    // $ANTLR start "rule__UnaryExpression__Alternatives_0_0"
    // InternalFiacre.g:4432:1: rule__UnaryExpression__Alternatives_0_0 : ( ( ( rule__UnaryExpression__Group_0_0_0__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_1__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_2__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_3__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_4__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_5__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_6__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_7__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_8__0 ) ) );
    public final void rule__UnaryExpression__Alternatives_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4436:1: ( ( ( rule__UnaryExpression__Group_0_0_0__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_1__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_2__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_3__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_4__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_5__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_6__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_7__0 ) ) | ( ( rule__UnaryExpression__Group_0_0_8__0 ) ) )
            int alt24=9;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt24=1;
                }
                break;
            case 87:
                {
                alt24=2;
                }
                break;
            case 91:
                {
                alt24=3;
                }
                break;
            case 92:
                {
                alt24=4;
                }
                break;
            case 93:
                {
                alt24=5;
                }
                break;
            case 94:
                {
                alt24=6;
                }
                break;
            case 95:
                {
                alt24=7;
                }
                break;
            case 96:
                {
                alt24=8;
                }
                break;
            case 97:
                {
                alt24=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // InternalFiacre.g:4437:2: ( ( rule__UnaryExpression__Group_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:4437:2: ( ( rule__UnaryExpression__Group_0_0_0__0 ) )
                    // InternalFiacre.g:4438:3: ( rule__UnaryExpression__Group_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_0()); 
                    }
                    // InternalFiacre.g:4439:3: ( rule__UnaryExpression__Group_0_0_0__0 )
                    // InternalFiacre.g:4439:4: rule__UnaryExpression__Group_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4443:2: ( ( rule__UnaryExpression__Group_0_0_1__0 ) )
                    {
                    // InternalFiacre.g:4443:2: ( ( rule__UnaryExpression__Group_0_0_1__0 ) )
                    // InternalFiacre.g:4444:3: ( rule__UnaryExpression__Group_0_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_1()); 
                    }
                    // InternalFiacre.g:4445:3: ( rule__UnaryExpression__Group_0_0_1__0 )
                    // InternalFiacre.g:4445:4: rule__UnaryExpression__Group_0_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4449:2: ( ( rule__UnaryExpression__Group_0_0_2__0 ) )
                    {
                    // InternalFiacre.g:4449:2: ( ( rule__UnaryExpression__Group_0_0_2__0 ) )
                    // InternalFiacre.g:4450:3: ( rule__UnaryExpression__Group_0_0_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_2()); 
                    }
                    // InternalFiacre.g:4451:3: ( rule__UnaryExpression__Group_0_0_2__0 )
                    // InternalFiacre.g:4451:4: rule__UnaryExpression__Group_0_0_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4455:2: ( ( rule__UnaryExpression__Group_0_0_3__0 ) )
                    {
                    // InternalFiacre.g:4455:2: ( ( rule__UnaryExpression__Group_0_0_3__0 ) )
                    // InternalFiacre.g:4456:3: ( rule__UnaryExpression__Group_0_0_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_3()); 
                    }
                    // InternalFiacre.g:4457:3: ( rule__UnaryExpression__Group_0_0_3__0 )
                    // InternalFiacre.g:4457:4: rule__UnaryExpression__Group_0_0_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4461:2: ( ( rule__UnaryExpression__Group_0_0_4__0 ) )
                    {
                    // InternalFiacre.g:4461:2: ( ( rule__UnaryExpression__Group_0_0_4__0 ) )
                    // InternalFiacre.g:4462:3: ( rule__UnaryExpression__Group_0_0_4__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_4()); 
                    }
                    // InternalFiacre.g:4463:3: ( rule__UnaryExpression__Group_0_0_4__0 )
                    // InternalFiacre.g:4463:4: rule__UnaryExpression__Group_0_0_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_4__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4467:2: ( ( rule__UnaryExpression__Group_0_0_5__0 ) )
                    {
                    // InternalFiacre.g:4467:2: ( ( rule__UnaryExpression__Group_0_0_5__0 ) )
                    // InternalFiacre.g:4468:3: ( rule__UnaryExpression__Group_0_0_5__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_5()); 
                    }
                    // InternalFiacre.g:4469:3: ( rule__UnaryExpression__Group_0_0_5__0 )
                    // InternalFiacre.g:4469:4: rule__UnaryExpression__Group_0_0_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_5__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_5()); 
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalFiacre.g:4473:2: ( ( rule__UnaryExpression__Group_0_0_6__0 ) )
                    {
                    // InternalFiacre.g:4473:2: ( ( rule__UnaryExpression__Group_0_0_6__0 ) )
                    // InternalFiacre.g:4474:3: ( rule__UnaryExpression__Group_0_0_6__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_6()); 
                    }
                    // InternalFiacre.g:4475:3: ( rule__UnaryExpression__Group_0_0_6__0 )
                    // InternalFiacre.g:4475:4: rule__UnaryExpression__Group_0_0_6__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_6__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_6()); 
                    }

                    }


                    }
                    break;
                case 8 :
                    // InternalFiacre.g:4479:2: ( ( rule__UnaryExpression__Group_0_0_7__0 ) )
                    {
                    // InternalFiacre.g:4479:2: ( ( rule__UnaryExpression__Group_0_0_7__0 ) )
                    // InternalFiacre.g:4480:3: ( rule__UnaryExpression__Group_0_0_7__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_7()); 
                    }
                    // InternalFiacre.g:4481:3: ( rule__UnaryExpression__Group_0_0_7__0 )
                    // InternalFiacre.g:4481:4: rule__UnaryExpression__Group_0_0_7__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_7__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_7()); 
                    }

                    }


                    }
                    break;
                case 9 :
                    // InternalFiacre.g:4485:2: ( ( rule__UnaryExpression__Group_0_0_8__0 ) )
                    {
                    // InternalFiacre.g:4485:2: ( ( rule__UnaryExpression__Group_0_0_8__0 ) )
                    // InternalFiacre.g:4486:3: ( rule__UnaryExpression__Group_0_0_8__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_8()); 
                    }
                    // InternalFiacre.g:4487:3: ( rule__UnaryExpression__Group_0_0_8__0 )
                    // InternalFiacre.g:4487:4: rule__UnaryExpression__Group_0_0_8__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnaryExpression__Group_0_0_8__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUnaryExpressionAccess().getGroup_0_0_8()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Alternatives_0_0"


    // $ANTLR start "rule__AtomicExpression__Alternatives"
    // InternalFiacre.g:4495:1: rule__AtomicExpression__Alternatives : ( ( ruleIdentifierExpression ) | ( ruleReferenceExpression ) | ( ruleLiteralExpression ) | ( ruleRecordExpression ) | ( ruleArrayExpression ) | ( ruleQueueExpression ) | ( ruleEnqueueExpression ) | ( ruleAppendExpression ) | ( ( rule__AtomicExpression__Group_8__0 ) ) );
    public final void rule__AtomicExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4499:1: ( ( ruleIdentifierExpression ) | ( ruleReferenceExpression ) | ( ruleLiteralExpression ) | ( ruleRecordExpression ) | ( ruleArrayExpression ) | ( ruleQueueExpression ) | ( ruleEnqueueExpression ) | ( ruleAppendExpression ) | ( ( rule__AtomicExpression__Group_8__0 ) ) )
            int alt25=9;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt25=1;
                }
                break;
            case 99:
                {
                alt25=2;
                }
                break;
            case RULE_INT:
            case 106:
            case 107:
                {
                alt25=3;
                }
                break;
            case 100:
                {
                alt25=4;
                }
                break;
            case 42:
                {
                alt25=5;
                }
                break;
            case 102:
                {
                alt25=6;
                }
                break;
            case 104:
                {
                alt25=7;
                }
                break;
            case 105:
                {
                alt25=8;
                }
                break;
            case 22:
                {
                alt25=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }

            switch (alt25) {
                case 1 :
                    // InternalFiacre.g:4500:2: ( ruleIdentifierExpression )
                    {
                    // InternalFiacre.g:4500:2: ( ruleIdentifierExpression )
                    // InternalFiacre.g:4501:3: ruleIdentifierExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getIdentifierExpressionParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleIdentifierExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getIdentifierExpressionParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4506:2: ( ruleReferenceExpression )
                    {
                    // InternalFiacre.g:4506:2: ( ruleReferenceExpression )
                    // InternalFiacre.g:4507:3: ruleReferenceExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getReferenceExpressionParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleReferenceExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getReferenceExpressionParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4512:2: ( ruleLiteralExpression )
                    {
                    // InternalFiacre.g:4512:2: ( ruleLiteralExpression )
                    // InternalFiacre.g:4513:3: ruleLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getLiteralExpressionParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleLiteralExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getLiteralExpressionParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4518:2: ( ruleRecordExpression )
                    {
                    // InternalFiacre.g:4518:2: ( ruleRecordExpression )
                    // InternalFiacre.g:4519:3: ruleRecordExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getRecordExpressionParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleRecordExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getRecordExpressionParserRuleCall_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4524:2: ( ruleArrayExpression )
                    {
                    // InternalFiacre.g:4524:2: ( ruleArrayExpression )
                    // InternalFiacre.g:4525:3: ruleArrayExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getArrayExpressionParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleArrayExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getArrayExpressionParserRuleCall_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4530:2: ( ruleQueueExpression )
                    {
                    // InternalFiacre.g:4530:2: ( ruleQueueExpression )
                    // InternalFiacre.g:4531:3: ruleQueueExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getQueueExpressionParserRuleCall_5()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleQueueExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getQueueExpressionParserRuleCall_5()); 
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalFiacre.g:4536:2: ( ruleEnqueueExpression )
                    {
                    // InternalFiacre.g:4536:2: ( ruleEnqueueExpression )
                    // InternalFiacre.g:4537:3: ruleEnqueueExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getEnqueueExpressionParserRuleCall_6()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleEnqueueExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getEnqueueExpressionParserRuleCall_6()); 
                    }

                    }


                    }
                    break;
                case 8 :
                    // InternalFiacre.g:4542:2: ( ruleAppendExpression )
                    {
                    // InternalFiacre.g:4542:2: ( ruleAppendExpression )
                    // InternalFiacre.g:4543:3: ruleAppendExpression
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getAppendExpressionParserRuleCall_7()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAppendExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getAppendExpressionParserRuleCall_7()); 
                    }

                    }


                    }
                    break;
                case 9 :
                    // InternalFiacre.g:4548:2: ( ( rule__AtomicExpression__Group_8__0 ) )
                    {
                    // InternalFiacre.g:4548:2: ( ( rule__AtomicExpression__Group_8__0 ) )
                    // InternalFiacre.g:4549:3: ( rule__AtomicExpression__Group_8__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicExpressionAccess().getGroup_8()); 
                    }
                    // InternalFiacre.g:4550:3: ( rule__AtomicExpression__Group_8__0 )
                    // InternalFiacre.g:4550:4: rule__AtomicExpression__Group_8__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AtomicExpression__Group_8__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicExpressionAccess().getGroup_8()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Alternatives"


    // $ANTLR start "rule__IdentifierExpression__Alternatives"
    // InternalFiacre.g:4558:1: rule__IdentifierExpression__Alternatives : ( ( ( rule__IdentifierExpression__Group_0__0 ) ) | ( ( rule__IdentifierExpression__Group_1__0 ) ) );
    public final void rule__IdentifierExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4562:1: ( ( ( rule__IdentifierExpression__Group_0__0 ) ) | ( ( rule__IdentifierExpression__Group_1__0 ) ) )
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==RULE_ID) ) {
                int LA26_1 = input.LA(2);

                if ( (synpred75_InternalFiacre()) ) {
                    alt26=1;
                }
                else if ( (true) ) {
                    alt26=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 26, 1, input);

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

                throw nvae;
            }
            switch (alt26) {
                case 1 :
                    // InternalFiacre.g:4563:2: ( ( rule__IdentifierExpression__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4563:2: ( ( rule__IdentifierExpression__Group_0__0 ) )
                    // InternalFiacre.g:4564:3: ( rule__IdentifierExpression__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierExpressionAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4565:3: ( rule__IdentifierExpression__Group_0__0 )
                    // InternalFiacre.g:4565:4: rule__IdentifierExpression__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierExpression__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierExpressionAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4569:2: ( ( rule__IdentifierExpression__Group_1__0 ) )
                    {
                    // InternalFiacre.g:4569:2: ( ( rule__IdentifierExpression__Group_1__0 ) )
                    // InternalFiacre.g:4570:3: ( rule__IdentifierExpression__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierExpressionAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:4571:3: ( rule__IdentifierExpression__Group_1__0 )
                    // InternalFiacre.g:4571:4: rule__IdentifierExpression__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierExpression__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierExpressionAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Alternatives"


    // $ANTLR start "rule__IdentifierExpression__Alternatives_1_1"
    // InternalFiacre.g:4579:1: rule__IdentifierExpression__Alternatives_1_1 : ( ( ( rule__IdentifierExpression__Group_1_1_0__0 ) ) | ( ( rule__IdentifierExpression__Group_1_1_1__0 ) ) );
    public final void rule__IdentifierExpression__Alternatives_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4583:1: ( ( ( rule__IdentifierExpression__Group_1_1_0__0 ) ) | ( ( rule__IdentifierExpression__Group_1_1_1__0 ) ) )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==42) ) {
                alt27=1;
            }
            else if ( (LA27_0==61) ) {
                alt27=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // InternalFiacre.g:4584:2: ( ( rule__IdentifierExpression__Group_1_1_0__0 ) )
                    {
                    // InternalFiacre.g:4584:2: ( ( rule__IdentifierExpression__Group_1_1_0__0 ) )
                    // InternalFiacre.g:4585:3: ( rule__IdentifierExpression__Group_1_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_0()); 
                    }
                    // InternalFiacre.g:4586:3: ( rule__IdentifierExpression__Group_1_1_0__0 )
                    // InternalFiacre.g:4586:4: rule__IdentifierExpression__Group_1_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierExpression__Group_1_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4590:2: ( ( rule__IdentifierExpression__Group_1_1_1__0 ) )
                    {
                    // InternalFiacre.g:4590:2: ( ( rule__IdentifierExpression__Group_1_1_1__0 ) )
                    // InternalFiacre.g:4591:3: ( rule__IdentifierExpression__Group_1_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_1()); 
                    }
                    // InternalFiacre.g:4592:3: ( rule__IdentifierExpression__Group_1_1_1__0 )
                    // InternalFiacre.g:4592:4: rule__IdentifierExpression__Group_1_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierExpression__Group_1_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Alternatives_1_1"


    // $ANTLR start "rule__LiteralExpression__Alternatives"
    // InternalFiacre.g:4600:1: rule__LiteralExpression__Alternatives : ( ( ruleBooleanLiteral ) | ( ruleNaturalLiteral ) );
    public final void rule__LiteralExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4604:1: ( ( ruleBooleanLiteral ) | ( ruleNaturalLiteral ) )
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( ((LA28_0>=106 && LA28_0<=107)) ) {
                alt28=1;
            }
            else if ( (LA28_0==RULE_INT) ) {
                alt28=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 28, 0, input);

                throw nvae;
            }
            switch (alt28) {
                case 1 :
                    // InternalFiacre.g:4605:2: ( ruleBooleanLiteral )
                    {
                    // InternalFiacre.g:4605:2: ( ruleBooleanLiteral )
                    // InternalFiacre.g:4606:3: ruleBooleanLiteral
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLiteralExpressionAccess().getBooleanLiteralParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleBooleanLiteral();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLiteralExpressionAccess().getBooleanLiteralParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4611:2: ( ruleNaturalLiteral )
                    {
                    // InternalFiacre.g:4611:2: ( ruleNaturalLiteral )
                    // InternalFiacre.g:4612:3: ruleNaturalLiteral
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLiteralExpressionAccess().getNaturalLiteralParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNaturalLiteral();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLiteralExpressionAccess().getNaturalLiteralParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LiteralExpression__Alternatives"


    // $ANTLR start "rule__BooleanLiteral__Alternatives"
    // InternalFiacre.g:4621:1: rule__BooleanLiteral__Alternatives : ( ( ( rule__BooleanLiteral__Group_0__0 ) ) | ( ( rule__BooleanLiteral__Group_1__0 ) ) );
    public final void rule__BooleanLiteral__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4625:1: ( ( ( rule__BooleanLiteral__Group_0__0 ) ) | ( ( rule__BooleanLiteral__Group_1__0 ) ) )
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==106) ) {
                alt29=1;
            }
            else if ( (LA29_0==107) ) {
                alt29=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 29, 0, input);

                throw nvae;
            }
            switch (alt29) {
                case 1 :
                    // InternalFiacre.g:4626:2: ( ( rule__BooleanLiteral__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4626:2: ( ( rule__BooleanLiteral__Group_0__0 ) )
                    // InternalFiacre.g:4627:3: ( rule__BooleanLiteral__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBooleanLiteralAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4628:3: ( rule__BooleanLiteral__Group_0__0 )
                    // InternalFiacre.g:4628:4: rule__BooleanLiteral__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__BooleanLiteral__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBooleanLiteralAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4632:2: ( ( rule__BooleanLiteral__Group_1__0 ) )
                    {
                    // InternalFiacre.g:4632:2: ( ( rule__BooleanLiteral__Group_1__0 ) )
                    // InternalFiacre.g:4633:3: ( rule__BooleanLiteral__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getBooleanLiteralAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:4634:3: ( rule__BooleanLiteral__Group_1__0 )
                    // InternalFiacre.g:4634:4: rule__BooleanLiteral__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__BooleanLiteral__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getBooleanLiteralAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Alternatives"


    // $ANTLR start "rule__LowerBound__Alternatives"
    // InternalFiacre.g:4642:1: rule__LowerBound__Alternatives : ( ( ruleNaturalLowerBound ) | ( ruleDecimalLowerBound ) | ( ruleVariableLowerBound ) );
    public final void rule__LowerBound__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4646:1: ( ( ruleNaturalLowerBound ) | ( ruleDecimalLowerBound ) | ( ruleVariableLowerBound ) )
            int alt30=3;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==42) ) {
                switch ( input.LA(2) ) {
                case RULE_ID:
                    {
                    alt30=3;
                    }
                    break;
                case RULE_INT:
                    {
                    alt30=1;
                    }
                    break;
                case RULE_FLT:
                    {
                    alt30=2;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 30, 1, input);

                    throw nvae;
                }

            }
            else if ( (LA30_0==43) ) {
                switch ( input.LA(2) ) {
                case RULE_FLT:
                    {
                    alt30=2;
                    }
                    break;
                case RULE_ID:
                    {
                    alt30=3;
                    }
                    break;
                case RULE_INT:
                    {
                    alt30=1;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 30, 2, input);

                    throw nvae;
                }

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

                throw nvae;
            }
            switch (alt30) {
                case 1 :
                    // InternalFiacre.g:4647:2: ( ruleNaturalLowerBound )
                    {
                    // InternalFiacre.g:4647:2: ( ruleNaturalLowerBound )
                    // InternalFiacre.g:4648:3: ruleNaturalLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLowerBoundAccess().getNaturalLowerBoundParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNaturalLowerBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLowerBoundAccess().getNaturalLowerBoundParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4653:2: ( ruleDecimalLowerBound )
                    {
                    // InternalFiacre.g:4653:2: ( ruleDecimalLowerBound )
                    // InternalFiacre.g:4654:3: ruleDecimalLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLowerBoundAccess().getDecimalLowerBoundParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleDecimalLowerBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLowerBoundAccess().getDecimalLowerBoundParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4659:2: ( ruleVariableLowerBound )
                    {
                    // InternalFiacre.g:4659:2: ( ruleVariableLowerBound )
                    // InternalFiacre.g:4660:3: ruleVariableLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLowerBoundAccess().getVariableLowerBoundParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleVariableLowerBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLowerBoundAccess().getVariableLowerBoundParserRuleCall_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LowerBound__Alternatives"


    // $ANTLR start "rule__UpperBound__Alternatives"
    // InternalFiacre.g:4669:1: rule__UpperBound__Alternatives : ( ( ruleNaturalUpperBound ) | ( ruleDecimalUpperBound ) | ( ruleVariableUpperBound ) | ( ruleInfiniteUpperBound ) );
    public final void rule__UpperBound__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4673:1: ( ( ruleNaturalUpperBound ) | ( ruleDecimalUpperBound ) | ( ruleVariableUpperBound ) | ( ruleInfiniteUpperBound ) )
            int alt31=4;
            switch ( input.LA(1) ) {
            case RULE_INT:
                {
                alt31=1;
                }
                break;
            case RULE_FLT:
                {
                alt31=2;
                }
                break;
            case RULE_ID:
                {
                alt31=3;
                }
                break;
            case 108:
                {
                alt31=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }

            switch (alt31) {
                case 1 :
                    // InternalFiacre.g:4674:2: ( ruleNaturalUpperBound )
                    {
                    // InternalFiacre.g:4674:2: ( ruleNaturalUpperBound )
                    // InternalFiacre.g:4675:3: ruleNaturalUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUpperBoundAccess().getNaturalUpperBoundParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNaturalUpperBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUpperBoundAccess().getNaturalUpperBoundParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4680:2: ( ruleDecimalUpperBound )
                    {
                    // InternalFiacre.g:4680:2: ( ruleDecimalUpperBound )
                    // InternalFiacre.g:4681:3: ruleDecimalUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUpperBoundAccess().getDecimalUpperBoundParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleDecimalUpperBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUpperBoundAccess().getDecimalUpperBoundParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4686:2: ( ruleVariableUpperBound )
                    {
                    // InternalFiacre.g:4686:2: ( ruleVariableUpperBound )
                    // InternalFiacre.g:4687:3: ruleVariableUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUpperBoundAccess().getVariableUpperBoundParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleVariableUpperBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUpperBoundAccess().getVariableUpperBoundParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4692:2: ( ruleInfiniteUpperBound )
                    {
                    // InternalFiacre.g:4692:2: ( ruleInfiniteUpperBound )
                    // InternalFiacre.g:4693:3: ruleInfiniteUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getUpperBoundAccess().getInfiniteUpperBoundParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleInfiniteUpperBound();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getUpperBoundAccess().getInfiniteUpperBoundParserRuleCall_3()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UpperBound__Alternatives"


    // $ANTLR start "rule__NaturalLowerBound__Alternatives_0"
    // InternalFiacre.g:4702:1: rule__NaturalLowerBound__Alternatives_0 : ( ( ( rule__NaturalLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__NaturalLowerBound__RightAssignment_0_1 ) ) );
    public final void rule__NaturalLowerBound__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4706:1: ( ( ( rule__NaturalLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__NaturalLowerBound__RightAssignment_0_1 ) ) )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==42) ) {
                alt32=1;
            }
            else if ( (LA32_0==43) ) {
                alt32=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // InternalFiacre.g:4707:2: ( ( rule__NaturalLowerBound__LeftAssignment_0_0 ) )
                    {
                    // InternalFiacre.g:4707:2: ( ( rule__NaturalLowerBound__LeftAssignment_0_0 ) )
                    // InternalFiacre.g:4708:3: ( rule__NaturalLowerBound__LeftAssignment_0_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getNaturalLowerBoundAccess().getLeftAssignment_0_0()); 
                    }
                    // InternalFiacre.g:4709:3: ( rule__NaturalLowerBound__LeftAssignment_0_0 )
                    // InternalFiacre.g:4709:4: rule__NaturalLowerBound__LeftAssignment_0_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__NaturalLowerBound__LeftAssignment_0_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getNaturalLowerBoundAccess().getLeftAssignment_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4713:2: ( ( rule__NaturalLowerBound__RightAssignment_0_1 ) )
                    {
                    // InternalFiacre.g:4713:2: ( ( rule__NaturalLowerBound__RightAssignment_0_1 ) )
                    // InternalFiacre.g:4714:3: ( rule__NaturalLowerBound__RightAssignment_0_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getNaturalLowerBoundAccess().getRightAssignment_0_1()); 
                    }
                    // InternalFiacre.g:4715:3: ( rule__NaturalLowerBound__RightAssignment_0_1 )
                    // InternalFiacre.g:4715:4: rule__NaturalLowerBound__RightAssignment_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__NaturalLowerBound__RightAssignment_0_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getNaturalLowerBoundAccess().getRightAssignment_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__Alternatives_0"


    // $ANTLR start "rule__NaturalUpperBound__Alternatives_1"
    // InternalFiacre.g:4723:1: rule__NaturalUpperBound__Alternatives_1 : ( ( ( rule__NaturalUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__NaturalUpperBound__RightAssignment_1_1 ) ) );
    public final void rule__NaturalUpperBound__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4727:1: ( ( ( rule__NaturalUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__NaturalUpperBound__RightAssignment_1_1 ) ) )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==42) ) {
                alt33=1;
            }
            else if ( (LA33_0==43) ) {
                alt33=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // InternalFiacre.g:4728:2: ( ( rule__NaturalUpperBound__LeftAssignment_1_0 ) )
                    {
                    // InternalFiacre.g:4728:2: ( ( rule__NaturalUpperBound__LeftAssignment_1_0 ) )
                    // InternalFiacre.g:4729:3: ( rule__NaturalUpperBound__LeftAssignment_1_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getNaturalUpperBoundAccess().getLeftAssignment_1_0()); 
                    }
                    // InternalFiacre.g:4730:3: ( rule__NaturalUpperBound__LeftAssignment_1_0 )
                    // InternalFiacre.g:4730:4: rule__NaturalUpperBound__LeftAssignment_1_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__NaturalUpperBound__LeftAssignment_1_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getNaturalUpperBoundAccess().getLeftAssignment_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4734:2: ( ( rule__NaturalUpperBound__RightAssignment_1_1 ) )
                    {
                    // InternalFiacre.g:4734:2: ( ( rule__NaturalUpperBound__RightAssignment_1_1 ) )
                    // InternalFiacre.g:4735:3: ( rule__NaturalUpperBound__RightAssignment_1_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getNaturalUpperBoundAccess().getRightAssignment_1_1()); 
                    }
                    // InternalFiacre.g:4736:3: ( rule__NaturalUpperBound__RightAssignment_1_1 )
                    // InternalFiacre.g:4736:4: rule__NaturalUpperBound__RightAssignment_1_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__NaturalUpperBound__RightAssignment_1_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getNaturalUpperBoundAccess().getRightAssignment_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__Alternatives_1"


    // $ANTLR start "rule__DecimalLowerBound__Alternatives_0"
    // InternalFiacre.g:4744:1: rule__DecimalLowerBound__Alternatives_0 : ( ( ( rule__DecimalLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__DecimalLowerBound__RightAssignment_0_1 ) ) );
    public final void rule__DecimalLowerBound__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4748:1: ( ( ( rule__DecimalLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__DecimalLowerBound__RightAssignment_0_1 ) ) )
            int alt34=2;
            int LA34_0 = input.LA(1);

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

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // InternalFiacre.g:4749:2: ( ( rule__DecimalLowerBound__LeftAssignment_0_0 ) )
                    {
                    // InternalFiacre.g:4749:2: ( ( rule__DecimalLowerBound__LeftAssignment_0_0 ) )
                    // InternalFiacre.g:4750:3: ( rule__DecimalLowerBound__LeftAssignment_0_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDecimalLowerBoundAccess().getLeftAssignment_0_0()); 
                    }
                    // InternalFiacre.g:4751:3: ( rule__DecimalLowerBound__LeftAssignment_0_0 )
                    // InternalFiacre.g:4751:4: rule__DecimalLowerBound__LeftAssignment_0_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__DecimalLowerBound__LeftAssignment_0_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDecimalLowerBoundAccess().getLeftAssignment_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4755:2: ( ( rule__DecimalLowerBound__RightAssignment_0_1 ) )
                    {
                    // InternalFiacre.g:4755:2: ( ( rule__DecimalLowerBound__RightAssignment_0_1 ) )
                    // InternalFiacre.g:4756:3: ( rule__DecimalLowerBound__RightAssignment_0_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDecimalLowerBoundAccess().getRightAssignment_0_1()); 
                    }
                    // InternalFiacre.g:4757:3: ( rule__DecimalLowerBound__RightAssignment_0_1 )
                    // InternalFiacre.g:4757:4: rule__DecimalLowerBound__RightAssignment_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__DecimalLowerBound__RightAssignment_0_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDecimalLowerBoundAccess().getRightAssignment_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__Alternatives_0"


    // $ANTLR start "rule__DecimalUpperBound__Alternatives_1"
    // InternalFiacre.g:4765:1: rule__DecimalUpperBound__Alternatives_1 : ( ( ( rule__DecimalUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__DecimalUpperBound__RightAssignment_1_1 ) ) );
    public final void rule__DecimalUpperBound__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4769:1: ( ( ( rule__DecimalUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__DecimalUpperBound__RightAssignment_1_1 ) ) )
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==42) ) {
                alt35=1;
            }
            else if ( (LA35_0==43) ) {
                alt35=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 35, 0, input);

                throw nvae;
            }
            switch (alt35) {
                case 1 :
                    // InternalFiacre.g:4770:2: ( ( rule__DecimalUpperBound__LeftAssignment_1_0 ) )
                    {
                    // InternalFiacre.g:4770:2: ( ( rule__DecimalUpperBound__LeftAssignment_1_0 ) )
                    // InternalFiacre.g:4771:3: ( rule__DecimalUpperBound__LeftAssignment_1_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDecimalUpperBoundAccess().getLeftAssignment_1_0()); 
                    }
                    // InternalFiacre.g:4772:3: ( rule__DecimalUpperBound__LeftAssignment_1_0 )
                    // InternalFiacre.g:4772:4: rule__DecimalUpperBound__LeftAssignment_1_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__DecimalUpperBound__LeftAssignment_1_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDecimalUpperBoundAccess().getLeftAssignment_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4776:2: ( ( rule__DecimalUpperBound__RightAssignment_1_1 ) )
                    {
                    // InternalFiacre.g:4776:2: ( ( rule__DecimalUpperBound__RightAssignment_1_1 ) )
                    // InternalFiacre.g:4777:3: ( rule__DecimalUpperBound__RightAssignment_1_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getDecimalUpperBoundAccess().getRightAssignment_1_1()); 
                    }
                    // InternalFiacre.g:4778:3: ( rule__DecimalUpperBound__RightAssignment_1_1 )
                    // InternalFiacre.g:4778:4: rule__DecimalUpperBound__RightAssignment_1_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__DecimalUpperBound__RightAssignment_1_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getDecimalUpperBoundAccess().getRightAssignment_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__Alternatives_1"


    // $ANTLR start "rule__VariableLowerBound__Alternatives_0"
    // InternalFiacre.g:4786:1: rule__VariableLowerBound__Alternatives_0 : ( ( ( rule__VariableLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__VariableLowerBound__RightAssignment_0_1 ) ) );
    public final void rule__VariableLowerBound__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4790:1: ( ( ( rule__VariableLowerBound__LeftAssignment_0_0 ) ) | ( ( rule__VariableLowerBound__RightAssignment_0_1 ) ) )
            int alt36=2;
            int LA36_0 = input.LA(1);

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

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // InternalFiacre.g:4791:2: ( ( rule__VariableLowerBound__LeftAssignment_0_0 ) )
                    {
                    // InternalFiacre.g:4791:2: ( ( rule__VariableLowerBound__LeftAssignment_0_0 ) )
                    // InternalFiacre.g:4792:3: ( rule__VariableLowerBound__LeftAssignment_0_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getVariableLowerBoundAccess().getLeftAssignment_0_0()); 
                    }
                    // InternalFiacre.g:4793:3: ( rule__VariableLowerBound__LeftAssignment_0_0 )
                    // InternalFiacre.g:4793:4: rule__VariableLowerBound__LeftAssignment_0_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__VariableLowerBound__LeftAssignment_0_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getVariableLowerBoundAccess().getLeftAssignment_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4797:2: ( ( rule__VariableLowerBound__RightAssignment_0_1 ) )
                    {
                    // InternalFiacre.g:4797:2: ( ( rule__VariableLowerBound__RightAssignment_0_1 ) )
                    // InternalFiacre.g:4798:3: ( rule__VariableLowerBound__RightAssignment_0_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getVariableLowerBoundAccess().getRightAssignment_0_1()); 
                    }
                    // InternalFiacre.g:4799:3: ( rule__VariableLowerBound__RightAssignment_0_1 )
                    // InternalFiacre.g:4799:4: rule__VariableLowerBound__RightAssignment_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__VariableLowerBound__RightAssignment_0_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getVariableLowerBoundAccess().getRightAssignment_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__Alternatives_0"


    // $ANTLR start "rule__VariableUpperBound__Alternatives_1"
    // InternalFiacre.g:4807:1: rule__VariableUpperBound__Alternatives_1 : ( ( ( rule__VariableUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__VariableUpperBound__RightAssignment_1_1 ) ) );
    public final void rule__VariableUpperBound__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4811:1: ( ( ( rule__VariableUpperBound__LeftAssignment_1_0 ) ) | ( ( rule__VariableUpperBound__RightAssignment_1_1 ) ) )
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==42) ) {
                alt37=1;
            }
            else if ( (LA37_0==43) ) {
                alt37=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 37, 0, input);

                throw nvae;
            }
            switch (alt37) {
                case 1 :
                    // InternalFiacre.g:4812:2: ( ( rule__VariableUpperBound__LeftAssignment_1_0 ) )
                    {
                    // InternalFiacre.g:4812:2: ( ( rule__VariableUpperBound__LeftAssignment_1_0 ) )
                    // InternalFiacre.g:4813:3: ( rule__VariableUpperBound__LeftAssignment_1_0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getVariableUpperBoundAccess().getLeftAssignment_1_0()); 
                    }
                    // InternalFiacre.g:4814:3: ( rule__VariableUpperBound__LeftAssignment_1_0 )
                    // InternalFiacre.g:4814:4: rule__VariableUpperBound__LeftAssignment_1_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__VariableUpperBound__LeftAssignment_1_0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getVariableUpperBoundAccess().getLeftAssignment_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4818:2: ( ( rule__VariableUpperBound__RightAssignment_1_1 ) )
                    {
                    // InternalFiacre.g:4818:2: ( ( rule__VariableUpperBound__RightAssignment_1_1 ) )
                    // InternalFiacre.g:4819:3: ( rule__VariableUpperBound__RightAssignment_1_1 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getVariableUpperBoundAccess().getRightAssignment_1_1()); 
                    }
                    // InternalFiacre.g:4820:3: ( rule__VariableUpperBound__RightAssignment_1_1 )
                    // InternalFiacre.g:4820:4: rule__VariableUpperBound__RightAssignment_1_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__VariableUpperBound__RightAssignment_1_1();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getVariableUpperBoundAccess().getRightAssignment_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__Alternatives_1"


    // $ANTLR start "rule__QuantifiedProperty__Alternatives"
    // InternalFiacre.g:4828:1: rule__QuantifiedProperty__Alternatives : ( ( ( rule__QuantifiedProperty__Group_0__0 ) ) | ( rulePropertyDisjunction ) );
    public final void rule__QuantifiedProperty__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4832:1: ( ( ( rule__QuantifiedProperty__Group_0__0 ) ) | ( rulePropertyDisjunction ) )
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( ((LA38_0>=77 && LA38_0<=78)) ) {
                alt38=1;
            }
            else if ( (LA38_0==RULE_ID||LA38_0==RULE_INT||LA38_0==22||LA38_0==91||(LA38_0>=113 && LA38_0<=117)||LA38_0==124||LA38_0==126||(LA38_0>=131 && LA38_0<=132)) ) {
                alt38=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }
            switch (alt38) {
                case 1 :
                    // InternalFiacre.g:4833:2: ( ( rule__QuantifiedProperty__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4833:2: ( ( rule__QuantifiedProperty__Group_0__0 ) )
                    // InternalFiacre.g:4834:3: ( rule__QuantifiedProperty__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedPropertyAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4835:3: ( rule__QuantifiedProperty__Group_0__0 )
                    // InternalFiacre.g:4835:4: rule__QuantifiedProperty__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedProperty__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedPropertyAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4839:2: ( rulePropertyDisjunction )
                    {
                    // InternalFiacre.g:4839:2: ( rulePropertyDisjunction )
                    // InternalFiacre.g:4840:3: rulePropertyDisjunction
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedPropertyAccess().getPropertyDisjunctionParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePropertyDisjunction();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedPropertyAccess().getPropertyDisjunctionParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Alternatives"


    // $ANTLR start "rule__QuantifiedProperty__Alternatives_0_0"
    // InternalFiacre.g:4849:1: rule__QuantifiedProperty__Alternatives_0_0 : ( ( ( rule__QuantifiedProperty__Group_0_0_0__0 ) ) | ( ( rule__QuantifiedProperty__Group_0_0_1__0 ) ) );
    public final void rule__QuantifiedProperty__Alternatives_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4853:1: ( ( ( rule__QuantifiedProperty__Group_0_0_0__0 ) ) | ( ( rule__QuantifiedProperty__Group_0_0_1__0 ) ) )
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==77) ) {
                alt39=1;
            }
            else if ( (LA39_0==78) ) {
                alt39=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 39, 0, input);

                throw nvae;
            }
            switch (alt39) {
                case 1 :
                    // InternalFiacre.g:4854:2: ( ( rule__QuantifiedProperty__Group_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:4854:2: ( ( rule__QuantifiedProperty__Group_0_0_0__0 ) )
                    // InternalFiacre.g:4855:3: ( rule__QuantifiedProperty__Group_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedPropertyAccess().getGroup_0_0_0()); 
                    }
                    // InternalFiacre.g:4856:3: ( rule__QuantifiedProperty__Group_0_0_0__0 )
                    // InternalFiacre.g:4856:4: rule__QuantifiedProperty__Group_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedProperty__Group_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedPropertyAccess().getGroup_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4860:2: ( ( rule__QuantifiedProperty__Group_0_0_1__0 ) )
                    {
                    // InternalFiacre.g:4860:2: ( ( rule__QuantifiedProperty__Group_0_0_1__0 ) )
                    // InternalFiacre.g:4861:3: ( rule__QuantifiedProperty__Group_0_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getQuantifiedPropertyAccess().getGroup_0_0_1()); 
                    }
                    // InternalFiacre.g:4862:3: ( rule__QuantifiedProperty__Group_0_0_1__0 )
                    // InternalFiacre.g:4862:4: rule__QuantifiedProperty__Group_0_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedProperty__Group_0_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getQuantifiedPropertyAccess().getGroup_0_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Alternatives_0_0"


    // $ANTLR start "rule__PropertyNegation__Alternatives"
    // InternalFiacre.g:4870:1: rule__PropertyNegation__Alternatives : ( ( ( rule__PropertyNegation__Group_0__0 ) ) | ( ruleAtomicProperty ) );
    public final void rule__PropertyNegation__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4874:1: ( ( ( rule__PropertyNegation__Group_0__0 ) ) | ( ruleAtomicProperty ) )
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==91) ) {
                alt40=1;
            }
            else if ( (LA40_0==RULE_ID||LA40_0==RULE_INT||LA40_0==22||(LA40_0>=113 && LA40_0<=117)||LA40_0==124||LA40_0==126||(LA40_0>=131 && LA40_0<=132)) ) {
                alt40=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }
            switch (alt40) {
                case 1 :
                    // InternalFiacre.g:4875:2: ( ( rule__PropertyNegation__Group_0__0 ) )
                    {
                    // InternalFiacre.g:4875:2: ( ( rule__PropertyNegation__Group_0__0 ) )
                    // InternalFiacre.g:4876:3: ( rule__PropertyNegation__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPropertyNegationAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:4877:3: ( rule__PropertyNegation__Group_0__0 )
                    // InternalFiacre.g:4877:4: rule__PropertyNegation__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PropertyNegation__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPropertyNegationAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4881:2: ( ruleAtomicProperty )
                    {
                    // InternalFiacre.g:4881:2: ( ruleAtomicProperty )
                    // InternalFiacre.g:4882:3: ruleAtomicProperty
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPropertyNegationAccess().getAtomicPropertyParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAtomicProperty();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPropertyNegationAccess().getAtomicPropertyParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Alternatives"


    // $ANTLR start "rule__AtomicProperty__Alternatives"
    // InternalFiacre.g:4891:1: rule__AtomicProperty__Alternatives : ( ( rulePatternProperty ) | ( ( rule__AtomicProperty__Group_1__0 ) ) );
    public final void rule__AtomicProperty__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4895:1: ( ( rulePatternProperty ) | ( ( rule__AtomicProperty__Group_1__0 ) ) )
            int alt41=2;
            alt41 = dfa41.predict(input);
            switch (alt41) {
                case 1 :
                    // InternalFiacre.g:4896:2: ( rulePatternProperty )
                    {
                    // InternalFiacre.g:4896:2: ( rulePatternProperty )
                    // InternalFiacre.g:4897:3: rulePatternProperty
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicPropertyAccess().getPatternPropertyParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePatternProperty();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicPropertyAccess().getPatternPropertyParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4902:2: ( ( rule__AtomicProperty__Group_1__0 ) )
                    {
                    // InternalFiacre.g:4902:2: ( ( rule__AtomicProperty__Group_1__0 ) )
                    // InternalFiacre.g:4903:3: ( rule__AtomicProperty__Group_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicPropertyAccess().getGroup_1()); 
                    }
                    // InternalFiacre.g:4904:3: ( rule__AtomicProperty__Group_1__0 )
                    // InternalFiacre.g:4904:4: rule__AtomicProperty__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AtomicProperty__Group_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicPropertyAccess().getGroup_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Alternatives"


    // $ANTLR start "rule__PatternProperty__Alternatives"
    // InternalFiacre.g:4912:1: rule__PatternProperty__Alternatives : ( ( ruleLTLPattern ) | ( ruleDeadlockFreePattern ) | ( ruleInfinitelyOftenPattern ) | ( ruleMortalPattern ) | ( rulePresencePattern ) | ( ruleAbsencePattern ) | ( ruleAlwaysPattern ) | ( ruleSequencePattern ) );
    public final void rule__PatternProperty__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4916:1: ( ( ruleLTLPattern ) | ( ruleDeadlockFreePattern ) | ( ruleInfinitelyOftenPattern ) | ( ruleMortalPattern ) | ( rulePresencePattern ) | ( ruleAbsencePattern ) | ( ruleAlwaysPattern ) | ( ruleSequencePattern ) )
            int alt42=8;
            switch ( input.LA(1) ) {
            case 113:
                {
                alt42=1;
                }
                break;
            case 114:
                {
                alt42=2;
                }
                break;
            case 115:
                {
                alt42=3;
                }
                break;
            case 116:
                {
                alt42=4;
                }
                break;
            case 117:
                {
                alt42=5;
                }
                break;
            case 124:
                {
                alt42=6;
                }
                break;
            case 126:
                {
                alt42=7;
                }
                break;
            case RULE_ID:
            case RULE_INT:
            case 22:
            case 131:
            case 132:
                {
                alt42=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 42, 0, input);

                throw nvae;
            }

            switch (alt42) {
                case 1 :
                    // InternalFiacre.g:4917:2: ( ruleLTLPattern )
                    {
                    // InternalFiacre.g:4917:2: ( ruleLTLPattern )
                    // InternalFiacre.g:4918:3: ruleLTLPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getLTLPatternParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleLTLPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getLTLPatternParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4923:2: ( ruleDeadlockFreePattern )
                    {
                    // InternalFiacre.g:4923:2: ( ruleDeadlockFreePattern )
                    // InternalFiacre.g:4924:3: ruleDeadlockFreePattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getDeadlockFreePatternParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleDeadlockFreePattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getDeadlockFreePatternParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4929:2: ( ruleInfinitelyOftenPattern )
                    {
                    // InternalFiacre.g:4929:2: ( ruleInfinitelyOftenPattern )
                    // InternalFiacre.g:4930:3: ruleInfinitelyOftenPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getInfinitelyOftenPatternParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleInfinitelyOftenPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getInfinitelyOftenPatternParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4935:2: ( ruleMortalPattern )
                    {
                    // InternalFiacre.g:4935:2: ( ruleMortalPattern )
                    // InternalFiacre.g:4936:3: ruleMortalPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getMortalPatternParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleMortalPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getMortalPatternParserRuleCall_3()); 
                    }

                    }


                    }
                    break;
                case 5 :
                    // InternalFiacre.g:4941:2: ( rulePresencePattern )
                    {
                    // InternalFiacre.g:4941:2: ( rulePresencePattern )
                    // InternalFiacre.g:4942:3: rulePresencePattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getPresencePatternParserRuleCall_4()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePresencePattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getPresencePatternParserRuleCall_4()); 
                    }

                    }


                    }
                    break;
                case 6 :
                    // InternalFiacre.g:4947:2: ( ruleAbsencePattern )
                    {
                    // InternalFiacre.g:4947:2: ( ruleAbsencePattern )
                    // InternalFiacre.g:4948:3: ruleAbsencePattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getAbsencePatternParserRuleCall_5()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAbsencePattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getAbsencePatternParserRuleCall_5()); 
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalFiacre.g:4953:2: ( ruleAlwaysPattern )
                    {
                    // InternalFiacre.g:4953:2: ( ruleAlwaysPattern )
                    // InternalFiacre.g:4954:3: ruleAlwaysPattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getAlwaysPatternParserRuleCall_6()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAlwaysPattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getAlwaysPatternParserRuleCall_6()); 
                    }

                    }


                    }
                    break;
                case 8 :
                    // InternalFiacre.g:4959:2: ( ruleSequencePattern )
                    {
                    // InternalFiacre.g:4959:2: ( ruleSequencePattern )
                    // InternalFiacre.g:4960:3: ruleSequencePattern
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPatternPropertyAccess().getSequencePatternParserRuleCall_7()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleSequencePattern();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPatternPropertyAccess().getSequencePatternParserRuleCall_7()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternProperty__Alternatives"


    // $ANTLR start "rule__PresencePattern__Alternatives_2"
    // InternalFiacre.g:4969:1: rule__PresencePattern__Alternatives_2 : ( ( ( rule__PresencePattern__Group_2_0__0 ) ) | ( ( rule__PresencePattern__Group_2_1__0 ) ) | ( ( rule__PresencePattern__Group_2_2__0 ) ) | ( ( rule__PresencePattern__Group_2_3__0 ) ) );
    public final void rule__PresencePattern__Alternatives_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:4973:1: ( ( ( rule__PresencePattern__Group_2_0__0 ) ) | ( ( rule__PresencePattern__Group_2_1__0 ) ) | ( ( rule__PresencePattern__Group_2_2__0 ) ) | ( ( rule__PresencePattern__Group_2_3__0 ) ) )
            int alt43=4;
            switch ( input.LA(1) ) {
            case 118:
                {
                alt43=1;
                }
                break;
            case 119:
                {
                alt43=2;
                }
                break;
            case 122:
                {
                alt43=3;
                }
                break;
            case 123:
                {
                alt43=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }

            switch (alt43) {
                case 1 :
                    // InternalFiacre.g:4974:2: ( ( rule__PresencePattern__Group_2_0__0 ) )
                    {
                    // InternalFiacre.g:4974:2: ( ( rule__PresencePattern__Group_2_0__0 ) )
                    // InternalFiacre.g:4975:3: ( rule__PresencePattern__Group_2_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_0()); 
                    }
                    // InternalFiacre.g:4976:3: ( rule__PresencePattern__Group_2_0__0 )
                    // InternalFiacre.g:4976:4: rule__PresencePattern__Group_2_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:4980:2: ( ( rule__PresencePattern__Group_2_1__0 ) )
                    {
                    // InternalFiacre.g:4980:2: ( ( rule__PresencePattern__Group_2_1__0 ) )
                    // InternalFiacre.g:4981:3: ( rule__PresencePattern__Group_2_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_1()); 
                    }
                    // InternalFiacre.g:4982:3: ( rule__PresencePattern__Group_2_1__0 )
                    // InternalFiacre.g:4982:4: rule__PresencePattern__Group_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:4986:2: ( ( rule__PresencePattern__Group_2_2__0 ) )
                    {
                    // InternalFiacre.g:4986:2: ( ( rule__PresencePattern__Group_2_2__0 ) )
                    // InternalFiacre.g:4987:3: ( rule__PresencePattern__Group_2_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_2()); 
                    }
                    // InternalFiacre.g:4988:3: ( rule__PresencePattern__Group_2_2__0 )
                    // InternalFiacre.g:4988:4: rule__PresencePattern__Group_2_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:4992:2: ( ( rule__PresencePattern__Group_2_3__0 ) )
                    {
                    // InternalFiacre.g:4992:2: ( ( rule__PresencePattern__Group_2_3__0 ) )
                    // InternalFiacre.g:4993:3: ( rule__PresencePattern__Group_2_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_3()); 
                    }
                    // InternalFiacre.g:4994:3: ( rule__PresencePattern__Group_2_3__0 )
                    // InternalFiacre.g:4994:4: rule__PresencePattern__Group_2_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_3()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Alternatives_2"


    // $ANTLR start "rule__PresencePattern__Alternatives_2_1_1"
    // InternalFiacre.g:5002:1: rule__PresencePattern__Alternatives_2_1_1 : ( ( ( rule__PresencePattern__Group_2_1_1_0__0 ) ) | ( ( rule__PresencePattern__Group_2_1_1_1__0 ) ) );
    public final void rule__PresencePattern__Alternatives_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5006:1: ( ( ( rule__PresencePattern__Group_2_1_1_0__0 ) ) | ( ( rule__PresencePattern__Group_2_1_1_1__0 ) ) )
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==120) ) {
                alt44=1;
            }
            else if ( (LA44_0==121) ) {
                alt44=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }
            switch (alt44) {
                case 1 :
                    // InternalFiacre.g:5007:2: ( ( rule__PresencePattern__Group_2_1_1_0__0 ) )
                    {
                    // InternalFiacre.g:5007:2: ( ( rule__PresencePattern__Group_2_1_1_0__0 ) )
                    // InternalFiacre.g:5008:3: ( rule__PresencePattern__Group_2_1_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_1_1_0()); 
                    }
                    // InternalFiacre.g:5009:3: ( rule__PresencePattern__Group_2_1_1_0__0 )
                    // InternalFiacre.g:5009:4: rule__PresencePattern__Group_2_1_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_1_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_1_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5013:2: ( ( rule__PresencePattern__Group_2_1_1_1__0 ) )
                    {
                    // InternalFiacre.g:5013:2: ( ( rule__PresencePattern__Group_2_1_1_1__0 ) )
                    // InternalFiacre.g:5014:3: ( rule__PresencePattern__Group_2_1_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPresencePatternAccess().getGroup_2_1_1_1()); 
                    }
                    // InternalFiacre.g:5015:3: ( rule__PresencePattern__Group_2_1_1_1__0 )
                    // InternalFiacre.g:5015:4: rule__PresencePattern__Group_2_1_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_1_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPresencePatternAccess().getGroup_2_1_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Alternatives_2_1_1"


    // $ANTLR start "rule__AbsencePattern__Alternatives_2"
    // InternalFiacre.g:5023:1: rule__AbsencePattern__Alternatives_2 : ( ( ( rule__AbsencePattern__Group_2_0__0 ) ) | ( ( rule__AbsencePattern__Group_2_1__0 ) ) | ( ( rule__AbsencePattern__Group_2_2__0 ) ) );
    public final void rule__AbsencePattern__Alternatives_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5027:1: ( ( ( rule__AbsencePattern__Group_2_0__0 ) ) | ( ( rule__AbsencePattern__Group_2_1__0 ) ) | ( ( rule__AbsencePattern__Group_2_2__0 ) ) )
            int alt45=3;
            switch ( input.LA(1) ) {
            case 119:
                {
                alt45=1;
                }
                break;
            case 122:
                {
                alt45=2;
                }
                break;
            case 123:
                {
                alt45=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }

            switch (alt45) {
                case 1 :
                    // InternalFiacre.g:5028:2: ( ( rule__AbsencePattern__Group_2_0__0 ) )
                    {
                    // InternalFiacre.g:5028:2: ( ( rule__AbsencePattern__Group_2_0__0 ) )
                    // InternalFiacre.g:5029:3: ( rule__AbsencePattern__Group_2_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAbsencePatternAccess().getGroup_2_0()); 
                    }
                    // InternalFiacre.g:5030:3: ( rule__AbsencePattern__Group_2_0__0 )
                    // InternalFiacre.g:5030:4: rule__AbsencePattern__Group_2_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAbsencePatternAccess().getGroup_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5034:2: ( ( rule__AbsencePattern__Group_2_1__0 ) )
                    {
                    // InternalFiacre.g:5034:2: ( ( rule__AbsencePattern__Group_2_1__0 ) )
                    // InternalFiacre.g:5035:3: ( rule__AbsencePattern__Group_2_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAbsencePatternAccess().getGroup_2_1()); 
                    }
                    // InternalFiacre.g:5036:3: ( rule__AbsencePattern__Group_2_1__0 )
                    // InternalFiacre.g:5036:4: rule__AbsencePattern__Group_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAbsencePatternAccess().getGroup_2_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5040:2: ( ( rule__AbsencePattern__Group_2_2__0 ) )
                    {
                    // InternalFiacre.g:5040:2: ( ( rule__AbsencePattern__Group_2_2__0 ) )
                    // InternalFiacre.g:5041:3: ( rule__AbsencePattern__Group_2_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAbsencePatternAccess().getGroup_2_2()); 
                    }
                    // InternalFiacre.g:5042:3: ( rule__AbsencePattern__Group_2_2__0 )
                    // InternalFiacre.g:5042:4: rule__AbsencePattern__Group_2_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAbsencePatternAccess().getGroup_2_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Alternatives_2"


    // $ANTLR start "rule__AbsencePattern__Alternatives_2_0_1"
    // InternalFiacre.g:5050:1: rule__AbsencePattern__Alternatives_2_0_1 : ( ( ( rule__AbsencePattern__Group_2_0_1_0__0 ) ) | ( ( rule__AbsencePattern__Group_2_0_1_1__0 ) ) );
    public final void rule__AbsencePattern__Alternatives_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5054:1: ( ( ( rule__AbsencePattern__Group_2_0_1_0__0 ) ) | ( ( rule__AbsencePattern__Group_2_0_1_1__0 ) ) )
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==120) ) {
                alt46=1;
            }
            else if ( (LA46_0==121) ) {
                alt46=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }
            switch (alt46) {
                case 1 :
                    // InternalFiacre.g:5055:2: ( ( rule__AbsencePattern__Group_2_0_1_0__0 ) )
                    {
                    // InternalFiacre.g:5055:2: ( ( rule__AbsencePattern__Group_2_0_1_0__0 ) )
                    // InternalFiacre.g:5056:3: ( rule__AbsencePattern__Group_2_0_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAbsencePatternAccess().getGroup_2_0_1_0()); 
                    }
                    // InternalFiacre.g:5057:3: ( rule__AbsencePattern__Group_2_0_1_0__0 )
                    // InternalFiacre.g:5057:4: rule__AbsencePattern__Group_2_0_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_0_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAbsencePatternAccess().getGroup_2_0_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5061:2: ( ( rule__AbsencePattern__Group_2_0_1_1__0 ) )
                    {
                    // InternalFiacre.g:5061:2: ( ( rule__AbsencePattern__Group_2_0_1_1__0 ) )
                    // InternalFiacre.g:5062:3: ( rule__AbsencePattern__Group_2_0_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAbsencePatternAccess().getGroup_2_0_1_1()); 
                    }
                    // InternalFiacre.g:5063:3: ( rule__AbsencePattern__Group_2_0_1_1__0 )
                    // InternalFiacre.g:5063:4: rule__AbsencePattern__Group_2_0_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_0_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAbsencePatternAccess().getGroup_2_0_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Alternatives_2_0_1"


    // $ANTLR start "rule__AlwaysPattern__Alternatives_2"
    // InternalFiacre.g:5071:1: rule__AlwaysPattern__Alternatives_2 : ( ( ( rule__AlwaysPattern__Group_2_0__0 ) ) | ( ( rule__AlwaysPattern__Group_2_1__0 ) ) | ( ( rule__AlwaysPattern__Group_2_2__0 ) ) );
    public final void rule__AlwaysPattern__Alternatives_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5075:1: ( ( ( rule__AlwaysPattern__Group_2_0__0 ) ) | ( ( rule__AlwaysPattern__Group_2_1__0 ) ) | ( ( rule__AlwaysPattern__Group_2_2__0 ) ) )
            int alt47=3;
            switch ( input.LA(1) ) {
            case 122:
                {
                alt47=1;
                }
                break;
            case 119:
                {
                alt47=2;
                }
                break;
            case 123:
                {
                alt47=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 47, 0, input);

                throw nvae;
            }

            switch (alt47) {
                case 1 :
                    // InternalFiacre.g:5076:2: ( ( rule__AlwaysPattern__Group_2_0__0 ) )
                    {
                    // InternalFiacre.g:5076:2: ( ( rule__AlwaysPattern__Group_2_0__0 ) )
                    // InternalFiacre.g:5077:3: ( rule__AlwaysPattern__Group_2_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAlwaysPatternAccess().getGroup_2_0()); 
                    }
                    // InternalFiacre.g:5078:3: ( rule__AlwaysPattern__Group_2_0__0 )
                    // InternalFiacre.g:5078:4: rule__AlwaysPattern__Group_2_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AlwaysPattern__Group_2_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAlwaysPatternAccess().getGroup_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5082:2: ( ( rule__AlwaysPattern__Group_2_1__0 ) )
                    {
                    // InternalFiacre.g:5082:2: ( ( rule__AlwaysPattern__Group_2_1__0 ) )
                    // InternalFiacre.g:5083:3: ( rule__AlwaysPattern__Group_2_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAlwaysPatternAccess().getGroup_2_1()); 
                    }
                    // InternalFiacre.g:5084:3: ( rule__AlwaysPattern__Group_2_1__0 )
                    // InternalFiacre.g:5084:4: rule__AlwaysPattern__Group_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AlwaysPattern__Group_2_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAlwaysPatternAccess().getGroup_2_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5088:2: ( ( rule__AlwaysPattern__Group_2_2__0 ) )
                    {
                    // InternalFiacre.g:5088:2: ( ( rule__AlwaysPattern__Group_2_2__0 ) )
                    // InternalFiacre.g:5089:3: ( rule__AlwaysPattern__Group_2_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAlwaysPatternAccess().getGroup_2_2()); 
                    }
                    // InternalFiacre.g:5090:3: ( rule__AlwaysPattern__Group_2_2__0 )
                    // InternalFiacre.g:5090:4: rule__AlwaysPattern__Group_2_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AlwaysPattern__Group_2_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAlwaysPatternAccess().getGroup_2_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Alternatives_2"


    // $ANTLR start "rule__SequencePattern__Alternatives_1"
    // InternalFiacre.g:5098:1: rule__SequencePattern__Alternatives_1 : ( ( ( rule__SequencePattern__Group_1_0__0 ) ) | ( ( rule__SequencePattern__Group_1_1__0 ) ) );
    public final void rule__SequencePattern__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5102:1: ( ( ( rule__SequencePattern__Group_1_0__0 ) ) | ( ( rule__SequencePattern__Group_1_1__0 ) ) )
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==127) ) {
                alt48=1;
            }
            else if ( (LA48_0==128) ) {
                alt48=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }
            switch (alt48) {
                case 1 :
                    // InternalFiacre.g:5103:2: ( ( rule__SequencePattern__Group_1_0__0 ) )
                    {
                    // InternalFiacre.g:5103:2: ( ( rule__SequencePattern__Group_1_0__0 ) )
                    // InternalFiacre.g:5104:3: ( rule__SequencePattern__Group_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0()); 
                    }
                    // InternalFiacre.g:5105:3: ( rule__SequencePattern__Group_1_0__0 )
                    // InternalFiacre.g:5105:4: rule__SequencePattern__Group_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5109:2: ( ( rule__SequencePattern__Group_1_1__0 ) )
                    {
                    // InternalFiacre.g:5109:2: ( ( rule__SequencePattern__Group_1_1__0 ) )
                    // InternalFiacre.g:5110:3: ( rule__SequencePattern__Group_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_1()); 
                    }
                    // InternalFiacre.g:5111:3: ( rule__SequencePattern__Group_1_1__0 )
                    // InternalFiacre.g:5111:4: rule__SequencePattern__Group_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Alternatives_1"


    // $ANTLR start "rule__SequencePattern__Alternatives_1_0_3"
    // InternalFiacre.g:5119:1: rule__SequencePattern__Alternatives_1_0_3 : ( ( ( rule__SequencePattern__Group_1_0_3_0__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_1__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_2__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_3__0 ) ) );
    public final void rule__SequencePattern__Alternatives_1_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5123:1: ( ( ( rule__SequencePattern__Group_1_0_3_0__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_1__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_2__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_3__0 ) ) )
            int alt49=4;
            switch ( input.LA(1) ) {
            case 122:
                {
                alt49=1;
                }
                break;
            case 120:
                {
                alt49=2;
                }
                break;
            case 119:
                {
                alt49=3;
                }
                break;
            case 123:
                {
                alt49=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 49, 0, input);

                throw nvae;
            }

            switch (alt49) {
                case 1 :
                    // InternalFiacre.g:5124:2: ( ( rule__SequencePattern__Group_1_0_3_0__0 ) )
                    {
                    // InternalFiacre.g:5124:2: ( ( rule__SequencePattern__Group_1_0_3_0__0 ) )
                    // InternalFiacre.g:5125:3: ( rule__SequencePattern__Group_1_0_3_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_0()); 
                    }
                    // InternalFiacre.g:5126:3: ( rule__SequencePattern__Group_1_0_3_0__0 )
                    // InternalFiacre.g:5126:4: rule__SequencePattern__Group_1_0_3_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5130:2: ( ( rule__SequencePattern__Group_1_0_3_1__0 ) )
                    {
                    // InternalFiacre.g:5130:2: ( ( rule__SequencePattern__Group_1_0_3_1__0 ) )
                    // InternalFiacre.g:5131:3: ( rule__SequencePattern__Group_1_0_3_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_1()); 
                    }
                    // InternalFiacre.g:5132:3: ( rule__SequencePattern__Group_1_0_3_1__0 )
                    // InternalFiacre.g:5132:4: rule__SequencePattern__Group_1_0_3_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5136:2: ( ( rule__SequencePattern__Group_1_0_3_2__0 ) )
                    {
                    // InternalFiacre.g:5136:2: ( ( rule__SequencePattern__Group_1_0_3_2__0 ) )
                    // InternalFiacre.g:5137:3: ( rule__SequencePattern__Group_1_0_3_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2()); 
                    }
                    // InternalFiacre.g:5138:3: ( rule__SequencePattern__Group_1_0_3_2__0 )
                    // InternalFiacre.g:5138:4: rule__SequencePattern__Group_1_0_3_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:5142:2: ( ( rule__SequencePattern__Group_1_0_3_3__0 ) )
                    {
                    // InternalFiacre.g:5142:2: ( ( rule__SequencePattern__Group_1_0_3_3__0 ) )
                    // InternalFiacre.g:5143:3: ( rule__SequencePattern__Group_1_0_3_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_3()); 
                    }
                    // InternalFiacre.g:5144:3: ( rule__SequencePattern__Group_1_0_3_3__0 )
                    // InternalFiacre.g:5144:4: rule__SequencePattern__Group_1_0_3_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_3()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Alternatives_1_0_3"


    // $ANTLR start "rule__SequencePattern__Alternatives_1_0_3_2_2"
    // InternalFiacre.g:5152:1: rule__SequencePattern__Alternatives_1_0_3_2_2 : ( ( ( rule__SequencePattern__Group_1_0_3_2_2_0__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_2_2_1__0 ) ) );
    public final void rule__SequencePattern__Alternatives_1_0_3_2_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5156:1: ( ( ( rule__SequencePattern__Group_1_0_3_2_2_0__0 ) ) | ( ( rule__SequencePattern__Group_1_0_3_2_2_1__0 ) ) )
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==120) ) {
                alt50=1;
            }
            else if ( (LA50_0==121) ) {
                alt50=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 50, 0, input);

                throw nvae;
            }
            switch (alt50) {
                case 1 :
                    // InternalFiacre.g:5157:2: ( ( rule__SequencePattern__Group_1_0_3_2_2_0__0 ) )
                    {
                    // InternalFiacre.g:5157:2: ( ( rule__SequencePattern__Group_1_0_3_2_2_0__0 ) )
                    // InternalFiacre.g:5158:3: ( rule__SequencePattern__Group_1_0_3_2_2_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2_2_0()); 
                    }
                    // InternalFiacre.g:5159:3: ( rule__SequencePattern__Group_1_0_3_2_2_0__0 )
                    // InternalFiacre.g:5159:4: rule__SequencePattern__Group_1_0_3_2_2_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_2_2_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2_2_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5163:2: ( ( rule__SequencePattern__Group_1_0_3_2_2_1__0 ) )
                    {
                    // InternalFiacre.g:5163:2: ( ( rule__SequencePattern__Group_1_0_3_2_2_1__0 ) )
                    // InternalFiacre.g:5164:3: ( rule__SequencePattern__Group_1_0_3_2_2_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2_2_1()); 
                    }
                    // InternalFiacre.g:5165:3: ( rule__SequencePattern__Group_1_0_3_2_2_1__0 )
                    // InternalFiacre.g:5165:4: rule__SequencePattern__Group_1_0_3_2_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_2_2_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_2_2_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Alternatives_1_0_3_2_2"


    // $ANTLR start "rule__SequencePattern__Alternatives_1_1_3"
    // InternalFiacre.g:5173:1: rule__SequencePattern__Alternatives_1_1_3 : ( ( ( rule__SequencePattern__Group_1_1_3_0__0 ) ) | ( ( rule__SequencePattern__Group_1_1_3_1__0 ) ) | ( ( rule__SequencePattern__Group_1_1_3_2__0 ) ) );
    public final void rule__SequencePattern__Alternatives_1_1_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5177:1: ( ( ( rule__SequencePattern__Group_1_1_3_0__0 ) ) | ( ( rule__SequencePattern__Group_1_1_3_1__0 ) ) | ( ( rule__SequencePattern__Group_1_1_3_2__0 ) ) )
            int alt51=3;
            switch ( input.LA(1) ) {
            case 122:
                {
                alt51=1;
                }
                break;
            case 119:
                {
                alt51=2;
                }
                break;
            case 123:
                {
                alt51=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 51, 0, input);

                throw nvae;
            }

            switch (alt51) {
                case 1 :
                    // InternalFiacre.g:5178:2: ( ( rule__SequencePattern__Group_1_1_3_0__0 ) )
                    {
                    // InternalFiacre.g:5178:2: ( ( rule__SequencePattern__Group_1_1_3_0__0 ) )
                    // InternalFiacre.g:5179:3: ( rule__SequencePattern__Group_1_1_3_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_0()); 
                    }
                    // InternalFiacre.g:5180:3: ( rule__SequencePattern__Group_1_1_3_0__0 )
                    // InternalFiacre.g:5180:4: rule__SequencePattern__Group_1_1_3_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_1_3_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5184:2: ( ( rule__SequencePattern__Group_1_1_3_1__0 ) )
                    {
                    // InternalFiacre.g:5184:2: ( ( rule__SequencePattern__Group_1_1_3_1__0 ) )
                    // InternalFiacre.g:5185:3: ( rule__SequencePattern__Group_1_1_3_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_1()); 
                    }
                    // InternalFiacre.g:5186:3: ( rule__SequencePattern__Group_1_1_3_1__0 )
                    // InternalFiacre.g:5186:4: rule__SequencePattern__Group_1_1_3_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_1_3_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5190:2: ( ( rule__SequencePattern__Group_1_1_3_2__0 ) )
                    {
                    // InternalFiacre.g:5190:2: ( ( rule__SequencePattern__Group_1_1_3_2__0 ) )
                    // InternalFiacre.g:5191:3: ( rule__SequencePattern__Group_1_1_3_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_2()); 
                    }
                    // InternalFiacre.g:5192:3: ( rule__SequencePattern__Group_1_1_3_2__0 )
                    // InternalFiacre.g:5192:4: rule__SequencePattern__Group_1_1_3_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_1_3_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Alternatives_1_1_3"


    // $ANTLR start "rule__LTLQuantified__Alternatives"
    // InternalFiacre.g:5200:1: rule__LTLQuantified__Alternatives : ( ( ( rule__LTLQuantified__Group_0__0 ) ) | ( ruleLTLDisjunction ) );
    public final void rule__LTLQuantified__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5204:1: ( ( ( rule__LTLQuantified__Group_0__0 ) ) | ( ruleLTLDisjunction ) )
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( ((LA52_0>=77 && LA52_0<=78)) ) {
                alt52=1;
            }
            else if ( (LA52_0==RULE_ID||LA52_0==RULE_INT||LA52_0==22||LA52_0==52||LA52_0==83||LA52_0==91||(LA52_0>=130 && LA52_0<=132)) ) {
                alt52=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 52, 0, input);

                throw nvae;
            }
            switch (alt52) {
                case 1 :
                    // InternalFiacre.g:5205:2: ( ( rule__LTLQuantified__Group_0__0 ) )
                    {
                    // InternalFiacre.g:5205:2: ( ( rule__LTLQuantified__Group_0__0 ) )
                    // InternalFiacre.g:5206:3: ( rule__LTLQuantified__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLQuantifiedAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:5207:3: ( rule__LTLQuantified__Group_0__0 )
                    // InternalFiacre.g:5207:4: rule__LTLQuantified__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLQuantified__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLQuantifiedAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5211:2: ( ruleLTLDisjunction )
                    {
                    // InternalFiacre.g:5211:2: ( ruleLTLDisjunction )
                    // InternalFiacre.g:5212:3: ruleLTLDisjunction
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLQuantifiedAccess().getLTLDisjunctionParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleLTLDisjunction();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLQuantifiedAccess().getLTLDisjunctionParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Alternatives"


    // $ANTLR start "rule__LTLQuantified__Alternatives_0_0"
    // InternalFiacre.g:5221:1: rule__LTLQuantified__Alternatives_0_0 : ( ( ( rule__LTLQuantified__Group_0_0_0__0 ) ) | ( ( rule__LTLQuantified__Group_0_0_1__0 ) ) );
    public final void rule__LTLQuantified__Alternatives_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5225:1: ( ( ( rule__LTLQuantified__Group_0_0_0__0 ) ) | ( ( rule__LTLQuantified__Group_0_0_1__0 ) ) )
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==77) ) {
                alt53=1;
            }
            else if ( (LA53_0==78) ) {
                alt53=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;
            }
            switch (alt53) {
                case 1 :
                    // InternalFiacre.g:5226:2: ( ( rule__LTLQuantified__Group_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:5226:2: ( ( rule__LTLQuantified__Group_0_0_0__0 ) )
                    // InternalFiacre.g:5227:3: ( rule__LTLQuantified__Group_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLQuantifiedAccess().getGroup_0_0_0()); 
                    }
                    // InternalFiacre.g:5228:3: ( rule__LTLQuantified__Group_0_0_0__0 )
                    // InternalFiacre.g:5228:4: rule__LTLQuantified__Group_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLQuantified__Group_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLQuantifiedAccess().getGroup_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5232:2: ( ( rule__LTLQuantified__Group_0_0_1__0 ) )
                    {
                    // InternalFiacre.g:5232:2: ( ( rule__LTLQuantified__Group_0_0_1__0 ) )
                    // InternalFiacre.g:5233:3: ( rule__LTLQuantified__Group_0_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLQuantifiedAccess().getGroup_0_0_1()); 
                    }
                    // InternalFiacre.g:5234:3: ( rule__LTLQuantified__Group_0_0_1__0 )
                    // InternalFiacre.g:5234:4: rule__LTLQuantified__Group_0_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLQuantified__Group_0_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLQuantifiedAccess().getGroup_0_0_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Alternatives_0_0"


    // $ANTLR start "rule__LTLBinary__Alternatives_1"
    // InternalFiacre.g:5242:1: rule__LTLBinary__Alternatives_1 : ( ( ( rule__LTLBinary__Group_1_0__0 ) ) | ( ( rule__LTLBinary__Group_1_1__0 ) ) );
    public final void rule__LTLBinary__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5246:1: ( ( ( rule__LTLBinary__Group_1_0__0 ) ) | ( ( rule__LTLBinary__Group_1_1__0 ) ) )
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==121) ) {
                alt54=1;
            }
            else if ( (LA54_0==129) ) {
                alt54=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;
            }
            switch (alt54) {
                case 1 :
                    // InternalFiacre.g:5247:2: ( ( rule__LTLBinary__Group_1_0__0 ) )
                    {
                    // InternalFiacre.g:5247:2: ( ( rule__LTLBinary__Group_1_0__0 ) )
                    // InternalFiacre.g:5248:3: ( rule__LTLBinary__Group_1_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLBinaryAccess().getGroup_1_0()); 
                    }
                    // InternalFiacre.g:5249:3: ( rule__LTLBinary__Group_1_0__0 )
                    // InternalFiacre.g:5249:4: rule__LTLBinary__Group_1_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLBinary__Group_1_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLBinaryAccess().getGroup_1_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5253:2: ( ( rule__LTLBinary__Group_1_1__0 ) )
                    {
                    // InternalFiacre.g:5253:2: ( ( rule__LTLBinary__Group_1_1__0 ) )
                    // InternalFiacre.g:5254:3: ( rule__LTLBinary__Group_1_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLBinaryAccess().getGroup_1_1()); 
                    }
                    // InternalFiacre.g:5255:3: ( rule__LTLBinary__Group_1_1__0 )
                    // InternalFiacre.g:5255:4: rule__LTLBinary__Group_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLBinary__Group_1_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLBinaryAccess().getGroup_1_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Alternatives_1"


    // $ANTLR start "rule__LTLUnary__Alternatives"
    // InternalFiacre.g:5263:1: rule__LTLUnary__Alternatives : ( ( ( rule__LTLUnary__Group_0__0 ) ) | ( ruleAtomicLTL ) );
    public final void rule__LTLUnary__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5267:1: ( ( ( rule__LTLUnary__Group_0__0 ) ) | ( ruleAtomicLTL ) )
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==52||LA55_0==83||LA55_0==91||LA55_0==130) ) {
                alt55=1;
            }
            else if ( (LA55_0==RULE_ID||LA55_0==RULE_INT||LA55_0==22||(LA55_0>=131 && LA55_0<=132)) ) {
                alt55=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 55, 0, input);

                throw nvae;
            }
            switch (alt55) {
                case 1 :
                    // InternalFiacre.g:5268:2: ( ( rule__LTLUnary__Group_0__0 ) )
                    {
                    // InternalFiacre.g:5268:2: ( ( rule__LTLUnary__Group_0__0 ) )
                    // InternalFiacre.g:5269:3: ( rule__LTLUnary__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:5270:3: ( rule__LTLUnary__Group_0__0 )
                    // InternalFiacre.g:5270:4: rule__LTLUnary__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLUnary__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5274:2: ( ruleAtomicLTL )
                    {
                    // InternalFiacre.g:5274:2: ( ruleAtomicLTL )
                    // InternalFiacre.g:5275:3: ruleAtomicLTL
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getAtomicLTLParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAtomicLTL();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getAtomicLTLParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Alternatives"


    // $ANTLR start "rule__LTLUnary__Alternatives_0_0"
    // InternalFiacre.g:5284:1: rule__LTLUnary__Alternatives_0_0 : ( ( ( rule__LTLUnary__Group_0_0_0__0 ) ) | ( ( rule__LTLUnary__Group_0_0_1__0 ) ) | ( ( rule__LTLUnary__Group_0_0_2__0 ) ) | ( ( rule__LTLUnary__Group_0_0_3__0 ) ) );
    public final void rule__LTLUnary__Alternatives_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5288:1: ( ( ( rule__LTLUnary__Group_0_0_0__0 ) ) | ( ( rule__LTLUnary__Group_0_0_1__0 ) ) | ( ( rule__LTLUnary__Group_0_0_2__0 ) ) | ( ( rule__LTLUnary__Group_0_0_3__0 ) ) )
            int alt56=4;
            switch ( input.LA(1) ) {
            case 91:
                {
                alt56=1;
                }
                break;
            case 130:
                {
                alt56=2;
                }
                break;
            case 52:
                {
                alt56=3;
                }
                break;
            case 83:
                {
                alt56=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 56, 0, input);

                throw nvae;
            }

            switch (alt56) {
                case 1 :
                    // InternalFiacre.g:5289:2: ( ( rule__LTLUnary__Group_0_0_0__0 ) )
                    {
                    // InternalFiacre.g:5289:2: ( ( rule__LTLUnary__Group_0_0_0__0 ) )
                    // InternalFiacre.g:5290:3: ( rule__LTLUnary__Group_0_0_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getGroup_0_0_0()); 
                    }
                    // InternalFiacre.g:5291:3: ( rule__LTLUnary__Group_0_0_0__0 )
                    // InternalFiacre.g:5291:4: rule__LTLUnary__Group_0_0_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLUnary__Group_0_0_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getGroup_0_0_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5295:2: ( ( rule__LTLUnary__Group_0_0_1__0 ) )
                    {
                    // InternalFiacre.g:5295:2: ( ( rule__LTLUnary__Group_0_0_1__0 ) )
                    // InternalFiacre.g:5296:3: ( rule__LTLUnary__Group_0_0_1__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getGroup_0_0_1()); 
                    }
                    // InternalFiacre.g:5297:3: ( rule__LTLUnary__Group_0_0_1__0 )
                    // InternalFiacre.g:5297:4: rule__LTLUnary__Group_0_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLUnary__Group_0_0_1__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getGroup_0_0_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5301:2: ( ( rule__LTLUnary__Group_0_0_2__0 ) )
                    {
                    // InternalFiacre.g:5301:2: ( ( rule__LTLUnary__Group_0_0_2__0 ) )
                    // InternalFiacre.g:5302:3: ( rule__LTLUnary__Group_0_0_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getGroup_0_0_2()); 
                    }
                    // InternalFiacre.g:5303:3: ( rule__LTLUnary__Group_0_0_2__0 )
                    // InternalFiacre.g:5303:4: rule__LTLUnary__Group_0_0_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLUnary__Group_0_0_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getGroup_0_0_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:5307:2: ( ( rule__LTLUnary__Group_0_0_3__0 ) )
                    {
                    // InternalFiacre.g:5307:2: ( ( rule__LTLUnary__Group_0_0_3__0 ) )
                    // InternalFiacre.g:5308:3: ( rule__LTLUnary__Group_0_0_3__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getLTLUnaryAccess().getGroup_0_0_3()); 
                    }
                    // InternalFiacre.g:5309:3: ( rule__LTLUnary__Group_0_0_3__0 )
                    // InternalFiacre.g:5309:4: rule__LTLUnary__Group_0_0_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLUnary__Group_0_0_3__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getLTLUnaryAccess().getGroup_0_0_3()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Alternatives_0_0"


    // $ANTLR start "rule__AtomicLTL__Alternatives"
    // InternalFiacre.g:5317:1: rule__AtomicLTL__Alternatives : ( ( ( rule__AtomicLTL__Group_0__0 ) ) | ( ruleObservableEvent ) | ( ( rule__AtomicLTL__Group_2__0 ) ) );
    public final void rule__AtomicLTL__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5321:1: ( ( ( rule__AtomicLTL__Group_0__0 ) ) | ( ruleObservableEvent ) | ( ( rule__AtomicLTL__Group_2__0 ) ) )
            int alt57=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA57_1 = input.LA(2);

                if ( (LA57_1==EOF||LA57_1==RULE_ID||LA57_1==19||LA57_1==23||(LA57_1>=26 && LA57_1<=27)||(LA57_1>=39 && LA57_1<=40)||LA57_1==48||(LA57_1>=79 && LA57_1<=81)||LA57_1==109||LA57_1==112||LA57_1==121||LA57_1==129) ) {
                    alt57=1;
                }
                else if ( (LA57_1==89) ) {
                    alt57=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 57, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_INT:
            case 131:
            case 132:
                {
                alt57=2;
                }
                break;
            case 22:
                {
                alt57=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;
            }

            switch (alt57) {
                case 1 :
                    // InternalFiacre.g:5322:2: ( ( rule__AtomicLTL__Group_0__0 ) )
                    {
                    // InternalFiacre.g:5322:2: ( ( rule__AtomicLTL__Group_0__0 ) )
                    // InternalFiacre.g:5323:3: ( rule__AtomicLTL__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicLTLAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:5324:3: ( rule__AtomicLTL__Group_0__0 )
                    // InternalFiacre.g:5324:4: rule__AtomicLTL__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AtomicLTL__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicLTLAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5328:2: ( ruleObservableEvent )
                    {
                    // InternalFiacre.g:5328:2: ( ruleObservableEvent )
                    // InternalFiacre.g:5329:3: ruleObservableEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicLTLAccess().getObservableEventParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleObservableEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicLTLAccess().getObservableEventParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5334:2: ( ( rule__AtomicLTL__Group_2__0 ) )
                    {
                    // InternalFiacre.g:5334:2: ( ( rule__AtomicLTL__Group_2__0 ) )
                    // InternalFiacre.g:5335:3: ( rule__AtomicLTL__Group_2__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicLTLAccess().getGroup_2()); 
                    }
                    // InternalFiacre.g:5336:3: ( rule__AtomicLTL__Group_2__0 )
                    // InternalFiacre.g:5336:4: rule__AtomicLTL__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AtomicLTL__Group_2__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicLTLAccess().getGroup_2()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Alternatives"


    // $ANTLR start "rule__StateEvent__Alternatives"
    // InternalFiacre.g:5344:1: rule__StateEvent__Alternatives : ( ( ruleEnterStateEvent ) | ( ruleLeaveStateEvent ) );
    public final void rule__StateEvent__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5348:1: ( ( ruleEnterStateEvent ) | ( ruleLeaveStateEvent ) )
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==131) ) {
                alt58=1;
            }
            else if ( (LA58_0==132) ) {
                alt58=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 58, 0, input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // InternalFiacre.g:5349:2: ( ruleEnterStateEvent )
                    {
                    // InternalFiacre.g:5349:2: ( ruleEnterStateEvent )
                    // InternalFiacre.g:5350:3: ruleEnterStateEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStateEventAccess().getEnterStateEventParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleEnterStateEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStateEventAccess().getEnterStateEventParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5355:2: ( ruleLeaveStateEvent )
                    {
                    // InternalFiacre.g:5355:2: ( ruleLeaveStateEvent )
                    // InternalFiacre.g:5356:3: ruleLeaveStateEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getStateEventAccess().getLeaveStateEventParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleLeaveStateEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getStateEventAccess().getLeaveStateEventParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateEvent__Alternatives"


    // $ANTLR start "rule__ObservableNegation__Alternatives"
    // InternalFiacre.g:5365:1: rule__ObservableNegation__Alternatives : ( ( ( rule__ObservableNegation__Group_0__0 ) ) | ( ruleAtomicObservable ) );
    public final void rule__ObservableNegation__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5369:1: ( ( ( rule__ObservableNegation__Group_0__0 ) ) | ( ruleAtomicObservable ) )
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==91) ) {
                alt59=1;
            }
            else if ( (LA59_0==RULE_ID||LA59_0==RULE_INT||LA59_0==22||(LA59_0>=131 && LA59_0<=132)) ) {
                alt59=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 59, 0, input);

                throw nvae;
            }
            switch (alt59) {
                case 1 :
                    // InternalFiacre.g:5370:2: ( ( rule__ObservableNegation__Group_0__0 ) )
                    {
                    // InternalFiacre.g:5370:2: ( ( rule__ObservableNegation__Group_0__0 ) )
                    // InternalFiacre.g:5371:3: ( rule__ObservableNegation__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getObservableNegationAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:5372:3: ( rule__ObservableNegation__Group_0__0 )
                    // InternalFiacre.g:5372:4: rule__ObservableNegation__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ObservableNegation__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getObservableNegationAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5376:2: ( ruleAtomicObservable )
                    {
                    // InternalFiacre.g:5376:2: ( ruleAtomicObservable )
                    // InternalFiacre.g:5377:3: ruleAtomicObservable
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getObservableNegationAccess().getAtomicObservableParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleAtomicObservable();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getObservableNegationAccess().getAtomicObservableParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Alternatives"


    // $ANTLR start "rule__AtomicObservable__Alternatives"
    // InternalFiacre.g:5386:1: rule__AtomicObservable__Alternatives : ( ( ( rule__AtomicObservable__Group_0__0 ) ) | ( ruleObservableEvent ) );
    public final void rule__AtomicObservable__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5390:1: ( ( ( rule__AtomicObservable__Group_0__0 ) ) | ( ruleObservableEvent ) )
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==22) ) {
                alt60=1;
            }
            else if ( (LA60_0==RULE_ID||LA60_0==RULE_INT||(LA60_0>=131 && LA60_0<=132)) ) {
                alt60=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 60, 0, input);

                throw nvae;
            }
            switch (alt60) {
                case 1 :
                    // InternalFiacre.g:5391:2: ( ( rule__AtomicObservable__Group_0__0 ) )
                    {
                    // InternalFiacre.g:5391:2: ( ( rule__AtomicObservable__Group_0__0 ) )
                    // InternalFiacre.g:5392:3: ( rule__AtomicObservable__Group_0__0 )
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicObservableAccess().getGroup_0()); 
                    }
                    // InternalFiacre.g:5393:3: ( rule__AtomicObservable__Group_0__0 )
                    // InternalFiacre.g:5393:4: rule__AtomicObservable__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AtomicObservable__Group_0__0();

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

                    }

                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicObservableAccess().getGroup_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5397:2: ( ruleObservableEvent )
                    {
                    // InternalFiacre.g:5397:2: ( ruleObservableEvent )
                    // InternalFiacre.g:5398:3: ruleObservableEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getAtomicObservableAccess().getObservableEventParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleObservableEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getAtomicObservableAccess().getObservableEventParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Alternatives"


    // $ANTLR start "rule__ObservableEvent__Alternatives"
    // InternalFiacre.g:5407:1: rule__ObservableEvent__Alternatives : ( ( rulePathEvent ) | ( ruleStateEvent ) );
    public final void rule__ObservableEvent__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5411:1: ( ( rulePathEvent ) | ( ruleStateEvent ) )
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==RULE_ID||LA61_0==RULE_INT) ) {
                alt61=1;
            }
            else if ( ((LA61_0>=131 && LA61_0<=132)) ) {
                alt61=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 61, 0, input);

                throw nvae;
            }
            switch (alt61) {
                case 1 :
                    // InternalFiacre.g:5412:2: ( rulePathEvent )
                    {
                    // InternalFiacre.g:5412:2: ( rulePathEvent )
                    // InternalFiacre.g:5413:3: rulePathEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getObservableEventAccess().getPathEventParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    rulePathEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getObservableEventAccess().getPathEventParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5418:2: ( ruleStateEvent )
                    {
                    // InternalFiacre.g:5418:2: ( ruleStateEvent )
                    // InternalFiacre.g:5419:3: ruleStateEvent
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getObservableEventAccess().getStateEventParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleStateEvent();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getObservableEventAccess().getStateEventParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableEvent__Alternatives"


    // $ANTLR start "rule__PathItem__Alternatives"
    // InternalFiacre.g:5428:1: rule__PathItem__Alternatives : ( ( ruleNaturalItem ) | ( ruleNamedItem ) );
    public final void rule__PathItem__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5432:1: ( ( ruleNaturalItem ) | ( ruleNamedItem ) )
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==RULE_INT) ) {
                alt62=1;
            }
            else if ( (LA62_0==RULE_ID) ) {
                alt62=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 62, 0, input);

                throw nvae;
            }
            switch (alt62) {
                case 1 :
                    // InternalFiacre.g:5433:2: ( ruleNaturalItem )
                    {
                    // InternalFiacre.g:5433:2: ( ruleNaturalItem )
                    // InternalFiacre.g:5434:3: ruleNaturalItem
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPathItemAccess().getNaturalItemParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNaturalItem();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPathItemAccess().getNaturalItemParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5439:2: ( ruleNamedItem )
                    {
                    // InternalFiacre.g:5439:2: ( ruleNamedItem )
                    // InternalFiacre.g:5440:3: ruleNamedItem
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getPathItemAccess().getNamedItemParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleNamedItem();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getPathItemAccess().getNamedItemParserRuleCall_1()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathItem__Alternatives"


    // $ANTLR start "rule__Subject__Alternatives"
    // InternalFiacre.g:5449:1: rule__Subject__Alternatives : ( ( ruleStateSubject ) | ( ruleValueSubject ) | ( ruleTagSubject ) | ( ruleEventSubject ) );
    public final void rule__Subject__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5453:1: ( ( ruleStateSubject ) | ( ruleValueSubject ) | ( ruleTagSubject ) | ( ruleEventSubject ) )
            int alt63=4;
            switch ( input.LA(1) ) {
            case 133:
                {
                alt63=1;
                }
                break;
            case 134:
                {
                alt63=2;
                }
                break;
            case 135:
                {
                alt63=3;
                }
                break;
            case 136:
                {
                alt63=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 63, 0, input);

                throw nvae;
            }

            switch (alt63) {
                case 1 :
                    // InternalFiacre.g:5454:2: ( ruleStateSubject )
                    {
                    // InternalFiacre.g:5454:2: ( ruleStateSubject )
                    // InternalFiacre.g:5455:3: ruleStateSubject
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSubjectAccess().getStateSubjectParserRuleCall_0()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleStateSubject();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSubjectAccess().getStateSubjectParserRuleCall_0()); 
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalFiacre.g:5460:2: ( ruleValueSubject )
                    {
                    // InternalFiacre.g:5460:2: ( ruleValueSubject )
                    // InternalFiacre.g:5461:3: ruleValueSubject
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSubjectAccess().getValueSubjectParserRuleCall_1()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleValueSubject();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSubjectAccess().getValueSubjectParserRuleCall_1()); 
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalFiacre.g:5466:2: ( ruleTagSubject )
                    {
                    // InternalFiacre.g:5466:2: ( ruleTagSubject )
                    // InternalFiacre.g:5467:3: ruleTagSubject
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSubjectAccess().getTagSubjectParserRuleCall_2()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleTagSubject();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSubjectAccess().getTagSubjectParserRuleCall_2()); 
                    }

                    }


                    }
                    break;
                case 4 :
                    // InternalFiacre.g:5472:2: ( ruleEventSubject )
                    {
                    // InternalFiacre.g:5472:2: ( ruleEventSubject )
                    // InternalFiacre.g:5473:3: ruleEventSubject
                    {
                    if ( state.backtracking==0 ) {
                       before(grammarAccess.getSubjectAccess().getEventSubjectParserRuleCall_3()); 
                    }
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleEventSubject();

                    state._fsp--;
                    if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                       after(grammarAccess.getSubjectAccess().getEventSubjectParserRuleCall_3()); 
                    }

                    }


                    }
                    break;

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Subject__Alternatives"


    // $ANTLR start "rule__Model__Group__0"
    // InternalFiacre.g:5482:1: rule__Model__Group__0 : rule__Model__Group__0__Impl rule__Model__Group__1 ;
    public final void rule__Model__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5486:1: ( rule__Model__Group__0__Impl rule__Model__Group__1 )
            // InternalFiacre.g:5487:2: rule__Model__Group__0__Impl rule__Model__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_4);
            rule__Model__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Model__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0"


    // $ANTLR start "rule__Model__Group__0__Impl"
    // InternalFiacre.g:5494:1: rule__Model__Group__0__Impl : ( () ) ;
    public final void rule__Model__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5498:1: ( ( () ) )
            // InternalFiacre.g:5499:1: ( () )
            {
            // InternalFiacre.g:5499:1: ( () )
            // InternalFiacre.g:5500:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getModelAction_0()); 
            }
            // InternalFiacre.g:5501:2: ()
            // InternalFiacre.g:5501:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getModelAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0__Impl"


    // $ANTLR start "rule__Model__Group__1"
    // InternalFiacre.g:5509:1: rule__Model__Group__1 : rule__Model__Group__1__Impl rule__Model__Group__2 ;
    public final void rule__Model__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5513:1: ( rule__Model__Group__1__Impl rule__Model__Group__2 )
            // InternalFiacre.g:5514:2: rule__Model__Group__1__Impl rule__Model__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_4);
            rule__Model__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Model__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1"


    // $ANTLR start "rule__Model__Group__1__Impl"
    // InternalFiacre.g:5521:1: rule__Model__Group__1__Impl : ( ( rule__Model__ImportsAssignment_1 )* ) ;
    public final void rule__Model__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5525:1: ( ( ( rule__Model__ImportsAssignment_1 )* ) )
            // InternalFiacre.g:5526:1: ( ( rule__Model__ImportsAssignment_1 )* )
            {
            // InternalFiacre.g:5526:1: ( ( rule__Model__ImportsAssignment_1 )* )
            // InternalFiacre.g:5527:2: ( rule__Model__ImportsAssignment_1 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getImportsAssignment_1()); 
            }
            // InternalFiacre.g:5528:2: ( rule__Model__ImportsAssignment_1 )*
            loop64:
            do {
                int alt64=2;
                int LA64_0 = input.LA(1);

                if ( (LA64_0==18) ) {
                    alt64=1;
                }


                switch (alt64) {
            	case 1 :
            	    // InternalFiacre.g:5528:3: rule__Model__ImportsAssignment_1
            	    {
            	    pushFollow(FollowSets000.FOLLOW_5);
            	    rule__Model__ImportsAssignment_1();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getImportsAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1__Impl"


    // $ANTLR start "rule__Model__Group__2"
    // InternalFiacre.g:5536:1: rule__Model__Group__2 : rule__Model__Group__2__Impl ;
    public final void rule__Model__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5540:1: ( rule__Model__Group__2__Impl )
            // InternalFiacre.g:5541:2: rule__Model__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Model__Group__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__2"


    // $ANTLR start "rule__Model__Group__2__Impl"
    // InternalFiacre.g:5547:1: rule__Model__Group__2__Impl : ( ( rule__Model__Alternatives_2 )* ) ;
    public final void rule__Model__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5551:1: ( ( ( rule__Model__Alternatives_2 )* ) )
            // InternalFiacre.g:5552:1: ( ( rule__Model__Alternatives_2 )* )
            {
            // InternalFiacre.g:5552:1: ( ( rule__Model__Alternatives_2 )* )
            // InternalFiacre.g:5553:2: ( rule__Model__Alternatives_2 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getAlternatives_2()); 
            }
            // InternalFiacre.g:5554:2: ( rule__Model__Alternatives_2 )*
            loop65:
            do {
                int alt65=2;
                int LA65_0 = input.LA(1);

                if ( (LA65_0==RULE_ID||LA65_0==19||(LA65_0>=26 && LA65_0<=27)||(LA65_0>=39 && LA65_0<=40)||LA65_0==48||LA65_0==109||LA65_0==112) ) {
                    alt65=1;
                }


                switch (alt65) {
            	case 1 :
            	    // InternalFiacre.g:5554:3: rule__Model__Alternatives_2
            	    {
            	    pushFollow(FollowSets000.FOLLOW_6);
            	    rule__Model__Alternatives_2();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getAlternatives_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__2__Impl"


    // $ANTLR start "rule__Root__Group__0"
    // InternalFiacre.g:5563:1: rule__Root__Group__0 : rule__Root__Group__0__Impl rule__Root__Group__1 ;
    public final void rule__Root__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5567:1: ( rule__Root__Group__0__Impl rule__Root__Group__1 )
            // InternalFiacre.g:5568:2: rule__Root__Group__0__Impl rule__Root__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_7);
            rule__Root__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__0"


    // $ANTLR start "rule__Root__Group__0__Impl"
    // InternalFiacre.g:5575:1: rule__Root__Group__0__Impl : ( () ) ;
    public final void rule__Root__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5579:1: ( ( () ) )
            // InternalFiacre.g:5580:1: ( () )
            {
            // InternalFiacre.g:5580:1: ( () )
            // InternalFiacre.g:5581:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getRootAction_0()); 
            }
            // InternalFiacre.g:5582:2: ()
            // InternalFiacre.g:5582:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getRootAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__0__Impl"


    // $ANTLR start "rule__Root__Group__1"
    // InternalFiacre.g:5590:1: rule__Root__Group__1 : rule__Root__Group__1__Impl rule__Root__Group__2 ;
    public final void rule__Root__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5594:1: ( rule__Root__Group__1__Impl rule__Root__Group__2 )
            // InternalFiacre.g:5595:2: rule__Root__Group__1__Impl rule__Root__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_8);
            rule__Root__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__1"


    // $ANTLR start "rule__Root__Group__1__Impl"
    // InternalFiacre.g:5602:1: rule__Root__Group__1__Impl : ( ( rule__Root__DeclarationAssignment_1 ) ) ;
    public final void rule__Root__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5606:1: ( ( ( rule__Root__DeclarationAssignment_1 ) ) )
            // InternalFiacre.g:5607:1: ( ( rule__Root__DeclarationAssignment_1 ) )
            {
            // InternalFiacre.g:5607:1: ( ( rule__Root__DeclarationAssignment_1 ) )
            // InternalFiacre.g:5608:2: ( rule__Root__DeclarationAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getDeclarationAssignment_1()); 
            }
            // InternalFiacre.g:5609:2: ( rule__Root__DeclarationAssignment_1 )
            // InternalFiacre.g:5609:3: rule__Root__DeclarationAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__DeclarationAssignment_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getDeclarationAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__1__Impl"


    // $ANTLR start "rule__Root__Group__2"
    // InternalFiacre.g:5617:1: rule__Root__Group__2 : rule__Root__Group__2__Impl ;
    public final void rule__Root__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5621:1: ( rule__Root__Group__2__Impl )
            // InternalFiacre.g:5622:2: rule__Root__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__2"


    // $ANTLR start "rule__Root__Group__2__Impl"
    // InternalFiacre.g:5628:1: rule__Root__Group__2__Impl : ( ( rule__Root__Group_2__0 )? ) ;
    public final void rule__Root__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5632:1: ( ( ( rule__Root__Group_2__0 )? ) )
            // InternalFiacre.g:5633:1: ( ( rule__Root__Group_2__0 )? )
            {
            // InternalFiacre.g:5633:1: ( ( rule__Root__Group_2__0 )? )
            // InternalFiacre.g:5634:2: ( rule__Root__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getGroup_2()); 
            }
            // InternalFiacre.g:5635:2: ( rule__Root__Group_2__0 )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==16) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // InternalFiacre.g:5635:3: rule__Root__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Root__Group_2__0();

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

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getGroup_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group__2__Impl"


    // $ANTLR start "rule__Root__Group_2__0"
    // InternalFiacre.g:5644:1: rule__Root__Group_2__0 : rule__Root__Group_2__0__Impl rule__Root__Group_2__1 ;
    public final void rule__Root__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5648:1: ( rule__Root__Group_2__0__Impl rule__Root__Group_2__1 )
            // InternalFiacre.g:5649:2: rule__Root__Group_2__0__Impl rule__Root__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__Root__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2__0"


    // $ANTLR start "rule__Root__Group_2__0__Impl"
    // InternalFiacre.g:5656:1: rule__Root__Group_2__0__Impl : ( '>' ) ;
    public final void rule__Root__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5660:1: ( ( '>' ) )
            // InternalFiacre.g:5661:1: ( '>' )
            {
            // InternalFiacre.g:5661:1: ( '>' )
            // InternalFiacre.g:5662:2: '>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getGreaterThanSignKeyword_2_0()); 
            }
            match(input,16,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getGreaterThanSignKeyword_2_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2__0__Impl"


    // $ANTLR start "rule__Root__Group_2__1"
    // InternalFiacre.g:5671:1: rule__Root__Group_2__1 : rule__Root__Group_2__1__Impl ;
    public final void rule__Root__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5675:1: ( rule__Root__Group_2__1__Impl )
            // InternalFiacre.g:5676:2: rule__Root__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2__1"


    // $ANTLR start "rule__Root__Group_2__1__Impl"
    // InternalFiacre.g:5682:1: rule__Root__Group_2__1__Impl : ( ( rule__Root__Group_2_1__0 ) ) ;
    public final void rule__Root__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5686:1: ( ( ( rule__Root__Group_2_1__0 ) ) )
            // InternalFiacre.g:5687:1: ( ( rule__Root__Group_2_1__0 ) )
            {
            // InternalFiacre.g:5687:1: ( ( rule__Root__Group_2_1__0 ) )
            // InternalFiacre.g:5688:2: ( rule__Root__Group_2_1__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getGroup_2_1()); 
            }
            // InternalFiacre.g:5689:2: ( rule__Root__Group_2_1__0 )
            // InternalFiacre.g:5689:3: rule__Root__Group_2_1__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2_1__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getGroup_2_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2__1__Impl"


    // $ANTLR start "rule__Root__Group_2_1__0"
    // InternalFiacre.g:5698:1: rule__Root__Group_2_1__0 : rule__Root__Group_2_1__0__Impl rule__Root__Group_2_1__1 ;
    public final void rule__Root__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5702:1: ( rule__Root__Group_2_1__0__Impl rule__Root__Group_2_1__1 )
            // InternalFiacre.g:5703:2: rule__Root__Group_2_1__0__Impl rule__Root__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_10);
            rule__Root__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2_1__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1__0"


    // $ANTLR start "rule__Root__Group_2_1__0__Impl"
    // InternalFiacre.g:5710:1: rule__Root__Group_2_1__0__Impl : ( ( rule__Root__ObservedAssignment_2_1_0 ) ) ;
    public final void rule__Root__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5714:1: ( ( ( rule__Root__ObservedAssignment_2_1_0 ) ) )
            // InternalFiacre.g:5715:1: ( ( rule__Root__ObservedAssignment_2_1_0 ) )
            {
            // InternalFiacre.g:5715:1: ( ( rule__Root__ObservedAssignment_2_1_0 ) )
            // InternalFiacre.g:5716:2: ( rule__Root__ObservedAssignment_2_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedAssignment_2_1_0()); 
            }
            // InternalFiacre.g:5717:2: ( rule__Root__ObservedAssignment_2_1_0 )
            // InternalFiacre.g:5717:3: rule__Root__ObservedAssignment_2_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__ObservedAssignment_2_1_0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedAssignment_2_1_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1__0__Impl"


    // $ANTLR start "rule__Root__Group_2_1__1"
    // InternalFiacre.g:5725:1: rule__Root__Group_2_1__1 : rule__Root__Group_2_1__1__Impl ;
    public final void rule__Root__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5729:1: ( rule__Root__Group_2_1__1__Impl )
            // InternalFiacre.g:5730:2: rule__Root__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2_1__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1__1"


    // $ANTLR start "rule__Root__Group_2_1__1__Impl"
    // InternalFiacre.g:5736:1: rule__Root__Group_2_1__1__Impl : ( ( rule__Root__Group_2_1_1__0 )* ) ;
    public final void rule__Root__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5740:1: ( ( ( rule__Root__Group_2_1_1__0 )* ) )
            // InternalFiacre.g:5741:1: ( ( rule__Root__Group_2_1_1__0 )* )
            {
            // InternalFiacre.g:5741:1: ( ( rule__Root__Group_2_1_1__0 )* )
            // InternalFiacre.g:5742:2: ( rule__Root__Group_2_1_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getGroup_2_1_1()); 
            }
            // InternalFiacre.g:5743:2: ( rule__Root__Group_2_1_1__0 )*
            loop67:
            do {
                int alt67=2;
                int LA67_0 = input.LA(1);

                if ( (LA67_0==17) ) {
                    alt67=1;
                }


                switch (alt67) {
            	case 1 :
            	    // InternalFiacre.g:5743:3: rule__Root__Group_2_1_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_11);
            	    rule__Root__Group_2_1_1__0();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getGroup_2_1_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1__1__Impl"


    // $ANTLR start "rule__Root__Group_2_1_1__0"
    // InternalFiacre.g:5752:1: rule__Root__Group_2_1_1__0 : rule__Root__Group_2_1_1__0__Impl rule__Root__Group_2_1_1__1 ;
    public final void rule__Root__Group_2_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5756:1: ( rule__Root__Group_2_1_1__0__Impl rule__Root__Group_2_1_1__1 )
            // InternalFiacre.g:5757:2: rule__Root__Group_2_1_1__0__Impl rule__Root__Group_2_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__Root__Group_2_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2_1_1__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1_1__0"


    // $ANTLR start "rule__Root__Group_2_1_1__0__Impl"
    // InternalFiacre.g:5764:1: rule__Root__Group_2_1_1__0__Impl : ( '|' ) ;
    public final void rule__Root__Group_2_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5768:1: ( ( '|' ) )
            // InternalFiacre.g:5769:1: ( '|' )
            {
            // InternalFiacre.g:5769:1: ( '|' )
            // InternalFiacre.g:5770:2: '|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getVerticalLineKeyword_2_1_1_0()); 
            }
            match(input,17,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getVerticalLineKeyword_2_1_1_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1_1__0__Impl"


    // $ANTLR start "rule__Root__Group_2_1_1__1"
    // InternalFiacre.g:5779:1: rule__Root__Group_2_1_1__1 : rule__Root__Group_2_1_1__1__Impl ;
    public final void rule__Root__Group_2_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5783:1: ( rule__Root__Group_2_1_1__1__Impl )
            // InternalFiacre.g:5784:2: rule__Root__Group_2_1_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__Group_2_1_1__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1_1__1"


    // $ANTLR start "rule__Root__Group_2_1_1__1__Impl"
    // InternalFiacre.g:5790:1: rule__Root__Group_2_1_1__1__Impl : ( ( rule__Root__ObservedAssignment_2_1_1_1 ) ) ;
    public final void rule__Root__Group_2_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5794:1: ( ( ( rule__Root__ObservedAssignment_2_1_1_1 ) ) )
            // InternalFiacre.g:5795:1: ( ( rule__Root__ObservedAssignment_2_1_1_1 ) )
            {
            // InternalFiacre.g:5795:1: ( ( rule__Root__ObservedAssignment_2_1_1_1 ) )
            // InternalFiacre.g:5796:2: ( rule__Root__ObservedAssignment_2_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedAssignment_2_1_1_1()); 
            }
            // InternalFiacre.g:5797:2: ( rule__Root__ObservedAssignment_2_1_1_1 )
            // InternalFiacre.g:5797:3: rule__Root__ObservedAssignment_2_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Root__ObservedAssignment_2_1_1_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedAssignment_2_1_1_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__Group_2_1_1__1__Impl"


    // $ANTLR start "rule__ImportDeclaration__Group__0"
    // InternalFiacre.g:5806:1: rule__ImportDeclaration__Group__0 : rule__ImportDeclaration__Group__0__Impl rule__ImportDeclaration__Group__1 ;
    public final void rule__ImportDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5810:1: ( rule__ImportDeclaration__Group__0__Impl rule__ImportDeclaration__Group__1 )
            // InternalFiacre.g:5811:2: rule__ImportDeclaration__Group__0__Impl rule__ImportDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_12);
            rule__ImportDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ImportDeclaration__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ImportDeclaration__Group__0"


    // $ANTLR start "rule__ImportDeclaration__Group__0__Impl"
    // InternalFiacre.g:5818:1: rule__ImportDeclaration__Group__0__Impl : ( '#include' ) ;
    public final void rule__ImportDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5822:1: ( ( '#include' ) )
            // InternalFiacre.g:5823:1: ( '#include' )
            {
            // InternalFiacre.g:5823:1: ( '#include' )
            // InternalFiacre.g:5824:2: '#include'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImportDeclarationAccess().getIncludeKeyword_0()); 
            }
            match(input,18,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImportDeclarationAccess().getIncludeKeyword_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ImportDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ImportDeclaration__Group__1"
    // InternalFiacre.g:5833:1: rule__ImportDeclaration__Group__1 : rule__ImportDeclaration__Group__1__Impl ;
    public final void rule__ImportDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5837:1: ( rule__ImportDeclaration__Group__1__Impl )
            // InternalFiacre.g:5838:2: rule__ImportDeclaration__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ImportDeclaration__Group__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ImportDeclaration__Group__1"


    // $ANTLR start "rule__ImportDeclaration__Group__1__Impl"
    // InternalFiacre.g:5844:1: rule__ImportDeclaration__Group__1__Impl : ( ( rule__ImportDeclaration__ImportURIAssignment_1 ) ) ;
    public final void rule__ImportDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5848:1: ( ( ( rule__ImportDeclaration__ImportURIAssignment_1 ) ) )
            // InternalFiacre.g:5849:1: ( ( rule__ImportDeclaration__ImportURIAssignment_1 ) )
            {
            // InternalFiacre.g:5849:1: ( ( rule__ImportDeclaration__ImportURIAssignment_1 ) )
            // InternalFiacre.g:5850:2: ( rule__ImportDeclaration__ImportURIAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImportDeclarationAccess().getImportURIAssignment_1()); 
            }
            // InternalFiacre.g:5851:2: ( rule__ImportDeclaration__ImportURIAssignment_1 )
            // InternalFiacre.g:5851:3: rule__ImportDeclaration__ImportURIAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ImportDeclaration__ImportURIAssignment_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImportDeclarationAccess().getImportURIAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ImportDeclaration__Group__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__0"
    // InternalFiacre.g:5860:1: rule__FunctionDeclaration__Group__0 : rule__FunctionDeclaration__Group__0__Impl rule__FunctionDeclaration__Group__1 ;
    public final void rule__FunctionDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5864:1: ( rule__FunctionDeclaration__Group__0__Impl rule__FunctionDeclaration__Group__1 )
            // InternalFiacre.g:5865:2: rule__FunctionDeclaration__Group__0__Impl rule__FunctionDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__FunctionDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__0"


    // $ANTLR start "rule__FunctionDeclaration__Group__0__Impl"
    // InternalFiacre.g:5872:1: rule__FunctionDeclaration__Group__0__Impl : ( 'function' ) ;
    public final void rule__FunctionDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5876:1: ( ( 'function' ) )
            // InternalFiacre.g:5877:1: ( 'function' )
            {
            // InternalFiacre.g:5877:1: ( 'function' )
            // InternalFiacre.g:5878:2: 'function'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getFunctionKeyword_0()); 
            }
            match(input,19,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getFunctionKeyword_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__1"
    // InternalFiacre.g:5887:1: rule__FunctionDeclaration__Group__1 : rule__FunctionDeclaration__Group__1__Impl rule__FunctionDeclaration__Group__2 ;
    public final void rule__FunctionDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5891:1: ( rule__FunctionDeclaration__Group__1__Impl rule__FunctionDeclaration__Group__2 )
            // InternalFiacre.g:5892:2: rule__FunctionDeclaration__Group__1__Impl rule__FunctionDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_13);
            rule__FunctionDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__1"


    // $ANTLR start "rule__FunctionDeclaration__Group__1__Impl"
    // InternalFiacre.g:5899:1: rule__FunctionDeclaration__Group__1__Impl : ( ( rule__FunctionDeclaration__NameAssignment_1 ) ) ;
    public final void rule__FunctionDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5903:1: ( ( ( rule__FunctionDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:5904:1: ( ( rule__FunctionDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:5904:1: ( ( rule__FunctionDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:5905:2: ( rule__FunctionDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:5906:2: ( rule__FunctionDeclaration__NameAssignment_1 )
            // InternalFiacre.g:5906:3: rule__FunctionDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__NameAssignment_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__2"
    // InternalFiacre.g:5914:1: rule__FunctionDeclaration__Group__2 : rule__FunctionDeclaration__Group__2__Impl rule__FunctionDeclaration__Group__3 ;
    public final void rule__FunctionDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5918:1: ( rule__FunctionDeclaration__Group__2__Impl rule__FunctionDeclaration__Group__3 )
            // InternalFiacre.g:5919:2: rule__FunctionDeclaration__Group__2__Impl rule__FunctionDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_14);
            rule__FunctionDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__3();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__2"


    // $ANTLR start "rule__FunctionDeclaration__Group__2__Impl"
    // InternalFiacre.g:5926:1: rule__FunctionDeclaration__Group__2__Impl : ( ( rule__FunctionDeclaration__Group_2__0 ) ) ;
    public final void rule__FunctionDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5930:1: ( ( ( rule__FunctionDeclaration__Group_2__0 ) ) )
            // InternalFiacre.g:5931:1: ( ( rule__FunctionDeclaration__Group_2__0 ) )
            {
            // InternalFiacre.g:5931:1: ( ( rule__FunctionDeclaration__Group_2__0 ) )
            // InternalFiacre.g:5932:2: ( rule__FunctionDeclaration__Group_2__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup_2()); 
            }
            // InternalFiacre.g:5933:2: ( rule__FunctionDeclaration__Group_2__0 )
            // InternalFiacre.g:5933:3: rule__FunctionDeclaration__Group_2__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2__0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__2__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__3"
    // InternalFiacre.g:5941:1: rule__FunctionDeclaration__Group__3 : rule__FunctionDeclaration__Group__3__Impl rule__FunctionDeclaration__Group__4 ;
    public final void rule__FunctionDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5945:1: ( rule__FunctionDeclaration__Group__3__Impl rule__FunctionDeclaration__Group__4 )
            // InternalFiacre.g:5946:2: rule__FunctionDeclaration__Group__3__Impl rule__FunctionDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__FunctionDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__4();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__3"


    // $ANTLR start "rule__FunctionDeclaration__Group__3__Impl"
    // InternalFiacre.g:5953:1: rule__FunctionDeclaration__Group__3__Impl : ( ':' ) ;
    public final void rule__FunctionDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5957:1: ( ( ':' ) )
            // InternalFiacre.g:5958:1: ( ':' )
            {
            // InternalFiacre.g:5958:1: ( ':' )
            // InternalFiacre.g:5959:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getColonKeyword_3()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getColonKeyword_3()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__3__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__4"
    // InternalFiacre.g:5968:1: rule__FunctionDeclaration__Group__4 : rule__FunctionDeclaration__Group__4__Impl rule__FunctionDeclaration__Group__5 ;
    public final void rule__FunctionDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5972:1: ( rule__FunctionDeclaration__Group__4__Impl rule__FunctionDeclaration__Group__5 )
            // InternalFiacre.g:5973:2: rule__FunctionDeclaration__Group__4__Impl rule__FunctionDeclaration__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_16);
            rule__FunctionDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__5();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__4"


    // $ANTLR start "rule__FunctionDeclaration__Group__4__Impl"
    // InternalFiacre.g:5980:1: rule__FunctionDeclaration__Group__4__Impl : ( ( rule__FunctionDeclaration__TypeAssignment_4 ) ) ;
    public final void rule__FunctionDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5984:1: ( ( ( rule__FunctionDeclaration__TypeAssignment_4 ) ) )
            // InternalFiacre.g:5985:1: ( ( rule__FunctionDeclaration__TypeAssignment_4 ) )
            {
            // InternalFiacre.g:5985:1: ( ( rule__FunctionDeclaration__TypeAssignment_4 ) )
            // InternalFiacre.g:5986:2: ( rule__FunctionDeclaration__TypeAssignment_4 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getTypeAssignment_4()); 
            }
            // InternalFiacre.g:5987:2: ( rule__FunctionDeclaration__TypeAssignment_4 )
            // InternalFiacre.g:5987:3: rule__FunctionDeclaration__TypeAssignment_4
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__TypeAssignment_4();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getTypeAssignment_4()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__4__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__5"
    // InternalFiacre.g:5995:1: rule__FunctionDeclaration__Group__5 : rule__FunctionDeclaration__Group__5__Impl rule__FunctionDeclaration__Group__6 ;
    public final void rule__FunctionDeclaration__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:5999:1: ( rule__FunctionDeclaration__Group__5__Impl rule__FunctionDeclaration__Group__6 )
            // InternalFiacre.g:6000:2: rule__FunctionDeclaration__Group__5__Impl rule__FunctionDeclaration__Group__6
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__FunctionDeclaration__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__6();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__5"


    // $ANTLR start "rule__FunctionDeclaration__Group__5__Impl"
    // InternalFiacre.g:6007:1: rule__FunctionDeclaration__Group__5__Impl : ( 'is' ) ;
    public final void rule__FunctionDeclaration__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6011:1: ( ( 'is' ) )
            // InternalFiacre.g:6012:1: ( 'is' )
            {
            // InternalFiacre.g:6012:1: ( 'is' )
            // InternalFiacre.g:6013:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getIsKeyword_5()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getIsKeyword_5()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__5__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__6"
    // InternalFiacre.g:6022:1: rule__FunctionDeclaration__Group__6 : rule__FunctionDeclaration__Group__6__Impl rule__FunctionDeclaration__Group__7 ;
    public final void rule__FunctionDeclaration__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6026:1: ( rule__FunctionDeclaration__Group__6__Impl rule__FunctionDeclaration__Group__7 )
            // InternalFiacre.g:6027:2: rule__FunctionDeclaration__Group__6__Impl rule__FunctionDeclaration__Group__7
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__FunctionDeclaration__Group__6__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__7();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__6"


    // $ANTLR start "rule__FunctionDeclaration__Group__6__Impl"
    // InternalFiacre.g:6034:1: rule__FunctionDeclaration__Group__6__Impl : ( ( rule__FunctionDeclaration__Group_6__0 )? ) ;
    public final void rule__FunctionDeclaration__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6038:1: ( ( ( rule__FunctionDeclaration__Group_6__0 )? ) )
            // InternalFiacre.g:6039:1: ( ( rule__FunctionDeclaration__Group_6__0 )? )
            {
            // InternalFiacre.g:6039:1: ( ( rule__FunctionDeclaration__Group_6__0 )? )
            // InternalFiacre.g:6040:2: ( rule__FunctionDeclaration__Group_6__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup_6()); 
            }
            // InternalFiacre.g:6041:2: ( rule__FunctionDeclaration__Group_6__0 )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==25) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // InternalFiacre.g:6041:3: rule__FunctionDeclaration__Group_6__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__FunctionDeclaration__Group_6__0();

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

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup_6()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__6__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group__7"
    // InternalFiacre.g:6049:1: rule__FunctionDeclaration__Group__7 : rule__FunctionDeclaration__Group__7__Impl ;
    public final void rule__FunctionDeclaration__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6053:1: ( rule__FunctionDeclaration__Group__7__Impl )
            // InternalFiacre.g:6054:2: rule__FunctionDeclaration__Group__7__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group__7__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__7"


    // $ANTLR start "rule__FunctionDeclaration__Group__7__Impl"
    // InternalFiacre.g:6060:1: rule__FunctionDeclaration__Group__7__Impl : ( ( rule__FunctionDeclaration__StatementAssignment_7 ) ) ;
    public final void rule__FunctionDeclaration__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6064:1: ( ( ( rule__FunctionDeclaration__StatementAssignment_7 ) ) )
            // InternalFiacre.g:6065:1: ( ( rule__FunctionDeclaration__StatementAssignment_7 ) )
            {
            // InternalFiacre.g:6065:1: ( ( rule__FunctionDeclaration__StatementAssignment_7 ) )
            // InternalFiacre.g:6066:2: ( rule__FunctionDeclaration__StatementAssignment_7 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getStatementAssignment_7()); 
            }
            // InternalFiacre.g:6067:2: ( rule__FunctionDeclaration__StatementAssignment_7 )
            // InternalFiacre.g:6067:3: rule__FunctionDeclaration__StatementAssignment_7
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__StatementAssignment_7();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getStatementAssignment_7()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group__7__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__0"
    // InternalFiacre.g:6076:1: rule__FunctionDeclaration__Group_2__0 : rule__FunctionDeclaration__Group_2__0__Impl rule__FunctionDeclaration__Group_2__1 ;
    public final void rule__FunctionDeclaration__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6080:1: ( rule__FunctionDeclaration__Group_2__0__Impl rule__FunctionDeclaration__Group_2__1 )
            // InternalFiacre.g:6081:2: rule__FunctionDeclaration__Group_2__0__Impl rule__FunctionDeclaration__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_18);
            rule__FunctionDeclaration__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__0"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__0__Impl"
    // InternalFiacre.g:6088:1: rule__FunctionDeclaration__Group_2__0__Impl : ( '(' ) ;
    public final void rule__FunctionDeclaration__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6092:1: ( ( '(' ) )
            // InternalFiacre.g:6093:1: ( '(' )
            {
            // InternalFiacre.g:6093:1: ( '(' )
            // InternalFiacre.g:6094:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getLeftParenthesisKeyword_2_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getLeftParenthesisKeyword_2_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__1"
    // InternalFiacre.g:6103:1: rule__FunctionDeclaration__Group_2__1 : rule__FunctionDeclaration__Group_2__1__Impl rule__FunctionDeclaration__Group_2__2 ;
    public final void rule__FunctionDeclaration__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6107:1: ( rule__FunctionDeclaration__Group_2__1__Impl rule__FunctionDeclaration__Group_2__2 )
            // InternalFiacre.g:6108:2: rule__FunctionDeclaration__Group_2__1__Impl rule__FunctionDeclaration__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_18);
            rule__FunctionDeclaration__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__1"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__1__Impl"
    // InternalFiacre.g:6115:1: rule__FunctionDeclaration__Group_2__1__Impl : ( ( rule__FunctionDeclaration__Group_2_1__0 )? ) ;
    public final void rule__FunctionDeclaration__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6119:1: ( ( ( rule__FunctionDeclaration__Group_2_1__0 )? ) )
            // InternalFiacre.g:6120:1: ( ( rule__FunctionDeclaration__Group_2_1__0 )? )
            {
            // InternalFiacre.g:6120:1: ( ( rule__FunctionDeclaration__Group_2_1__0 )? )
            // InternalFiacre.g:6121:2: ( rule__FunctionDeclaration__Group_2_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup_2_1()); 
            }
            // InternalFiacre.g:6122:2: ( rule__FunctionDeclaration__Group_2_1__0 )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==RULE_ID||LA69_0==99) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // InternalFiacre.g:6122:3: rule__FunctionDeclaration__Group_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__FunctionDeclaration__Group_2_1__0();

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

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup_2_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__2"
    // InternalFiacre.g:6130:1: rule__FunctionDeclaration__Group_2__2 : rule__FunctionDeclaration__Group_2__2__Impl ;
    public final void rule__FunctionDeclaration__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6134:1: ( rule__FunctionDeclaration__Group_2__2__Impl )
            // InternalFiacre.g:6135:2: rule__FunctionDeclaration__Group_2__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__2"


    // $ANTLR start "rule__FunctionDeclaration__Group_2__2__Impl"
    // InternalFiacre.g:6141:1: rule__FunctionDeclaration__Group_2__2__Impl : ( ')' ) ;
    public final void rule__FunctionDeclaration__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6145:1: ( ( ')' ) )
            // InternalFiacre.g:6146:1: ( ')' )
            {
            // InternalFiacre.g:6146:1: ( ')' )
            // InternalFiacre.g:6147:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getRightParenthesisKeyword_2_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getRightParenthesisKeyword_2_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2__2__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1__0"
    // InternalFiacre.g:6157:1: rule__FunctionDeclaration__Group_2_1__0 : rule__FunctionDeclaration__Group_2_1__0__Impl rule__FunctionDeclaration__Group_2_1__1 ;
    public final void rule__FunctionDeclaration__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6161:1: ( rule__FunctionDeclaration__Group_2_1__0__Impl rule__FunctionDeclaration__Group_2_1__1 )
            // InternalFiacre.g:6162:2: rule__FunctionDeclaration__Group_2_1__0__Impl rule__FunctionDeclaration__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__FunctionDeclaration__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2_1__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1__0"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1__0__Impl"
    // InternalFiacre.g:6169:1: rule__FunctionDeclaration__Group_2_1__0__Impl : ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 ) ) ;
    public final void rule__FunctionDeclaration__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6173:1: ( ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 ) ) )
            // InternalFiacre.g:6174:1: ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 ) )
            {
            // InternalFiacre.g:6174:1: ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 ) )
            // InternalFiacre.g:6175:2: ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getParametersAssignment_2_1_0()); 
            }
            // InternalFiacre.g:6176:2: ( rule__FunctionDeclaration__ParametersAssignment_2_1_0 )
            // InternalFiacre.g:6176:3: rule__FunctionDeclaration__ParametersAssignment_2_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__ParametersAssignment_2_1_0();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getParametersAssignment_2_1_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1__1"
    // InternalFiacre.g:6184:1: rule__FunctionDeclaration__Group_2_1__1 : rule__FunctionDeclaration__Group_2_1__1__Impl ;
    public final void rule__FunctionDeclaration__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6188:1: ( rule__FunctionDeclaration__Group_2_1__1__Impl )
            // InternalFiacre.g:6189:2: rule__FunctionDeclaration__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2_1__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1__1"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1__1__Impl"
    // InternalFiacre.g:6195:1: rule__FunctionDeclaration__Group_2_1__1__Impl : ( ( rule__FunctionDeclaration__Group_2_1_1__0 )* ) ;
    public final void rule__FunctionDeclaration__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6199:1: ( ( ( rule__FunctionDeclaration__Group_2_1_1__0 )* ) )
            // InternalFiacre.g:6200:1: ( ( rule__FunctionDeclaration__Group_2_1_1__0 )* )
            {
            // InternalFiacre.g:6200:1: ( ( rule__FunctionDeclaration__Group_2_1_1__0 )* )
            // InternalFiacre.g:6201:2: ( rule__FunctionDeclaration__Group_2_1_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup_2_1_1()); 
            }
            // InternalFiacre.g:6202:2: ( rule__FunctionDeclaration__Group_2_1_1__0 )*
            loop70:
            do {
                int alt70=2;
                int LA70_0 = input.LA(1);

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


                switch (alt70) {
            	case 1 :
            	    // InternalFiacre.g:6202:3: rule__FunctionDeclaration__Group_2_1_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__FunctionDeclaration__Group_2_1_1__0();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup_2_1_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1_1__0"
    // InternalFiacre.g:6211:1: rule__FunctionDeclaration__Group_2_1_1__0 : rule__FunctionDeclaration__Group_2_1_1__0__Impl rule__FunctionDeclaration__Group_2_1_1__1 ;
    public final void rule__FunctionDeclaration__Group_2_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6215:1: ( rule__FunctionDeclaration__Group_2_1_1__0__Impl rule__FunctionDeclaration__Group_2_1_1__1 )
            // InternalFiacre.g:6216:2: rule__FunctionDeclaration__Group_2_1_1__0__Impl rule__FunctionDeclaration__Group_2_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__FunctionDeclaration__Group_2_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2_1_1__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1_1__0"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1_1__0__Impl"
    // InternalFiacre.g:6223:1: rule__FunctionDeclaration__Group_2_1_1__0__Impl : ( ',' ) ;
    public final void rule__FunctionDeclaration__Group_2_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6227:1: ( ( ',' ) )
            // InternalFiacre.g:6228:1: ( ',' )
            {
            // InternalFiacre.g:6228:1: ( ',' )
            // InternalFiacre.g:6229:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getCommaKeyword_2_1_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getCommaKeyword_2_1_1_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1_1__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1_1__1"
    // InternalFiacre.g:6238:1: rule__FunctionDeclaration__Group_2_1_1__1 : rule__FunctionDeclaration__Group_2_1_1__1__Impl ;
    public final void rule__FunctionDeclaration__Group_2_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6242:1: ( rule__FunctionDeclaration__Group_2_1_1__1__Impl )
            // InternalFiacre.g:6243:2: rule__FunctionDeclaration__Group_2_1_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_2_1_1__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1_1__1"


    // $ANTLR start "rule__FunctionDeclaration__Group_2_1_1__1__Impl"
    // InternalFiacre.g:6249:1: rule__FunctionDeclaration__Group_2_1_1__1__Impl : ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 ) ) ;
    public final void rule__FunctionDeclaration__Group_2_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6253:1: ( ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 ) ) )
            // InternalFiacre.g:6254:1: ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 ) )
            {
            // InternalFiacre.g:6254:1: ( ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 ) )
            // InternalFiacre.g:6255:2: ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getParametersAssignment_2_1_1_1()); 
            }
            // InternalFiacre.g:6256:2: ( rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 )
            // InternalFiacre.g:6256:3: rule__FunctionDeclaration__ParametersAssignment_2_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__ParametersAssignment_2_1_1_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getParametersAssignment_2_1_1_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_2_1_1__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__0"
    // InternalFiacre.g:6265:1: rule__FunctionDeclaration__Group_6__0 : rule__FunctionDeclaration__Group_6__0__Impl rule__FunctionDeclaration__Group_6__1 ;
    public final void rule__FunctionDeclaration__Group_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6269:1: ( rule__FunctionDeclaration__Group_6__0__Impl rule__FunctionDeclaration__Group_6__1 )
            // InternalFiacre.g:6270:2: rule__FunctionDeclaration__Group_6__0__Impl rule__FunctionDeclaration__Group_6__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__FunctionDeclaration__Group_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_6__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__0"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__0__Impl"
    // InternalFiacre.g:6277:1: rule__FunctionDeclaration__Group_6__0__Impl : ( 'var' ) ;
    public final void rule__FunctionDeclaration__Group_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6281:1: ( ( 'var' ) )
            // InternalFiacre.g:6282:1: ( 'var' )
            {
            // InternalFiacre.g:6282:1: ( 'var' )
            // InternalFiacre.g:6283:2: 'var'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getVarKeyword_6_0()); 
            }
            match(input,25,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getVarKeyword_6_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__1"
    // InternalFiacre.g:6292:1: rule__FunctionDeclaration__Group_6__1 : rule__FunctionDeclaration__Group_6__1__Impl rule__FunctionDeclaration__Group_6__2 ;
    public final void rule__FunctionDeclaration__Group_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6296:1: ( rule__FunctionDeclaration__Group_6__1__Impl rule__FunctionDeclaration__Group_6__2 )
            // InternalFiacre.g:6297:2: rule__FunctionDeclaration__Group_6__1__Impl rule__FunctionDeclaration__Group_6__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__FunctionDeclaration__Group_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_6__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__1"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__1__Impl"
    // InternalFiacre.g:6304:1: rule__FunctionDeclaration__Group_6__1__Impl : ( ( rule__FunctionDeclaration__VariablesAssignment_6_1 ) ) ;
    public final void rule__FunctionDeclaration__Group_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6308:1: ( ( ( rule__FunctionDeclaration__VariablesAssignment_6_1 ) ) )
            // InternalFiacre.g:6309:1: ( ( rule__FunctionDeclaration__VariablesAssignment_6_1 ) )
            {
            // InternalFiacre.g:6309:1: ( ( rule__FunctionDeclaration__VariablesAssignment_6_1 ) )
            // InternalFiacre.g:6310:2: ( rule__FunctionDeclaration__VariablesAssignment_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getVariablesAssignment_6_1()); 
            }
            // InternalFiacre.g:6311:2: ( rule__FunctionDeclaration__VariablesAssignment_6_1 )
            // InternalFiacre.g:6311:3: rule__FunctionDeclaration__VariablesAssignment_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__VariablesAssignment_6_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getVariablesAssignment_6_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__1__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__2"
    // InternalFiacre.g:6319:1: rule__FunctionDeclaration__Group_6__2 : rule__FunctionDeclaration__Group_6__2__Impl ;
    public final void rule__FunctionDeclaration__Group_6__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6323:1: ( rule__FunctionDeclaration__Group_6__2__Impl )
            // InternalFiacre.g:6324:2: rule__FunctionDeclaration__Group_6__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_6__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__2"


    // $ANTLR start "rule__FunctionDeclaration__Group_6__2__Impl"
    // InternalFiacre.g:6330:1: rule__FunctionDeclaration__Group_6__2__Impl : ( ( rule__FunctionDeclaration__Group_6_2__0 )* ) ;
    public final void rule__FunctionDeclaration__Group_6__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6334:1: ( ( ( rule__FunctionDeclaration__Group_6_2__0 )* ) )
            // InternalFiacre.g:6335:1: ( ( rule__FunctionDeclaration__Group_6_2__0 )* )
            {
            // InternalFiacre.g:6335:1: ( ( rule__FunctionDeclaration__Group_6_2__0 )* )
            // InternalFiacre.g:6336:2: ( rule__FunctionDeclaration__Group_6_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getGroup_6_2()); 
            }
            // InternalFiacre.g:6337:2: ( rule__FunctionDeclaration__Group_6_2__0 )*
            loop71:
            do {
                int alt71=2;
                int LA71_0 = input.LA(1);

                if ( (LA71_0==24) ) {
                    alt71=1;
                }


                switch (alt71) {
            	case 1 :
            	    // InternalFiacre.g:6337:3: rule__FunctionDeclaration__Group_6_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__FunctionDeclaration__Group_6_2__0();

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

            	    }
            	    break;

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

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getGroup_6_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6__2__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_6_2__0"
    // InternalFiacre.g:6346:1: rule__FunctionDeclaration__Group_6_2__0 : rule__FunctionDeclaration__Group_6_2__0__Impl rule__FunctionDeclaration__Group_6_2__1 ;
    public final void rule__FunctionDeclaration__Group_6_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6350:1: ( rule__FunctionDeclaration__Group_6_2__0__Impl rule__FunctionDeclaration__Group_6_2__1 )
            // InternalFiacre.g:6351:2: rule__FunctionDeclaration__Group_6_2__0__Impl rule__FunctionDeclaration__Group_6_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__FunctionDeclaration__Group_6_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_6_2__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6_2__0"


    // $ANTLR start "rule__FunctionDeclaration__Group_6_2__0__Impl"
    // InternalFiacre.g:6358:1: rule__FunctionDeclaration__Group_6_2__0__Impl : ( ',' ) ;
    public final void rule__FunctionDeclaration__Group_6_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6362:1: ( ( ',' ) )
            // InternalFiacre.g:6363:1: ( ',' )
            {
            // InternalFiacre.g:6363:1: ( ',' )
            // InternalFiacre.g:6364:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getCommaKeyword_6_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getCommaKeyword_6_2_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6_2__0__Impl"


    // $ANTLR start "rule__FunctionDeclaration__Group_6_2__1"
    // InternalFiacre.g:6373:1: rule__FunctionDeclaration__Group_6_2__1 : rule__FunctionDeclaration__Group_6_2__1__Impl ;
    public final void rule__FunctionDeclaration__Group_6_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6377:1: ( rule__FunctionDeclaration__Group_6_2__1__Impl )
            // InternalFiacre.g:6378:2: rule__FunctionDeclaration__Group_6_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__Group_6_2__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6_2__1"


    // $ANTLR start "rule__FunctionDeclaration__Group_6_2__1__Impl"
    // InternalFiacre.g:6384:1: rule__FunctionDeclaration__Group_6_2__1__Impl : ( ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 ) ) ;
    public final void rule__FunctionDeclaration__Group_6_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6388:1: ( ( ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 ) ) )
            // InternalFiacre.g:6389:1: ( ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 ) )
            {
            // InternalFiacre.g:6389:1: ( ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 ) )
            // InternalFiacre.g:6390:2: ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getVariablesAssignment_6_2_1()); 
            }
            // InternalFiacre.g:6391:2: ( rule__FunctionDeclaration__VariablesAssignment_6_2_1 )
            // InternalFiacre.g:6391:3: rule__FunctionDeclaration__VariablesAssignment_6_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FunctionDeclaration__VariablesAssignment_6_2_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getVariablesAssignment_6_2_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__Group_6_2__1__Impl"


    // $ANTLR start "rule__TypeDeclaration__Group__0"
    // InternalFiacre.g:6400:1: rule__TypeDeclaration__Group__0 : rule__TypeDeclaration__Group__0__Impl rule__TypeDeclaration__Group__1 ;
    public final void rule__TypeDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6404:1: ( rule__TypeDeclaration__Group__0__Impl rule__TypeDeclaration__Group__1 )
            // InternalFiacre.g:6405:2: rule__TypeDeclaration__Group__0__Impl rule__TypeDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__TypeDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__0"


    // $ANTLR start "rule__TypeDeclaration__Group__0__Impl"
    // InternalFiacre.g:6412:1: rule__TypeDeclaration__Group__0__Impl : ( 'type' ) ;
    public final void rule__TypeDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6416:1: ( ( 'type' ) )
            // InternalFiacre.g:6417:1: ( 'type' )
            {
            // InternalFiacre.g:6417:1: ( 'type' )
            // InternalFiacre.g:6418:2: 'type'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getTypeKeyword_0()); 
            }
            match(input,26,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getTypeKeyword_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__0__Impl"


    // $ANTLR start "rule__TypeDeclaration__Group__1"
    // InternalFiacre.g:6427:1: rule__TypeDeclaration__Group__1 : rule__TypeDeclaration__Group__1__Impl rule__TypeDeclaration__Group__2 ;
    public final void rule__TypeDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6431:1: ( rule__TypeDeclaration__Group__1__Impl rule__TypeDeclaration__Group__2 )
            // InternalFiacre.g:6432:2: rule__TypeDeclaration__Group__1__Impl rule__TypeDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_16);
            rule__TypeDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__1"


    // $ANTLR start "rule__TypeDeclaration__Group__1__Impl"
    // InternalFiacre.g:6439:1: rule__TypeDeclaration__Group__1__Impl : ( ( rule__TypeDeclaration__NameAssignment_1 ) ) ;
    public final void rule__TypeDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6443:1: ( ( ( rule__TypeDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:6444:1: ( ( rule__TypeDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:6444:1: ( ( rule__TypeDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:6445:2: ( rule__TypeDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:6446:2: ( rule__TypeDeclaration__NameAssignment_1 )
            // InternalFiacre.g:6446:3: rule__TypeDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__NameAssignment_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__1__Impl"


    // $ANTLR start "rule__TypeDeclaration__Group__2"
    // InternalFiacre.g:6454:1: rule__TypeDeclaration__Group__2 : rule__TypeDeclaration__Group__2__Impl rule__TypeDeclaration__Group__3 ;
    public final void rule__TypeDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6458:1: ( rule__TypeDeclaration__Group__2__Impl rule__TypeDeclaration__Group__3 )
            // InternalFiacre.g:6459:2: rule__TypeDeclaration__Group__2__Impl rule__TypeDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__TypeDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__Group__3();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__2"


    // $ANTLR start "rule__TypeDeclaration__Group__2__Impl"
    // InternalFiacre.g:6466:1: rule__TypeDeclaration__Group__2__Impl : ( 'is' ) ;
    public final void rule__TypeDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6470:1: ( ( 'is' ) )
            // InternalFiacre.g:6471:1: ( 'is' )
            {
            // InternalFiacre.g:6471:1: ( 'is' )
            // InternalFiacre.g:6472:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getIsKeyword_2()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getIsKeyword_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__2__Impl"


    // $ANTLR start "rule__TypeDeclaration__Group__3"
    // InternalFiacre.g:6481:1: rule__TypeDeclaration__Group__3 : rule__TypeDeclaration__Group__3__Impl ;
    public final void rule__TypeDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6485:1: ( rule__TypeDeclaration__Group__3__Impl )
            // InternalFiacre.g:6486:2: rule__TypeDeclaration__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__Group__3__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__3"


    // $ANTLR start "rule__TypeDeclaration__Group__3__Impl"
    // InternalFiacre.g:6492:1: rule__TypeDeclaration__Group__3__Impl : ( ( rule__TypeDeclaration__ValueAssignment_3 ) ) ;
    public final void rule__TypeDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6496:1: ( ( ( rule__TypeDeclaration__ValueAssignment_3 ) ) )
            // InternalFiacre.g:6497:1: ( ( rule__TypeDeclaration__ValueAssignment_3 ) )
            {
            // InternalFiacre.g:6497:1: ( ( rule__TypeDeclaration__ValueAssignment_3 ) )
            // InternalFiacre.g:6498:2: ( rule__TypeDeclaration__ValueAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getValueAssignment_3()); 
            }
            // InternalFiacre.g:6499:2: ( rule__TypeDeclaration__ValueAssignment_3 )
            // InternalFiacre.g:6499:3: rule__TypeDeclaration__ValueAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TypeDeclaration__ValueAssignment_3();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getValueAssignment_3()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ChannelDeclaration__Group__0"
    // InternalFiacre.g:6508:1: rule__ChannelDeclaration__Group__0 : rule__ChannelDeclaration__Group__0__Impl rule__ChannelDeclaration__Group__1 ;
    public final void rule__ChannelDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6512:1: ( rule__ChannelDeclaration__Group__0__Impl rule__ChannelDeclaration__Group__1 )
            // InternalFiacre.g:6513:2: rule__ChannelDeclaration__Group__0__Impl rule__ChannelDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ChannelDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__0"


    // $ANTLR start "rule__ChannelDeclaration__Group__0__Impl"
    // InternalFiacre.g:6520:1: rule__ChannelDeclaration__Group__0__Impl : ( 'channel' ) ;
    public final void rule__ChannelDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6524:1: ( ( 'channel' ) )
            // InternalFiacre.g:6525:1: ( 'channel' )
            {
            // InternalFiacre.g:6525:1: ( 'channel' )
            // InternalFiacre.g:6526:2: 'channel'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getChannelKeyword_0()); 
            }
            match(input,27,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getChannelKeyword_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ChannelDeclaration__Group__1"
    // InternalFiacre.g:6535:1: rule__ChannelDeclaration__Group__1 : rule__ChannelDeclaration__Group__1__Impl rule__ChannelDeclaration__Group__2 ;
    public final void rule__ChannelDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6539:1: ( rule__ChannelDeclaration__Group__1__Impl rule__ChannelDeclaration__Group__2 )
            // InternalFiacre.g:6540:2: rule__ChannelDeclaration__Group__1__Impl rule__ChannelDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_16);
            rule__ChannelDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__1"


    // $ANTLR start "rule__ChannelDeclaration__Group__1__Impl"
    // InternalFiacre.g:6547:1: rule__ChannelDeclaration__Group__1__Impl : ( ( rule__ChannelDeclaration__NameAssignment_1 ) ) ;
    public final void rule__ChannelDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6551:1: ( ( ( rule__ChannelDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:6552:1: ( ( rule__ChannelDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:6552:1: ( ( rule__ChannelDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:6553:2: ( rule__ChannelDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:6554:2: ( rule__ChannelDeclaration__NameAssignment_1 )
            // InternalFiacre.g:6554:3: rule__ChannelDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__NameAssignment_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ChannelDeclaration__Group__2"
    // InternalFiacre.g:6562:1: rule__ChannelDeclaration__Group__2 : rule__ChannelDeclaration__Group__2__Impl rule__ChannelDeclaration__Group__3 ;
    public final void rule__ChannelDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6566:1: ( rule__ChannelDeclaration__Group__2__Impl rule__ChannelDeclaration__Group__3 )
            // InternalFiacre.g:6567:2: rule__ChannelDeclaration__Group__2__Impl rule__ChannelDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_22);
            rule__ChannelDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__Group__3();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__2"


    // $ANTLR start "rule__ChannelDeclaration__Group__2__Impl"
    // InternalFiacre.g:6574:1: rule__ChannelDeclaration__Group__2__Impl : ( 'is' ) ;
    public final void rule__ChannelDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6578:1: ( ( 'is' ) )
            // InternalFiacre.g:6579:1: ( 'is' )
            {
            // InternalFiacre.g:6579:1: ( 'is' )
            // InternalFiacre.g:6580:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getIsKeyword_2()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getIsKeyword_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__2__Impl"


    // $ANTLR start "rule__ChannelDeclaration__Group__3"
    // InternalFiacre.g:6589:1: rule__ChannelDeclaration__Group__3 : rule__ChannelDeclaration__Group__3__Impl ;
    public final void rule__ChannelDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6593:1: ( rule__ChannelDeclaration__Group__3__Impl )
            // InternalFiacre.g:6594:2: rule__ChannelDeclaration__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__Group__3__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__3"


    // $ANTLR start "rule__ChannelDeclaration__Group__3__Impl"
    // InternalFiacre.g:6600:1: rule__ChannelDeclaration__Group__3__Impl : ( ( rule__ChannelDeclaration__ValueAssignment_3 ) ) ;
    public final void rule__ChannelDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6604:1: ( ( ( rule__ChannelDeclaration__ValueAssignment_3 ) ) )
            // InternalFiacre.g:6605:1: ( ( rule__ChannelDeclaration__ValueAssignment_3 ) )
            {
            // InternalFiacre.g:6605:1: ( ( rule__ChannelDeclaration__ValueAssignment_3 ) )
            // InternalFiacre.g:6606:2: ( rule__ChannelDeclaration__ValueAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getValueAssignment_3()); 
            }
            // InternalFiacre.g:6607:2: ( rule__ChannelDeclaration__ValueAssignment_3 )
            // InternalFiacre.g:6607:3: rule__ChannelDeclaration__ValueAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelDeclaration__ValueAssignment_3();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getValueAssignment_3()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ChannelType__Group__0"
    // InternalFiacre.g:6616:1: rule__ChannelType__Group__0 : rule__ChannelType__Group__0__Impl rule__ChannelType__Group__1 ;
    public final void rule__ChannelType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6620:1: ( rule__ChannelType__Group__0__Impl rule__ChannelType__Group__1 )
            // InternalFiacre.g:6621:2: rule__ChannelType__Group__0__Impl rule__ChannelType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_22);
            rule__ChannelType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__0"


    // $ANTLR start "rule__ChannelType__Group__0__Impl"
    // InternalFiacre.g:6628:1: rule__ChannelType__Group__0__Impl : ( () ) ;
    public final void rule__ChannelType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6632:1: ( ( () ) )
            // InternalFiacre.g:6633:1: ( () )
            {
            // InternalFiacre.g:6633:1: ( () )
            // InternalFiacre.g:6634:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getChannelTypeAction_0()); 
            }
            // InternalFiacre.g:6635:2: ()
            // InternalFiacre.g:6635:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getChannelTypeAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__0__Impl"


    // $ANTLR start "rule__ChannelType__Group__1"
    // InternalFiacre.g:6643:1: rule__ChannelType__Group__1 : rule__ChannelType__Group__1__Impl rule__ChannelType__Group__2 ;
    public final void rule__ChannelType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6647:1: ( rule__ChannelType__Group__1__Impl rule__ChannelType__Group__2 )
            // InternalFiacre.g:6648:2: rule__ChannelType__Group__1__Impl rule__ChannelType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_22);
            rule__ChannelType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__1"


    // $ANTLR start "rule__ChannelType__Group__1__Impl"
    // InternalFiacre.g:6655:1: rule__ChannelType__Group__1__Impl : ( ( rule__ChannelType__Group_1__0 )? ) ;
    public final void rule__ChannelType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6659:1: ( ( ( rule__ChannelType__Group_1__0 )? ) )
            // InternalFiacre.g:6660:1: ( ( rule__ChannelType__Group_1__0 )? )
            {
            // InternalFiacre.g:6660:1: ( ( rule__ChannelType__Group_1__0 )? )
            // InternalFiacre.g:6661:2: ( rule__ChannelType__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getGroup_1()); 
            }
            // InternalFiacre.g:6662:2: ( rule__ChannelType__Group_1__0 )?
            int alt72=2;
            alt72 = dfa72.predict(input);
            switch (alt72) {
                case 1 :
                    // InternalFiacre.g:6662:3: rule__ChannelType__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__Group_1__0();

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

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getGroup_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__1__Impl"


    // $ANTLR start "rule__ChannelType__Group__2"
    // InternalFiacre.g:6670:1: rule__ChannelType__Group__2 : rule__ChannelType__Group__2__Impl ;
    public final void rule__ChannelType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6674:1: ( rule__ChannelType__Group__2__Impl )
            // InternalFiacre.g:6675:2: rule__ChannelType__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__2"


    // $ANTLR start "rule__ChannelType__Group__2__Impl"
    // InternalFiacre.g:6681:1: rule__ChannelType__Group__2__Impl : ( ( rule__ChannelType__Alternatives_2 ) ) ;
    public final void rule__ChannelType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6685:1: ( ( ( rule__ChannelType__Alternatives_2 ) ) )
            // InternalFiacre.g:6686:1: ( ( rule__ChannelType__Alternatives_2 ) )
            {
            // InternalFiacre.g:6686:1: ( ( rule__ChannelType__Alternatives_2 ) )
            // InternalFiacre.g:6687:2: ( rule__ChannelType__Alternatives_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getAlternatives_2()); 
            }
            // InternalFiacre.g:6688:2: ( rule__ChannelType__Alternatives_2 )
            // InternalFiacre.g:6688:3: rule__ChannelType__Alternatives_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Alternatives_2();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getAlternatives_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group__2__Impl"


    // $ANTLR start "rule__ChannelType__Group_1__0"
    // InternalFiacre.g:6697:1: rule__ChannelType__Group_1__0 : rule__ChannelType__Group_1__0__Impl rule__ChannelType__Group_1__1 ;
    public final void rule__ChannelType__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6701:1: ( rule__ChannelType__Group_1__0__Impl rule__ChannelType__Group_1__1 )
            // InternalFiacre.g:6702:2: rule__ChannelType__Group_1__0__Impl rule__ChannelType__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ChannelType__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_1__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__0"


    // $ANTLR start "rule__ChannelType__Group_1__0__Impl"
    // InternalFiacre.g:6709:1: rule__ChannelType__Group_1__0__Impl : ( 'array' ) ;
    public final void rule__ChannelType__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6713:1: ( ( 'array' ) )
            // InternalFiacre.g:6714:1: ( 'array' )
            {
            // InternalFiacre.g:6714:1: ( 'array' )
            // InternalFiacre.g:6715:2: 'array'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getArrayKeyword_1_0()); 
            }
            match(input,28,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getArrayKeyword_1_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__0__Impl"


    // $ANTLR start "rule__ChannelType__Group_1__1"
    // InternalFiacre.g:6724:1: rule__ChannelType__Group_1__1 : rule__ChannelType__Group_1__1__Impl rule__ChannelType__Group_1__2 ;
    public final void rule__ChannelType__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6728:1: ( rule__ChannelType__Group_1__1__Impl rule__ChannelType__Group_1__2 )
            // InternalFiacre.g:6729:2: rule__ChannelType__Group_1__1__Impl rule__ChannelType__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_24);
            rule__ChannelType__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_1__2();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__1"


    // $ANTLR start "rule__ChannelType__Group_1__1__Impl"
    // InternalFiacre.g:6736:1: rule__ChannelType__Group_1__1__Impl : ( ( rule__ChannelType__SizeAssignment_1_1 ) ) ;
    public final void rule__ChannelType__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6740:1: ( ( ( rule__ChannelType__SizeAssignment_1_1 ) ) )
            // InternalFiacre.g:6741:1: ( ( rule__ChannelType__SizeAssignment_1_1 ) )
            {
            // InternalFiacre.g:6741:1: ( ( rule__ChannelType__SizeAssignment_1_1 ) )
            // InternalFiacre.g:6742:2: ( rule__ChannelType__SizeAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getSizeAssignment_1_1()); 
            }
            // InternalFiacre.g:6743:2: ( rule__ChannelType__SizeAssignment_1_1 )
            // InternalFiacre.g:6743:3: rule__ChannelType__SizeAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__SizeAssignment_1_1();

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

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getSizeAssignment_1_1()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__1__Impl"


    // $ANTLR start "rule__ChannelType__Group_1__2"
    // InternalFiacre.g:6751:1: rule__ChannelType__Group_1__2 : rule__ChannelType__Group_1__2__Impl ;
    public final void rule__ChannelType__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6755:1: ( rule__ChannelType__Group_1__2__Impl )
            // InternalFiacre.g:6756:2: rule__ChannelType__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_1__2__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__2"


    // $ANTLR start "rule__ChannelType__Group_1__2__Impl"
    // InternalFiacre.g:6762:1: rule__ChannelType__Group_1__2__Impl : ( 'of' ) ;
    public final void rule__ChannelType__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6766:1: ( ( 'of' ) )
            // InternalFiacre.g:6767:1: ( 'of' )
            {
            // InternalFiacre.g:6767:1: ( 'of' )
            // InternalFiacre.g:6768:2: 'of'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOfKeyword_1_2()); 
            }
            match(input,29,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOfKeyword_1_2()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_1__2__Impl"


    // $ANTLR start "rule__ChannelType__Group_2_0__0"
    // InternalFiacre.g:6778:1: rule__ChannelType__Group_2_0__0 : rule__ChannelType__Group_2_0__0__Impl rule__ChannelType__Group_2_0__1 ;
    public final void rule__ChannelType__Group_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6782:1: ( rule__ChannelType__Group_2_0__0__Impl rule__ChannelType__Group_2_0__1 )
            // InternalFiacre.g:6783:2: rule__ChannelType__Group_2_0__0__Impl rule__ChannelType__Group_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_25);
            rule__ChannelType__Group_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_2_0__1();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0__0"


    // $ANTLR start "rule__ChannelType__Group_2_0__0__Impl"
    // InternalFiacre.g:6790:1: rule__ChannelType__Group_2_0__0__Impl : ( ( rule__ChannelType__Alternatives_2_0_0 )? ) ;
    public final void rule__ChannelType__Group_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6794:1: ( ( ( rule__ChannelType__Alternatives_2_0_0 )? ) )
            // InternalFiacre.g:6795:1: ( ( rule__ChannelType__Alternatives_2_0_0 )? )
            {
            // InternalFiacre.g:6795:1: ( ( rule__ChannelType__Alternatives_2_0_0 )? )
            // InternalFiacre.g:6796:2: ( rule__ChannelType__Alternatives_2_0_0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getAlternatives_2_0_0()); 
            }
            // InternalFiacre.g:6797:2: ( rule__ChannelType__Alternatives_2_0_0 )?
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==49||LA73_0==137) ) {
                alt73=1;
            }
            switch (alt73) {
                case 1 :
                    // InternalFiacre.g:6797:3: rule__ChannelType__Alternatives_2_0_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__Alternatives_2_0_0();

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

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getAlternatives_2_0_0()); 
            }

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0__0__Impl"


    // $ANTLR start "rule__ChannelType__Group_2_0__1"
    // InternalFiacre.g:6805:1: rule__ChannelType__Group_2_0__1 : rule__ChannelType__Group_2_0__1__Impl ;
    public final void rule__ChannelType__Group_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6809:1: ( rule__ChannelType__Group_2_0__1__Impl )
            // InternalFiacre.g:6810:2: rule__ChannelType__Group_2_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_2_0__1__Impl();

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

            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0__1"


    // $ANTLR start "rule__ChannelType__Group_2_0__1__Impl"
    // InternalFiacre.g:6816:1: rule__ChannelType__Group_2_0__1__Impl : ( ( rule__ChannelType__Alternatives_2_0_1 ) ) ;
    public final void rule__ChannelType__Group_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6820:1: ( ( ( rule__ChannelType__Alternatives_2_0_1 ) ) )
            // InternalFiacre.g:6821:1: ( ( rule__ChannelType__Alternatives_2_0_1 ) )
            {
            // InternalFiacre.g:6821:1: ( ( rule__ChannelType__Alternatives_2_0_1 ) )
            // InternalFiacre.g:6822:2: ( rule__ChannelType__Alternatives_2_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getAlternatives_2_0_1()); 
            }
            // InternalFiacre.g:6823:2: ( rule__ChannelType__Alternatives_2_0_1 )
            // InternalFiacre.g:6823:3: rule__ChannelType__Alternatives_2_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Alternatives_2_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getAlternatives_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0__1__Impl"


    // $ANTLR start "rule__ChannelType__Group_2_0_0_0__0"
    // InternalFiacre.g:6832:1: rule__ChannelType__Group_2_0_0_0__0 : rule__ChannelType__Group_2_0_0_0__0__Impl rule__ChannelType__Group_2_0_0_0__1 ;
    public final void rule__ChannelType__Group_2_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6836:1: ( rule__ChannelType__Group_2_0_0_0__0__Impl rule__ChannelType__Group_2_0_0_0__1 )
            // InternalFiacre.g:6837:2: rule__ChannelType__Group_2_0_0_0__0__Impl rule__ChannelType__Group_2_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_26);
            rule__ChannelType__Group_2_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_2_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0_0_0__0"


    // $ANTLR start "rule__ChannelType__Group_2_0_0_0__0__Impl"
    // InternalFiacre.g:6844:1: rule__ChannelType__Group_2_0_0_0__0__Impl : ( ( rule__ChannelType__InAssignment_2_0_0_0_0 ) ) ;
    public final void rule__ChannelType__Group_2_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6848:1: ( ( ( rule__ChannelType__InAssignment_2_0_0_0_0 ) ) )
            // InternalFiacre.g:6849:1: ( ( rule__ChannelType__InAssignment_2_0_0_0_0 ) )
            {
            // InternalFiacre.g:6849:1: ( ( rule__ChannelType__InAssignment_2_0_0_0_0 ) )
            // InternalFiacre.g:6850:2: ( rule__ChannelType__InAssignment_2_0_0_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getInAssignment_2_0_0_0_0()); 
            }
            // InternalFiacre.g:6851:2: ( rule__ChannelType__InAssignment_2_0_0_0_0 )
            // InternalFiacre.g:6851:3: rule__ChannelType__InAssignment_2_0_0_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__InAssignment_2_0_0_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getInAssignment_2_0_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0_0_0__0__Impl"


    // $ANTLR start "rule__ChannelType__Group_2_0_0_0__1"
    // InternalFiacre.g:6859:1: rule__ChannelType__Group_2_0_0_0__1 : rule__ChannelType__Group_2_0_0_0__1__Impl ;
    public final void rule__ChannelType__Group_2_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6863:1: ( rule__ChannelType__Group_2_0_0_0__1__Impl )
            // InternalFiacre.g:6864:2: rule__ChannelType__Group_2_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ChannelType__Group_2_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0_0_0__1"


    // $ANTLR start "rule__ChannelType__Group_2_0_0_0__1__Impl"
    // InternalFiacre.g:6870:1: rule__ChannelType__Group_2_0_0_0__1__Impl : ( ( rule__ChannelType__OutAssignment_2_0_0_0_1 )? ) ;
    public final void rule__ChannelType__Group_2_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6874:1: ( ( ( rule__ChannelType__OutAssignment_2_0_0_0_1 )? ) )
            // InternalFiacre.g:6875:1: ( ( rule__ChannelType__OutAssignment_2_0_0_0_1 )? )
            {
            // InternalFiacre.g:6875:1: ( ( rule__ChannelType__OutAssignment_2_0_0_0_1 )? )
            // InternalFiacre.g:6876:2: ( rule__ChannelType__OutAssignment_2_0_0_0_1 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOutAssignment_2_0_0_0_1()); 
            }
            // InternalFiacre.g:6877:2: ( rule__ChannelType__OutAssignment_2_0_0_0_1 )?
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==137) ) {
                alt74=1;
            }
            switch (alt74) {
                case 1 :
                    // InternalFiacre.g:6877:3: rule__ChannelType__OutAssignment_2_0_0_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ChannelType__OutAssignment_2_0_0_0_1();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOutAssignment_2_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__Group_2_0_0_0__1__Impl"


    // $ANTLR start "rule__TupleType__Group__0"
    // InternalFiacre.g:6886:1: rule__TupleType__Group__0 : rule__TupleType__Group__0__Impl rule__TupleType__Group__1 ;
    public final void rule__TupleType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6890:1: ( rule__TupleType__Group__0__Impl rule__TupleType__Group__1 )
            // InternalFiacre.g:6891:2: rule__TupleType__Group__0__Impl rule__TupleType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_27);
            rule__TupleType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group__0"


    // $ANTLR start "rule__TupleType__Group__0__Impl"
    // InternalFiacre.g:6898:1: rule__TupleType__Group__0__Impl : ( ruleType ) ;
    public final void rule__TupleType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6902:1: ( ( ruleType ) )
            // InternalFiacre.g:6903:1: ( ruleType )
            {
            // InternalFiacre.g:6903:1: ( ruleType )
            // InternalFiacre.g:6904:2: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getTypeParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getTypeParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group__0__Impl"


    // $ANTLR start "rule__TupleType__Group__1"
    // InternalFiacre.g:6913:1: rule__TupleType__Group__1 : rule__TupleType__Group__1__Impl ;
    public final void rule__TupleType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6917:1: ( rule__TupleType__Group__1__Impl )
            // InternalFiacre.g:6918:2: rule__TupleType__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group__1"


    // $ANTLR start "rule__TupleType__Group__1__Impl"
    // InternalFiacre.g:6924:1: rule__TupleType__Group__1__Impl : ( ( rule__TupleType__Group_1__0 )* ) ;
    public final void rule__TupleType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6928:1: ( ( ( rule__TupleType__Group_1__0 )* ) )
            // InternalFiacre.g:6929:1: ( ( rule__TupleType__Group_1__0 )* )
            {
            // InternalFiacre.g:6929:1: ( ( rule__TupleType__Group_1__0 )* )
            // InternalFiacre.g:6930:2: ( rule__TupleType__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getGroup_1()); 
            }
            // InternalFiacre.g:6931:2: ( rule__TupleType__Group_1__0 )*
            loop75:
            do {
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0==30) ) {
                    alt75=1;
                }


                switch (alt75) {
            	case 1 :
            	    // InternalFiacre.g:6931:3: rule__TupleType__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_28);
            	    rule__TupleType__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop75;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group__1__Impl"


    // $ANTLR start "rule__TupleType__Group_1__0"
    // InternalFiacre.g:6940:1: rule__TupleType__Group_1__0 : rule__TupleType__Group_1__0__Impl rule__TupleType__Group_1__1 ;
    public final void rule__TupleType__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6944:1: ( rule__TupleType__Group_1__0__Impl rule__TupleType__Group_1__1 )
            // InternalFiacre.g:6945:2: rule__TupleType__Group_1__0__Impl rule__TupleType__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_27);
            rule__TupleType__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__0"


    // $ANTLR start "rule__TupleType__Group_1__0__Impl"
    // InternalFiacre.g:6952:1: rule__TupleType__Group_1__0__Impl : ( () ) ;
    public final void rule__TupleType__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6956:1: ( ( () ) )
            // InternalFiacre.g:6957:1: ( () )
            {
            // InternalFiacre.g:6957:1: ( () )
            // InternalFiacre.g:6958:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getTupleTypeTypesAction_1_0()); 
            }
            // InternalFiacre.g:6959:2: ()
            // InternalFiacre.g:6959:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getTupleTypeTypesAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__0__Impl"


    // $ANTLR start "rule__TupleType__Group_1__1"
    // InternalFiacre.g:6967:1: rule__TupleType__Group_1__1 : rule__TupleType__Group_1__1__Impl rule__TupleType__Group_1__2 ;
    public final void rule__TupleType__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6971:1: ( rule__TupleType__Group_1__1__Impl rule__TupleType__Group_1__2 )
            // InternalFiacre.g:6972:2: rule__TupleType__Group_1__1__Impl rule__TupleType__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__TupleType__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__1"


    // $ANTLR start "rule__TupleType__Group_1__1__Impl"
    // InternalFiacre.g:6979:1: rule__TupleType__Group_1__1__Impl : ( '#' ) ;
    public final void rule__TupleType__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6983:1: ( ( '#' ) )
            // InternalFiacre.g:6984:1: ( '#' )
            {
            // InternalFiacre.g:6984:1: ( '#' )
            // InternalFiacre.g:6985:2: '#'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getNumberSignKeyword_1_1()); 
            }
            match(input,30,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getNumberSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__1__Impl"


    // $ANTLR start "rule__TupleType__Group_1__2"
    // InternalFiacre.g:6994:1: rule__TupleType__Group_1__2 : rule__TupleType__Group_1__2__Impl ;
    public final void rule__TupleType__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:6998:1: ( rule__TupleType__Group_1__2__Impl )
            // InternalFiacre.g:6999:2: rule__TupleType__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__2"


    // $ANTLR start "rule__TupleType__Group_1__2__Impl"
    // InternalFiacre.g:7005:1: rule__TupleType__Group_1__2__Impl : ( ( rule__TupleType__TypesAssignment_1_2 ) ) ;
    public final void rule__TupleType__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7009:1: ( ( ( rule__TupleType__TypesAssignment_1_2 ) ) )
            // InternalFiacre.g:7010:1: ( ( rule__TupleType__TypesAssignment_1_2 ) )
            {
            // InternalFiacre.g:7010:1: ( ( rule__TupleType__TypesAssignment_1_2 ) )
            // InternalFiacre.g:7011:2: ( rule__TupleType__TypesAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getTypesAssignment_1_2()); 
            }
            // InternalFiacre.g:7012:2: ( rule__TupleType__TypesAssignment_1_2 )
            // InternalFiacre.g:7012:3: rule__TupleType__TypesAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TupleType__TypesAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getTypesAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__Group_1__2__Impl"


    // $ANTLR start "rule__BasicType__Group_0__0"
    // InternalFiacre.g:7021:1: rule__BasicType__Group_0__0 : rule__BasicType__Group_0__0__Impl rule__BasicType__Group_0__1 ;
    public final void rule__BasicType__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7025:1: ( rule__BasicType__Group_0__0__Impl rule__BasicType__Group_0__1 )
            // InternalFiacre.g:7026:2: rule__BasicType__Group_0__0__Impl rule__BasicType__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_29);
            rule__BasicType__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_0__0"


    // $ANTLR start "rule__BasicType__Group_0__0__Impl"
    // InternalFiacre.g:7033:1: rule__BasicType__Group_0__0__Impl : ( () ) ;
    public final void rule__BasicType__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7037:1: ( ( () ) )
            // InternalFiacre.g:7038:1: ( () )
            {
            // InternalFiacre.g:7038:1: ( () )
            // InternalFiacre.g:7039:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getNaturalTypeAction_0_0()); 
            }
            // InternalFiacre.g:7040:2: ()
            // InternalFiacre.g:7040:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getNaturalTypeAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_0__0__Impl"


    // $ANTLR start "rule__BasicType__Group_0__1"
    // InternalFiacre.g:7048:1: rule__BasicType__Group_0__1 : rule__BasicType__Group_0__1__Impl ;
    public final void rule__BasicType__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7052:1: ( rule__BasicType__Group_0__1__Impl )
            // InternalFiacre.g:7053:2: rule__BasicType__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_0__1"


    // $ANTLR start "rule__BasicType__Group_0__1__Impl"
    // InternalFiacre.g:7059:1: rule__BasicType__Group_0__1__Impl : ( 'nat' ) ;
    public final void rule__BasicType__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7063:1: ( ( 'nat' ) )
            // InternalFiacre.g:7064:1: ( 'nat' )
            {
            // InternalFiacre.g:7064:1: ( 'nat' )
            // InternalFiacre.g:7065:2: 'nat'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getNatKeyword_0_1()); 
            }
            match(input,31,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getNatKeyword_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_0__1__Impl"


    // $ANTLR start "rule__BasicType__Group_1__0"
    // InternalFiacre.g:7075:1: rule__BasicType__Group_1__0 : rule__BasicType__Group_1__0__Impl rule__BasicType__Group_1__1 ;
    public final void rule__BasicType__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7079:1: ( rule__BasicType__Group_1__0__Impl rule__BasicType__Group_1__1 )
            // InternalFiacre.g:7080:2: rule__BasicType__Group_1__0__Impl rule__BasicType__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_30);
            rule__BasicType__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_1__0"


    // $ANTLR start "rule__BasicType__Group_1__0__Impl"
    // InternalFiacre.g:7087:1: rule__BasicType__Group_1__0__Impl : ( () ) ;
    public final void rule__BasicType__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7091:1: ( ( () ) )
            // InternalFiacre.g:7092:1: ( () )
            {
            // InternalFiacre.g:7092:1: ( () )
            // InternalFiacre.g:7093:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getIntegerTypeAction_1_0()); 
            }
            // InternalFiacre.g:7094:2: ()
            // InternalFiacre.g:7094:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getIntegerTypeAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_1__0__Impl"


    // $ANTLR start "rule__BasicType__Group_1__1"
    // InternalFiacre.g:7102:1: rule__BasicType__Group_1__1 : rule__BasicType__Group_1__1__Impl ;
    public final void rule__BasicType__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7106:1: ( rule__BasicType__Group_1__1__Impl )
            // InternalFiacre.g:7107:2: rule__BasicType__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_1__1"


    // $ANTLR start "rule__BasicType__Group_1__1__Impl"
    // InternalFiacre.g:7113:1: rule__BasicType__Group_1__1__Impl : ( 'int' ) ;
    public final void rule__BasicType__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7117:1: ( ( 'int' ) )
            // InternalFiacre.g:7118:1: ( 'int' )
            {
            // InternalFiacre.g:7118:1: ( 'int' )
            // InternalFiacre.g:7119:2: 'int'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getIntKeyword_1_1()); 
            }
            match(input,32,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getIntKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_1__1__Impl"


    // $ANTLR start "rule__BasicType__Group_2__0"
    // InternalFiacre.g:7129:1: rule__BasicType__Group_2__0 : rule__BasicType__Group_2__0__Impl rule__BasicType__Group_2__1 ;
    public final void rule__BasicType__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7133:1: ( rule__BasicType__Group_2__0__Impl rule__BasicType__Group_2__1 )
            // InternalFiacre.g:7134:2: rule__BasicType__Group_2__0__Impl rule__BasicType__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_31);
            rule__BasicType__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_2__0"


    // $ANTLR start "rule__BasicType__Group_2__0__Impl"
    // InternalFiacre.g:7141:1: rule__BasicType__Group_2__0__Impl : ( () ) ;
    public final void rule__BasicType__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7145:1: ( ( () ) )
            // InternalFiacre.g:7146:1: ( () )
            {
            // InternalFiacre.g:7146:1: ( () )
            // InternalFiacre.g:7147:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getBooleanTypeAction_2_0()); 
            }
            // InternalFiacre.g:7148:2: ()
            // InternalFiacre.g:7148:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getBooleanTypeAction_2_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_2__0__Impl"


    // $ANTLR start "rule__BasicType__Group_2__1"
    // InternalFiacre.g:7156:1: rule__BasicType__Group_2__1 : rule__BasicType__Group_2__1__Impl ;
    public final void rule__BasicType__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7160:1: ( rule__BasicType__Group_2__1__Impl )
            // InternalFiacre.g:7161:2: rule__BasicType__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BasicType__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_2__1"


    // $ANTLR start "rule__BasicType__Group_2__1__Impl"
    // InternalFiacre.g:7167:1: rule__BasicType__Group_2__1__Impl : ( 'bool' ) ;
    public final void rule__BasicType__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7171:1: ( ( 'bool' ) )
            // InternalFiacre.g:7172:1: ( 'bool' )
            {
            // InternalFiacre.g:7172:1: ( 'bool' )
            // InternalFiacre.g:7173:2: 'bool'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBasicTypeAccess().getBoolKeyword_2_1()); 
            }
            match(input,33,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBasicTypeAccess().getBoolKeyword_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BasicType__Group_2__1__Impl"


    // $ANTLR start "rule__RangeType__Group__0"
    // InternalFiacre.g:7183:1: rule__RangeType__Group__0 : rule__RangeType__Group__0__Impl rule__RangeType__Group__1 ;
    public final void rule__RangeType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7187:1: ( rule__RangeType__Group__0__Impl rule__RangeType__Group__1 )
            // InternalFiacre.g:7188:2: rule__RangeType__Group__0__Impl rule__RangeType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_32);
            rule__RangeType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__0"


    // $ANTLR start "rule__RangeType__Group__0__Impl"
    // InternalFiacre.g:7195:1: rule__RangeType__Group__0__Impl : ( ( rule__RangeType__MinimumAssignment_0 ) ) ;
    public final void rule__RangeType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7199:1: ( ( ( rule__RangeType__MinimumAssignment_0 ) ) )
            // InternalFiacre.g:7200:1: ( ( rule__RangeType__MinimumAssignment_0 ) )
            {
            // InternalFiacre.g:7200:1: ( ( rule__RangeType__MinimumAssignment_0 ) )
            // InternalFiacre.g:7201:2: ( rule__RangeType__MinimumAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getMinimumAssignment_0()); 
            }
            // InternalFiacre.g:7202:2: ( rule__RangeType__MinimumAssignment_0 )
            // InternalFiacre.g:7202:3: rule__RangeType__MinimumAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__MinimumAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getMinimumAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__0__Impl"


    // $ANTLR start "rule__RangeType__Group__1"
    // InternalFiacre.g:7210:1: rule__RangeType__Group__1 : rule__RangeType__Group__1__Impl rule__RangeType__Group__2 ;
    public final void rule__RangeType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7214:1: ( rule__RangeType__Group__1__Impl rule__RangeType__Group__2 )
            // InternalFiacre.g:7215:2: rule__RangeType__Group__1__Impl rule__RangeType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__RangeType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__1"


    // $ANTLR start "rule__RangeType__Group__1__Impl"
    // InternalFiacre.g:7222:1: rule__RangeType__Group__1__Impl : ( '..' ) ;
    public final void rule__RangeType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7226:1: ( ( '..' ) )
            // InternalFiacre.g:7227:1: ( '..' )
            {
            // InternalFiacre.g:7227:1: ( '..' )
            // InternalFiacre.g:7228:2: '..'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getFullStopFullStopKeyword_1()); 
            }
            match(input,34,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getFullStopFullStopKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__1__Impl"


    // $ANTLR start "rule__RangeType__Group__2"
    // InternalFiacre.g:7237:1: rule__RangeType__Group__2 : rule__RangeType__Group__2__Impl ;
    public final void rule__RangeType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7241:1: ( rule__RangeType__Group__2__Impl )
            // InternalFiacre.g:7242:2: rule__RangeType__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__2"


    // $ANTLR start "rule__RangeType__Group__2__Impl"
    // InternalFiacre.g:7248:1: rule__RangeType__Group__2__Impl : ( ( rule__RangeType__MaximumAssignment_2 ) ) ;
    public final void rule__RangeType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7252:1: ( ( ( rule__RangeType__MaximumAssignment_2 ) ) )
            // InternalFiacre.g:7253:1: ( ( rule__RangeType__MaximumAssignment_2 ) )
            {
            // InternalFiacre.g:7253:1: ( ( rule__RangeType__MaximumAssignment_2 ) )
            // InternalFiacre.g:7254:2: ( rule__RangeType__MaximumAssignment_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getMaximumAssignment_2()); 
            }
            // InternalFiacre.g:7255:2: ( rule__RangeType__MaximumAssignment_2 )
            // InternalFiacre.g:7255:3: rule__RangeType__MaximumAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RangeType__MaximumAssignment_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getMaximumAssignment_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__Group__2__Impl"


    // $ANTLR start "rule__UnionType__Group__0"
    // InternalFiacre.g:7264:1: rule__UnionType__Group__0 : rule__UnionType__Group__0__Impl rule__UnionType__Group__1 ;
    public final void rule__UnionType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7268:1: ( rule__UnionType__Group__0__Impl rule__UnionType__Group__1 )
            // InternalFiacre.g:7269:2: rule__UnionType__Group__0__Impl rule__UnionType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__UnionType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__0"


    // $ANTLR start "rule__UnionType__Group__0__Impl"
    // InternalFiacre.g:7276:1: rule__UnionType__Group__0__Impl : ( 'union' ) ;
    public final void rule__UnionType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7280:1: ( ( 'union' ) )
            // InternalFiacre.g:7281:1: ( 'union' )
            {
            // InternalFiacre.g:7281:1: ( 'union' )
            // InternalFiacre.g:7282:2: 'union'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getUnionKeyword_0()); 
            }
            match(input,35,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getUnionKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__0__Impl"


    // $ANTLR start "rule__UnionType__Group__1"
    // InternalFiacre.g:7291:1: rule__UnionType__Group__1 : rule__UnionType__Group__1__Impl rule__UnionType__Group__2 ;
    public final void rule__UnionType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7295:1: ( rule__UnionType__Group__1__Impl rule__UnionType__Group__2 )
            // InternalFiacre.g:7296:2: rule__UnionType__Group__1__Impl rule__UnionType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__UnionType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__1"


    // $ANTLR start "rule__UnionType__Group__1__Impl"
    // InternalFiacre.g:7303:1: rule__UnionType__Group__1__Impl : ( ( rule__UnionType__TagsAssignment_1 ) ) ;
    public final void rule__UnionType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7307:1: ( ( ( rule__UnionType__TagsAssignment_1 ) ) )
            // InternalFiacre.g:7308:1: ( ( rule__UnionType__TagsAssignment_1 ) )
            {
            // InternalFiacre.g:7308:1: ( ( rule__UnionType__TagsAssignment_1 ) )
            // InternalFiacre.g:7309:2: ( rule__UnionType__TagsAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getTagsAssignment_1()); 
            }
            // InternalFiacre.g:7310:2: ( rule__UnionType__TagsAssignment_1 )
            // InternalFiacre.g:7310:3: rule__UnionType__TagsAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__TagsAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getTagsAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__1__Impl"


    // $ANTLR start "rule__UnionType__Group__2"
    // InternalFiacre.g:7318:1: rule__UnionType__Group__2 : rule__UnionType__Group__2__Impl rule__UnionType__Group__3 ;
    public final void rule__UnionType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7322:1: ( rule__UnionType__Group__2__Impl rule__UnionType__Group__3 )
            // InternalFiacre.g:7323:2: rule__UnionType__Group__2__Impl rule__UnionType__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__UnionType__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__2"


    // $ANTLR start "rule__UnionType__Group__2__Impl"
    // InternalFiacre.g:7330:1: rule__UnionType__Group__2__Impl : ( ( rule__UnionType__Group_2__0 )* ) ;
    public final void rule__UnionType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7334:1: ( ( ( rule__UnionType__Group_2__0 )* ) )
            // InternalFiacre.g:7335:1: ( ( rule__UnionType__Group_2__0 )* )
            {
            // InternalFiacre.g:7335:1: ( ( rule__UnionType__Group_2__0 )* )
            // InternalFiacre.g:7336:2: ( rule__UnionType__Group_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getGroup_2()); 
            }
            // InternalFiacre.g:7337:2: ( rule__UnionType__Group_2__0 )*
            loop76:
            do {
                int alt76=2;
                int LA76_0 = input.LA(1);

                if ( (LA76_0==17) ) {
                    alt76=1;
                }


                switch (alt76) {
            	case 1 :
            	    // InternalFiacre.g:7337:3: rule__UnionType__Group_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_11);
            	    rule__UnionType__Group_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop76;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__2__Impl"


    // $ANTLR start "rule__UnionType__Group__3"
    // InternalFiacre.g:7345:1: rule__UnionType__Group__3 : rule__UnionType__Group__3__Impl rule__UnionType__Group__4 ;
    public final void rule__UnionType__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7349:1: ( rule__UnionType__Group__3__Impl rule__UnionType__Group__4 )
            // InternalFiacre.g:7350:2: rule__UnionType__Group__3__Impl rule__UnionType__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_34);
            rule__UnionType__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__3"


    // $ANTLR start "rule__UnionType__Group__3__Impl"
    // InternalFiacre.g:7357:1: rule__UnionType__Group__3__Impl : ( 'end' ) ;
    public final void rule__UnionType__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7361:1: ( ( 'end' ) )
            // InternalFiacre.g:7362:1: ( 'end' )
            {
            // InternalFiacre.g:7362:1: ( 'end' )
            // InternalFiacre.g:7363:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getEndKeyword_3()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getEndKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__3__Impl"


    // $ANTLR start "rule__UnionType__Group__4"
    // InternalFiacre.g:7372:1: rule__UnionType__Group__4 : rule__UnionType__Group__4__Impl ;
    public final void rule__UnionType__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7376:1: ( rule__UnionType__Group__4__Impl )
            // InternalFiacre.g:7377:2: rule__UnionType__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__4"


    // $ANTLR start "rule__UnionType__Group__4__Impl"
    // InternalFiacre.g:7383:1: rule__UnionType__Group__4__Impl : ( ( 'union' )? ) ;
    public final void rule__UnionType__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7387:1: ( ( ( 'union' )? ) )
            // InternalFiacre.g:7388:1: ( ( 'union' )? )
            {
            // InternalFiacre.g:7388:1: ( ( 'union' )? )
            // InternalFiacre.g:7389:2: ( 'union' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getUnionKeyword_4()); 
            }
            // InternalFiacre.g:7390:2: ( 'union' )?
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==35) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // InternalFiacre.g:7390:3: 'union'
                    {
                    match(input,35,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getUnionKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group__4__Impl"


    // $ANTLR start "rule__UnionType__Group_2__0"
    // InternalFiacre.g:7399:1: rule__UnionType__Group_2__0 : rule__UnionType__Group_2__0__Impl rule__UnionType__Group_2__1 ;
    public final void rule__UnionType__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7403:1: ( rule__UnionType__Group_2__0__Impl rule__UnionType__Group_2__1 )
            // InternalFiacre.g:7404:2: rule__UnionType__Group_2__0__Impl rule__UnionType__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__UnionType__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group_2__0"


    // $ANTLR start "rule__UnionType__Group_2__0__Impl"
    // InternalFiacre.g:7411:1: rule__UnionType__Group_2__0__Impl : ( '|' ) ;
    public final void rule__UnionType__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7415:1: ( ( '|' ) )
            // InternalFiacre.g:7416:1: ( '|' )
            {
            // InternalFiacre.g:7416:1: ( '|' )
            // InternalFiacre.g:7417:2: '|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getVerticalLineKeyword_2_0()); 
            }
            match(input,17,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getVerticalLineKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group_2__0__Impl"


    // $ANTLR start "rule__UnionType__Group_2__1"
    // InternalFiacre.g:7426:1: rule__UnionType__Group_2__1 : rule__UnionType__Group_2__1__Impl ;
    public final void rule__UnionType__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7430:1: ( rule__UnionType__Group_2__1__Impl )
            // InternalFiacre.g:7431:2: rule__UnionType__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group_2__1"


    // $ANTLR start "rule__UnionType__Group_2__1__Impl"
    // InternalFiacre.g:7437:1: rule__UnionType__Group_2__1__Impl : ( ( rule__UnionType__TagsAssignment_2_1 ) ) ;
    public final void rule__UnionType__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7441:1: ( ( ( rule__UnionType__TagsAssignment_2_1 ) ) )
            // InternalFiacre.g:7442:1: ( ( rule__UnionType__TagsAssignment_2_1 ) )
            {
            // InternalFiacre.g:7442:1: ( ( rule__UnionType__TagsAssignment_2_1 ) )
            // InternalFiacre.g:7443:2: ( rule__UnionType__TagsAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getTagsAssignment_2_1()); 
            }
            // InternalFiacre.g:7444:2: ( rule__UnionType__TagsAssignment_2_1 )
            // InternalFiacre.g:7444:3: rule__UnionType__TagsAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionType__TagsAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getTagsAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__Group_2__1__Impl"


    // $ANTLR start "rule__UnionTags__Group__0"
    // InternalFiacre.g:7453:1: rule__UnionTags__Group__0 : rule__UnionTags__Group__0__Impl rule__UnionTags__Group__1 ;
    public final void rule__UnionTags__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7457:1: ( rule__UnionTags__Group__0__Impl rule__UnionTags__Group__1 )
            // InternalFiacre.g:7458:2: rule__UnionTags__Group__0__Impl rule__UnionTags__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_35);
            rule__UnionTags__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__0"


    // $ANTLR start "rule__UnionTags__Group__0__Impl"
    // InternalFiacre.g:7465:1: rule__UnionTags__Group__0__Impl : ( ( rule__UnionTags__TagsAssignment_0 ) ) ;
    public final void rule__UnionTags__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7469:1: ( ( ( rule__UnionTags__TagsAssignment_0 ) ) )
            // InternalFiacre.g:7470:1: ( ( rule__UnionTags__TagsAssignment_0 ) )
            {
            // InternalFiacre.g:7470:1: ( ( rule__UnionTags__TagsAssignment_0 ) )
            // InternalFiacre.g:7471:2: ( rule__UnionTags__TagsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTagsAssignment_0()); 
            }
            // InternalFiacre.g:7472:2: ( rule__UnionTags__TagsAssignment_0 )
            // InternalFiacre.g:7472:3: rule__UnionTags__TagsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__TagsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTagsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__0__Impl"


    // $ANTLR start "rule__UnionTags__Group__1"
    // InternalFiacre.g:7480:1: rule__UnionTags__Group__1 : rule__UnionTags__Group__1__Impl rule__UnionTags__Group__2 ;
    public final void rule__UnionTags__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7484:1: ( rule__UnionTags__Group__1__Impl rule__UnionTags__Group__2 )
            // InternalFiacre.g:7485:2: rule__UnionTags__Group__1__Impl rule__UnionTags__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_35);
            rule__UnionTags__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__1"


    // $ANTLR start "rule__UnionTags__Group__1__Impl"
    // InternalFiacre.g:7492:1: rule__UnionTags__Group__1__Impl : ( ( rule__UnionTags__Group_1__0 )* ) ;
    public final void rule__UnionTags__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7496:1: ( ( ( rule__UnionTags__Group_1__0 )* ) )
            // InternalFiacre.g:7497:1: ( ( rule__UnionTags__Group_1__0 )* )
            {
            // InternalFiacre.g:7497:1: ( ( rule__UnionTags__Group_1__0 )* )
            // InternalFiacre.g:7498:2: ( rule__UnionTags__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getGroup_1()); 
            }
            // InternalFiacre.g:7499:2: ( rule__UnionTags__Group_1__0 )*
            loop78:
            do {
                int alt78=2;
                int LA78_0 = input.LA(1);

                if ( (LA78_0==24) ) {
                    alt78=1;
                }


                switch (alt78) {
            	case 1 :
            	    // InternalFiacre.g:7499:3: rule__UnionTags__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__UnionTags__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop78;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__1__Impl"


    // $ANTLR start "rule__UnionTags__Group__2"
    // InternalFiacre.g:7507:1: rule__UnionTags__Group__2 : rule__UnionTags__Group__2__Impl ;
    public final void rule__UnionTags__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7511:1: ( rule__UnionTags__Group__2__Impl )
            // InternalFiacre.g:7512:2: rule__UnionTags__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__2"


    // $ANTLR start "rule__UnionTags__Group__2__Impl"
    // InternalFiacre.g:7518:1: rule__UnionTags__Group__2__Impl : ( ( rule__UnionTags__Group_2__0 )? ) ;
    public final void rule__UnionTags__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7522:1: ( ( ( rule__UnionTags__Group_2__0 )? ) )
            // InternalFiacre.g:7523:1: ( ( rule__UnionTags__Group_2__0 )? )
            {
            // InternalFiacre.g:7523:1: ( ( rule__UnionTags__Group_2__0 )? )
            // InternalFiacre.g:7524:2: ( rule__UnionTags__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getGroup_2()); 
            }
            // InternalFiacre.g:7525:2: ( rule__UnionTags__Group_2__0 )?
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==29) ) {
                alt79=1;
            }
            switch (alt79) {
                case 1 :
                    // InternalFiacre.g:7525:3: rule__UnionTags__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__UnionTags__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group__2__Impl"


    // $ANTLR start "rule__UnionTags__Group_1__0"
    // InternalFiacre.g:7534:1: rule__UnionTags__Group_1__0 : rule__UnionTags__Group_1__0__Impl rule__UnionTags__Group_1__1 ;
    public final void rule__UnionTags__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7538:1: ( rule__UnionTags__Group_1__0__Impl rule__UnionTags__Group_1__1 )
            // InternalFiacre.g:7539:2: rule__UnionTags__Group_1__0__Impl rule__UnionTags__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__UnionTags__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_1__0"


    // $ANTLR start "rule__UnionTags__Group_1__0__Impl"
    // InternalFiacre.g:7546:1: rule__UnionTags__Group_1__0__Impl : ( ',' ) ;
    public final void rule__UnionTags__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7550:1: ( ( ',' ) )
            // InternalFiacre.g:7551:1: ( ',' )
            {
            // InternalFiacre.g:7551:1: ( ',' )
            // InternalFiacre.g:7552:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_1__0__Impl"


    // $ANTLR start "rule__UnionTags__Group_1__1"
    // InternalFiacre.g:7561:1: rule__UnionTags__Group_1__1 : rule__UnionTags__Group_1__1__Impl ;
    public final void rule__UnionTags__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7565:1: ( rule__UnionTags__Group_1__1__Impl )
            // InternalFiacre.g:7566:2: rule__UnionTags__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_1__1"


    // $ANTLR start "rule__UnionTags__Group_1__1__Impl"
    // InternalFiacre.g:7572:1: rule__UnionTags__Group_1__1__Impl : ( ( rule__UnionTags__TagsAssignment_1_1 ) ) ;
    public final void rule__UnionTags__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7576:1: ( ( ( rule__UnionTags__TagsAssignment_1_1 ) ) )
            // InternalFiacre.g:7577:1: ( ( rule__UnionTags__TagsAssignment_1_1 ) )
            {
            // InternalFiacre.g:7577:1: ( ( rule__UnionTags__TagsAssignment_1_1 ) )
            // InternalFiacre.g:7578:2: ( rule__UnionTags__TagsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTagsAssignment_1_1()); 
            }
            // InternalFiacre.g:7579:2: ( rule__UnionTags__TagsAssignment_1_1 )
            // InternalFiacre.g:7579:3: rule__UnionTags__TagsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__TagsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTagsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_1__1__Impl"


    // $ANTLR start "rule__UnionTags__Group_2__0"
    // InternalFiacre.g:7588:1: rule__UnionTags__Group_2__0 : rule__UnionTags__Group_2__0__Impl rule__UnionTags__Group_2__1 ;
    public final void rule__UnionTags__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7592:1: ( rule__UnionTags__Group_2__0__Impl rule__UnionTags__Group_2__1 )
            // InternalFiacre.g:7593:2: rule__UnionTags__Group_2__0__Impl rule__UnionTags__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__UnionTags__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_2__0"


    // $ANTLR start "rule__UnionTags__Group_2__0__Impl"
    // InternalFiacre.g:7600:1: rule__UnionTags__Group_2__0__Impl : ( 'of' ) ;
    public final void rule__UnionTags__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7604:1: ( ( 'of' ) )
            // InternalFiacre.g:7605:1: ( 'of' )
            {
            // InternalFiacre.g:7605:1: ( 'of' )
            // InternalFiacre.g:7606:2: 'of'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getOfKeyword_2_0()); 
            }
            match(input,29,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getOfKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_2__0__Impl"


    // $ANTLR start "rule__UnionTags__Group_2__1"
    // InternalFiacre.g:7615:1: rule__UnionTags__Group_2__1 : rule__UnionTags__Group_2__1__Impl ;
    public final void rule__UnionTags__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7619:1: ( rule__UnionTags__Group_2__1__Impl )
            // InternalFiacre.g:7620:2: rule__UnionTags__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_2__1"


    // $ANTLR start "rule__UnionTags__Group_2__1__Impl"
    // InternalFiacre.g:7626:1: rule__UnionTags__Group_2__1__Impl : ( ( rule__UnionTags__TypeAssignment_2_1 ) ) ;
    public final void rule__UnionTags__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7630:1: ( ( ( rule__UnionTags__TypeAssignment_2_1 ) ) )
            // InternalFiacre.g:7631:1: ( ( rule__UnionTags__TypeAssignment_2_1 ) )
            {
            // InternalFiacre.g:7631:1: ( ( rule__UnionTags__TypeAssignment_2_1 ) )
            // InternalFiacre.g:7632:2: ( rule__UnionTags__TypeAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTypeAssignment_2_1()); 
            }
            // InternalFiacre.g:7633:2: ( rule__UnionTags__TypeAssignment_2_1 )
            // InternalFiacre.g:7633:3: rule__UnionTags__TypeAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnionTags__TypeAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTypeAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__Group_2__1__Impl"


    // $ANTLR start "rule__RecordType__Group__0"
    // InternalFiacre.g:7642:1: rule__RecordType__Group__0 : rule__RecordType__Group__0__Impl rule__RecordType__Group__1 ;
    public final void rule__RecordType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7646:1: ( rule__RecordType__Group__0__Impl rule__RecordType__Group__1 )
            // InternalFiacre.g:7647:2: rule__RecordType__Group__0__Impl rule__RecordType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__RecordType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__0"


    // $ANTLR start "rule__RecordType__Group__0__Impl"
    // InternalFiacre.g:7654:1: rule__RecordType__Group__0__Impl : ( 'record' ) ;
    public final void rule__RecordType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7658:1: ( ( 'record' ) )
            // InternalFiacre.g:7659:1: ( 'record' )
            {
            // InternalFiacre.g:7659:1: ( 'record' )
            // InternalFiacre.g:7660:2: 'record'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getRecordKeyword_0()); 
            }
            match(input,37,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getRecordKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__0__Impl"


    // $ANTLR start "rule__RecordType__Group__1"
    // InternalFiacre.g:7669:1: rule__RecordType__Group__1 : rule__RecordType__Group__1__Impl rule__RecordType__Group__2 ;
    public final void rule__RecordType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7673:1: ( rule__RecordType__Group__1__Impl rule__RecordType__Group__2 )
            // InternalFiacre.g:7674:2: rule__RecordType__Group__1__Impl rule__RecordType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_36);
            rule__RecordType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__1"


    // $ANTLR start "rule__RecordType__Group__1__Impl"
    // InternalFiacre.g:7681:1: rule__RecordType__Group__1__Impl : ( ( rule__RecordType__FieldsAssignment_1 ) ) ;
    public final void rule__RecordType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7685:1: ( ( ( rule__RecordType__FieldsAssignment_1 ) ) )
            // InternalFiacre.g:7686:1: ( ( rule__RecordType__FieldsAssignment_1 ) )
            {
            // InternalFiacre.g:7686:1: ( ( rule__RecordType__FieldsAssignment_1 ) )
            // InternalFiacre.g:7687:2: ( rule__RecordType__FieldsAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getFieldsAssignment_1()); 
            }
            // InternalFiacre.g:7688:2: ( rule__RecordType__FieldsAssignment_1 )
            // InternalFiacre.g:7688:3: rule__RecordType__FieldsAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__FieldsAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getFieldsAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__1__Impl"


    // $ANTLR start "rule__RecordType__Group__2"
    // InternalFiacre.g:7696:1: rule__RecordType__Group__2 : rule__RecordType__Group__2__Impl rule__RecordType__Group__3 ;
    public final void rule__RecordType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7700:1: ( rule__RecordType__Group__2__Impl rule__RecordType__Group__3 )
            // InternalFiacre.g:7701:2: rule__RecordType__Group__2__Impl rule__RecordType__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_36);
            rule__RecordType__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__2"


    // $ANTLR start "rule__RecordType__Group__2__Impl"
    // InternalFiacre.g:7708:1: rule__RecordType__Group__2__Impl : ( ( rule__RecordType__Group_2__0 )* ) ;
    public final void rule__RecordType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7712:1: ( ( ( rule__RecordType__Group_2__0 )* ) )
            // InternalFiacre.g:7713:1: ( ( rule__RecordType__Group_2__0 )* )
            {
            // InternalFiacre.g:7713:1: ( ( rule__RecordType__Group_2__0 )* )
            // InternalFiacre.g:7714:2: ( rule__RecordType__Group_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getGroup_2()); 
            }
            // InternalFiacre.g:7715:2: ( rule__RecordType__Group_2__0 )*
            loop80:
            do {
                int alt80=2;
                int LA80_0 = input.LA(1);

                if ( (LA80_0==24) ) {
                    alt80=1;
                }


                switch (alt80) {
            	case 1 :
            	    // InternalFiacre.g:7715:3: rule__RecordType__Group_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__RecordType__Group_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop80;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__2__Impl"


    // $ANTLR start "rule__RecordType__Group__3"
    // InternalFiacre.g:7723:1: rule__RecordType__Group__3 : rule__RecordType__Group__3__Impl rule__RecordType__Group__4 ;
    public final void rule__RecordType__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7727:1: ( rule__RecordType__Group__3__Impl rule__RecordType__Group__4 )
            // InternalFiacre.g:7728:2: rule__RecordType__Group__3__Impl rule__RecordType__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_37);
            rule__RecordType__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__3"


    // $ANTLR start "rule__RecordType__Group__3__Impl"
    // InternalFiacre.g:7735:1: rule__RecordType__Group__3__Impl : ( 'end' ) ;
    public final void rule__RecordType__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7739:1: ( ( 'end' ) )
            // InternalFiacre.g:7740:1: ( 'end' )
            {
            // InternalFiacre.g:7740:1: ( 'end' )
            // InternalFiacre.g:7741:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getEndKeyword_3()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getEndKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__3__Impl"


    // $ANTLR start "rule__RecordType__Group__4"
    // InternalFiacre.g:7750:1: rule__RecordType__Group__4 : rule__RecordType__Group__4__Impl ;
    public final void rule__RecordType__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7754:1: ( rule__RecordType__Group__4__Impl )
            // InternalFiacre.g:7755:2: rule__RecordType__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__4"


    // $ANTLR start "rule__RecordType__Group__4__Impl"
    // InternalFiacre.g:7761:1: rule__RecordType__Group__4__Impl : ( ( 'record' )? ) ;
    public final void rule__RecordType__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7765:1: ( ( ( 'record' )? ) )
            // InternalFiacre.g:7766:1: ( ( 'record' )? )
            {
            // InternalFiacre.g:7766:1: ( ( 'record' )? )
            // InternalFiacre.g:7767:2: ( 'record' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getRecordKeyword_4()); 
            }
            // InternalFiacre.g:7768:2: ( 'record' )?
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==37) ) {
                alt81=1;
            }
            switch (alt81) {
                case 1 :
                    // InternalFiacre.g:7768:3: 'record'
                    {
                    match(input,37,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getRecordKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group__4__Impl"


    // $ANTLR start "rule__RecordType__Group_2__0"
    // InternalFiacre.g:7777:1: rule__RecordType__Group_2__0 : rule__RecordType__Group_2__0__Impl rule__RecordType__Group_2__1 ;
    public final void rule__RecordType__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7781:1: ( rule__RecordType__Group_2__0__Impl rule__RecordType__Group_2__1 )
            // InternalFiacre.g:7782:2: rule__RecordType__Group_2__0__Impl rule__RecordType__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__RecordType__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group_2__0"


    // $ANTLR start "rule__RecordType__Group_2__0__Impl"
    // InternalFiacre.g:7789:1: rule__RecordType__Group_2__0__Impl : ( ',' ) ;
    public final void rule__RecordType__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7793:1: ( ( ',' ) )
            // InternalFiacre.g:7794:1: ( ',' )
            {
            // InternalFiacre.g:7794:1: ( ',' )
            // InternalFiacre.g:7795:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getCommaKeyword_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getCommaKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group_2__0__Impl"


    // $ANTLR start "rule__RecordType__Group_2__1"
    // InternalFiacre.g:7804:1: rule__RecordType__Group_2__1 : rule__RecordType__Group_2__1__Impl ;
    public final void rule__RecordType__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7808:1: ( rule__RecordType__Group_2__1__Impl )
            // InternalFiacre.g:7809:2: rule__RecordType__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group_2__1"


    // $ANTLR start "rule__RecordType__Group_2__1__Impl"
    // InternalFiacre.g:7815:1: rule__RecordType__Group_2__1__Impl : ( ( rule__RecordType__FieldsAssignment_2_1 ) ) ;
    public final void rule__RecordType__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7819:1: ( ( ( rule__RecordType__FieldsAssignment_2_1 ) ) )
            // InternalFiacre.g:7820:1: ( ( rule__RecordType__FieldsAssignment_2_1 ) )
            {
            // InternalFiacre.g:7820:1: ( ( rule__RecordType__FieldsAssignment_2_1 ) )
            // InternalFiacre.g:7821:2: ( rule__RecordType__FieldsAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getFieldsAssignment_2_1()); 
            }
            // InternalFiacre.g:7822:2: ( rule__RecordType__FieldsAssignment_2_1 )
            // InternalFiacre.g:7822:3: rule__RecordType__FieldsAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordType__FieldsAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getFieldsAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__Group_2__1__Impl"


    // $ANTLR start "rule__RecordFields__Group__0"
    // InternalFiacre.g:7831:1: rule__RecordFields__Group__0 : rule__RecordFields__Group__0__Impl rule__RecordFields__Group__1 ;
    public final void rule__RecordFields__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7835:1: ( rule__RecordFields__Group__0__Impl rule__RecordFields__Group__1 )
            // InternalFiacre.g:7836:2: rule__RecordFields__Group__0__Impl rule__RecordFields__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__RecordFields__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__0"


    // $ANTLR start "rule__RecordFields__Group__0__Impl"
    // InternalFiacre.g:7843:1: rule__RecordFields__Group__0__Impl : ( ( rule__RecordFields__FieldsAssignment_0 ) ) ;
    public final void rule__RecordFields__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7847:1: ( ( ( rule__RecordFields__FieldsAssignment_0 ) ) )
            // InternalFiacre.g:7848:1: ( ( rule__RecordFields__FieldsAssignment_0 ) )
            {
            // InternalFiacre.g:7848:1: ( ( rule__RecordFields__FieldsAssignment_0 ) )
            // InternalFiacre.g:7849:2: ( rule__RecordFields__FieldsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getFieldsAssignment_0()); 
            }
            // InternalFiacre.g:7850:2: ( rule__RecordFields__FieldsAssignment_0 )
            // InternalFiacre.g:7850:3: rule__RecordFields__FieldsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__FieldsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getFieldsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__0__Impl"


    // $ANTLR start "rule__RecordFields__Group__1"
    // InternalFiacre.g:7858:1: rule__RecordFields__Group__1 : rule__RecordFields__Group__1__Impl rule__RecordFields__Group__2 ;
    public final void rule__RecordFields__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7862:1: ( rule__RecordFields__Group__1__Impl rule__RecordFields__Group__2 )
            // InternalFiacre.g:7863:2: rule__RecordFields__Group__1__Impl rule__RecordFields__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__RecordFields__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__1"


    // $ANTLR start "rule__RecordFields__Group__1__Impl"
    // InternalFiacre.g:7870:1: rule__RecordFields__Group__1__Impl : ( ( rule__RecordFields__Group_1__0 )* ) ;
    public final void rule__RecordFields__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7874:1: ( ( ( rule__RecordFields__Group_1__0 )* ) )
            // InternalFiacre.g:7875:1: ( ( rule__RecordFields__Group_1__0 )* )
            {
            // InternalFiacre.g:7875:1: ( ( rule__RecordFields__Group_1__0 )* )
            // InternalFiacre.g:7876:2: ( rule__RecordFields__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getGroup_1()); 
            }
            // InternalFiacre.g:7877:2: ( rule__RecordFields__Group_1__0 )*
            loop82:
            do {
                int alt82=2;
                int LA82_0 = input.LA(1);

                if ( (LA82_0==24) ) {
                    alt82=1;
                }


                switch (alt82) {
            	case 1 :
            	    // InternalFiacre.g:7877:3: rule__RecordFields__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__RecordFields__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop82;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__1__Impl"


    // $ANTLR start "rule__RecordFields__Group__2"
    // InternalFiacre.g:7885:1: rule__RecordFields__Group__2 : rule__RecordFields__Group__2__Impl rule__RecordFields__Group__3 ;
    public final void rule__RecordFields__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7889:1: ( rule__RecordFields__Group__2__Impl rule__RecordFields__Group__3 )
            // InternalFiacre.g:7890:2: rule__RecordFields__Group__2__Impl rule__RecordFields__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__RecordFields__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__2"


    // $ANTLR start "rule__RecordFields__Group__2__Impl"
    // InternalFiacre.g:7897:1: rule__RecordFields__Group__2__Impl : ( ':' ) ;
    public final void rule__RecordFields__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7901:1: ( ( ':' ) )
            // InternalFiacre.g:7902:1: ( ':' )
            {
            // InternalFiacre.g:7902:1: ( ':' )
            // InternalFiacre.g:7903:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__2__Impl"


    // $ANTLR start "rule__RecordFields__Group__3"
    // InternalFiacre.g:7912:1: rule__RecordFields__Group__3 : rule__RecordFields__Group__3__Impl ;
    public final void rule__RecordFields__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7916:1: ( rule__RecordFields__Group__3__Impl )
            // InternalFiacre.g:7917:2: rule__RecordFields__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__3"


    // $ANTLR start "rule__RecordFields__Group__3__Impl"
    // InternalFiacre.g:7923:1: rule__RecordFields__Group__3__Impl : ( ( rule__RecordFields__TypeAssignment_3 ) ) ;
    public final void rule__RecordFields__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7927:1: ( ( ( rule__RecordFields__TypeAssignment_3 ) ) )
            // InternalFiacre.g:7928:1: ( ( rule__RecordFields__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:7928:1: ( ( rule__RecordFields__TypeAssignment_3 ) )
            // InternalFiacre.g:7929:2: ( rule__RecordFields__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:7930:2: ( rule__RecordFields__TypeAssignment_3 )
            // InternalFiacre.g:7930:3: rule__RecordFields__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group__3__Impl"


    // $ANTLR start "rule__RecordFields__Group_1__0"
    // InternalFiacre.g:7939:1: rule__RecordFields__Group_1__0 : rule__RecordFields__Group_1__0__Impl rule__RecordFields__Group_1__1 ;
    public final void rule__RecordFields__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7943:1: ( rule__RecordFields__Group_1__0__Impl rule__RecordFields__Group_1__1 )
            // InternalFiacre.g:7944:2: rule__RecordFields__Group_1__0__Impl rule__RecordFields__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__RecordFields__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group_1__0"


    // $ANTLR start "rule__RecordFields__Group_1__0__Impl"
    // InternalFiacre.g:7951:1: rule__RecordFields__Group_1__0__Impl : ( ',' ) ;
    public final void rule__RecordFields__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7955:1: ( ( ',' ) )
            // InternalFiacre.g:7956:1: ( ',' )
            {
            // InternalFiacre.g:7956:1: ( ',' )
            // InternalFiacre.g:7957:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group_1__0__Impl"


    // $ANTLR start "rule__RecordFields__Group_1__1"
    // InternalFiacre.g:7966:1: rule__RecordFields__Group_1__1 : rule__RecordFields__Group_1__1__Impl ;
    public final void rule__RecordFields__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7970:1: ( rule__RecordFields__Group_1__1__Impl )
            // InternalFiacre.g:7971:2: rule__RecordFields__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group_1__1"


    // $ANTLR start "rule__RecordFields__Group_1__1__Impl"
    // InternalFiacre.g:7977:1: rule__RecordFields__Group_1__1__Impl : ( ( rule__RecordFields__FieldsAssignment_1_1 ) ) ;
    public final void rule__RecordFields__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7981:1: ( ( ( rule__RecordFields__FieldsAssignment_1_1 ) ) )
            // InternalFiacre.g:7982:1: ( ( rule__RecordFields__FieldsAssignment_1_1 ) )
            {
            // InternalFiacre.g:7982:1: ( ( rule__RecordFields__FieldsAssignment_1_1 ) )
            // InternalFiacre.g:7983:2: ( rule__RecordFields__FieldsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getFieldsAssignment_1_1()); 
            }
            // InternalFiacre.g:7984:2: ( rule__RecordFields__FieldsAssignment_1_1 )
            // InternalFiacre.g:7984:3: rule__RecordFields__FieldsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordFields__FieldsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getFieldsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__Group_1__1__Impl"


    // $ANTLR start "rule__QueueType__Group__0"
    // InternalFiacre.g:7993:1: rule__QueueType__Group__0 : rule__QueueType__Group__0__Impl rule__QueueType__Group__1 ;
    public final void rule__QueueType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:7997:1: ( rule__QueueType__Group__0__Impl rule__QueueType__Group__1 )
            // InternalFiacre.g:7998:2: rule__QueueType__Group__0__Impl rule__QueueType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__QueueType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__0"


    // $ANTLR start "rule__QueueType__Group__0__Impl"
    // InternalFiacre.g:8005:1: rule__QueueType__Group__0__Impl : ( 'queue' ) ;
    public final void rule__QueueType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8009:1: ( ( 'queue' ) )
            // InternalFiacre.g:8010:1: ( 'queue' )
            {
            // InternalFiacre.g:8010:1: ( 'queue' )
            // InternalFiacre.g:8011:2: 'queue'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getQueueKeyword_0()); 
            }
            match(input,38,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getQueueKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__0__Impl"


    // $ANTLR start "rule__QueueType__Group__1"
    // InternalFiacre.g:8020:1: rule__QueueType__Group__1 : rule__QueueType__Group__1__Impl rule__QueueType__Group__2 ;
    public final void rule__QueueType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8024:1: ( rule__QueueType__Group__1__Impl rule__QueueType__Group__2 )
            // InternalFiacre.g:8025:2: rule__QueueType__Group__1__Impl rule__QueueType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_24);
            rule__QueueType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__1"


    // $ANTLR start "rule__QueueType__Group__1__Impl"
    // InternalFiacre.g:8032:1: rule__QueueType__Group__1__Impl : ( ( rule__QueueType__SizeAssignment_1 ) ) ;
    public final void rule__QueueType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8036:1: ( ( ( rule__QueueType__SizeAssignment_1 ) ) )
            // InternalFiacre.g:8037:1: ( ( rule__QueueType__SizeAssignment_1 ) )
            {
            // InternalFiacre.g:8037:1: ( ( rule__QueueType__SizeAssignment_1 ) )
            // InternalFiacre.g:8038:2: ( rule__QueueType__SizeAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getSizeAssignment_1()); 
            }
            // InternalFiacre.g:8039:2: ( rule__QueueType__SizeAssignment_1 )
            // InternalFiacre.g:8039:3: rule__QueueType__SizeAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__SizeAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getSizeAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__1__Impl"


    // $ANTLR start "rule__QueueType__Group__2"
    // InternalFiacre.g:8047:1: rule__QueueType__Group__2 : rule__QueueType__Group__2__Impl rule__QueueType__Group__3 ;
    public final void rule__QueueType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8051:1: ( rule__QueueType__Group__2__Impl rule__QueueType__Group__3 )
            // InternalFiacre.g:8052:2: rule__QueueType__Group__2__Impl rule__QueueType__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__QueueType__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__2"


    // $ANTLR start "rule__QueueType__Group__2__Impl"
    // InternalFiacre.g:8059:1: rule__QueueType__Group__2__Impl : ( 'of' ) ;
    public final void rule__QueueType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8063:1: ( ( 'of' ) )
            // InternalFiacre.g:8064:1: ( 'of' )
            {
            // InternalFiacre.g:8064:1: ( 'of' )
            // InternalFiacre.g:8065:2: 'of'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getOfKeyword_2()); 
            }
            match(input,29,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getOfKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__2__Impl"


    // $ANTLR start "rule__QueueType__Group__3"
    // InternalFiacre.g:8074:1: rule__QueueType__Group__3 : rule__QueueType__Group__3__Impl ;
    public final void rule__QueueType__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8078:1: ( rule__QueueType__Group__3__Impl )
            // InternalFiacre.g:8079:2: rule__QueueType__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__3"


    // $ANTLR start "rule__QueueType__Group__3__Impl"
    // InternalFiacre.g:8085:1: rule__QueueType__Group__3__Impl : ( ( rule__QueueType__TypeAssignment_3 ) ) ;
    public final void rule__QueueType__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8089:1: ( ( ( rule__QueueType__TypeAssignment_3 ) ) )
            // InternalFiacre.g:8090:1: ( ( rule__QueueType__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:8090:1: ( ( rule__QueueType__TypeAssignment_3 ) )
            // InternalFiacre.g:8091:2: ( rule__QueueType__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:8092:2: ( rule__QueueType__TypeAssignment_3 )
            // InternalFiacre.g:8092:3: rule__QueueType__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueType__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__Group__3__Impl"


    // $ANTLR start "rule__ArrayType__Group__0"
    // InternalFiacre.g:8101:1: rule__ArrayType__Group__0 : rule__ArrayType__Group__0__Impl rule__ArrayType__Group__1 ;
    public final void rule__ArrayType__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8105:1: ( rule__ArrayType__Group__0__Impl rule__ArrayType__Group__1 )
            // InternalFiacre.g:8106:2: rule__ArrayType__Group__0__Impl rule__ArrayType__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ArrayType__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__0"


    // $ANTLR start "rule__ArrayType__Group__0__Impl"
    // InternalFiacre.g:8113:1: rule__ArrayType__Group__0__Impl : ( 'array' ) ;
    public final void rule__ArrayType__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8117:1: ( ( 'array' ) )
            // InternalFiacre.g:8118:1: ( 'array' )
            {
            // InternalFiacre.g:8118:1: ( 'array' )
            // InternalFiacre.g:8119:2: 'array'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getArrayKeyword_0()); 
            }
            match(input,28,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getArrayKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__0__Impl"


    // $ANTLR start "rule__ArrayType__Group__1"
    // InternalFiacre.g:8128:1: rule__ArrayType__Group__1 : rule__ArrayType__Group__1__Impl rule__ArrayType__Group__2 ;
    public final void rule__ArrayType__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8132:1: ( rule__ArrayType__Group__1__Impl rule__ArrayType__Group__2 )
            // InternalFiacre.g:8133:2: rule__ArrayType__Group__1__Impl rule__ArrayType__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_24);
            rule__ArrayType__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__1"


    // $ANTLR start "rule__ArrayType__Group__1__Impl"
    // InternalFiacre.g:8140:1: rule__ArrayType__Group__1__Impl : ( ( rule__ArrayType__SizeAssignment_1 ) ) ;
    public final void rule__ArrayType__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8144:1: ( ( ( rule__ArrayType__SizeAssignment_1 ) ) )
            // InternalFiacre.g:8145:1: ( ( rule__ArrayType__SizeAssignment_1 ) )
            {
            // InternalFiacre.g:8145:1: ( ( rule__ArrayType__SizeAssignment_1 ) )
            // InternalFiacre.g:8146:2: ( rule__ArrayType__SizeAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getSizeAssignment_1()); 
            }
            // InternalFiacre.g:8147:2: ( rule__ArrayType__SizeAssignment_1 )
            // InternalFiacre.g:8147:3: rule__ArrayType__SizeAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__SizeAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getSizeAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__1__Impl"


    // $ANTLR start "rule__ArrayType__Group__2"
    // InternalFiacre.g:8155:1: rule__ArrayType__Group__2 : rule__ArrayType__Group__2__Impl rule__ArrayType__Group__3 ;
    public final void rule__ArrayType__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8159:1: ( rule__ArrayType__Group__2__Impl rule__ArrayType__Group__3 )
            // InternalFiacre.g:8160:2: rule__ArrayType__Group__2__Impl rule__ArrayType__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__ArrayType__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__2"


    // $ANTLR start "rule__ArrayType__Group__2__Impl"
    // InternalFiacre.g:8167:1: rule__ArrayType__Group__2__Impl : ( 'of' ) ;
    public final void rule__ArrayType__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8171:1: ( ( 'of' ) )
            // InternalFiacre.g:8172:1: ( 'of' )
            {
            // InternalFiacre.g:8172:1: ( 'of' )
            // InternalFiacre.g:8173:2: 'of'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getOfKeyword_2()); 
            }
            match(input,29,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getOfKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__2__Impl"


    // $ANTLR start "rule__ArrayType__Group__3"
    // InternalFiacre.g:8182:1: rule__ArrayType__Group__3 : rule__ArrayType__Group__3__Impl ;
    public final void rule__ArrayType__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8186:1: ( rule__ArrayType__Group__3__Impl )
            // InternalFiacre.g:8187:2: rule__ArrayType__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__3"


    // $ANTLR start "rule__ArrayType__Group__3__Impl"
    // InternalFiacre.g:8193:1: rule__ArrayType__Group__3__Impl : ( ( rule__ArrayType__TypeAssignment_3 ) ) ;
    public final void rule__ArrayType__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8197:1: ( ( ( rule__ArrayType__TypeAssignment_3 ) ) )
            // InternalFiacre.g:8198:1: ( ( rule__ArrayType__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:8198:1: ( ( rule__ArrayType__TypeAssignment_3 ) )
            // InternalFiacre.g:8199:2: ( rule__ArrayType__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:8200:2: ( rule__ArrayType__TypeAssignment_3 )
            // InternalFiacre.g:8200:3: rule__ArrayType__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayType__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__Group__3__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__0"
    // InternalFiacre.g:8209:1: rule__ConstantDeclaration__Group__0 : rule__ConstantDeclaration__Group__0__Impl rule__ConstantDeclaration__Group__1 ;
    public final void rule__ConstantDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8213:1: ( rule__ConstantDeclaration__Group__0__Impl rule__ConstantDeclaration__Group__1 )
            // InternalFiacre.g:8214:2: rule__ConstantDeclaration__Group__0__Impl rule__ConstantDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ConstantDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__0"


    // $ANTLR start "rule__ConstantDeclaration__Group__0__Impl"
    // InternalFiacre.g:8221:1: rule__ConstantDeclaration__Group__0__Impl : ( 'const' ) ;
    public final void rule__ConstantDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8225:1: ( ( 'const' ) )
            // InternalFiacre.g:8226:1: ( 'const' )
            {
            // InternalFiacre.g:8226:1: ( 'const' )
            // InternalFiacre.g:8227:2: 'const'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getConstKeyword_0()); 
            }
            match(input,39,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getConstKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__1"
    // InternalFiacre.g:8236:1: rule__ConstantDeclaration__Group__1 : rule__ConstantDeclaration__Group__1__Impl rule__ConstantDeclaration__Group__2 ;
    public final void rule__ConstantDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8240:1: ( rule__ConstantDeclaration__Group__1__Impl rule__ConstantDeclaration__Group__2 )
            // InternalFiacre.g:8241:2: rule__ConstantDeclaration__Group__1__Impl rule__ConstantDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_14);
            rule__ConstantDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__1"


    // $ANTLR start "rule__ConstantDeclaration__Group__1__Impl"
    // InternalFiacre.g:8248:1: rule__ConstantDeclaration__Group__1__Impl : ( ( rule__ConstantDeclaration__NameAssignment_1 ) ) ;
    public final void rule__ConstantDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8252:1: ( ( ( rule__ConstantDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:8253:1: ( ( rule__ConstantDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:8253:1: ( ( rule__ConstantDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:8254:2: ( rule__ConstantDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:8255:2: ( rule__ConstantDeclaration__NameAssignment_1 )
            // InternalFiacre.g:8255:3: rule__ConstantDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__2"
    // InternalFiacre.g:8263:1: rule__ConstantDeclaration__Group__2 : rule__ConstantDeclaration__Group__2__Impl rule__ConstantDeclaration__Group__3 ;
    public final void rule__ConstantDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8267:1: ( rule__ConstantDeclaration__Group__2__Impl rule__ConstantDeclaration__Group__3 )
            // InternalFiacre.g:8268:2: rule__ConstantDeclaration__Group__2__Impl rule__ConstantDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__ConstantDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__2"


    // $ANTLR start "rule__ConstantDeclaration__Group__2__Impl"
    // InternalFiacre.g:8275:1: rule__ConstantDeclaration__Group__2__Impl : ( ':' ) ;
    public final void rule__ConstantDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8279:1: ( ( ':' ) )
            // InternalFiacre.g:8280:1: ( ':' )
            {
            // InternalFiacre.g:8280:1: ( ':' )
            // InternalFiacre.g:8281:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__2__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__3"
    // InternalFiacre.g:8290:1: rule__ConstantDeclaration__Group__3 : rule__ConstantDeclaration__Group__3__Impl rule__ConstantDeclaration__Group__4 ;
    public final void rule__ConstantDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8294:1: ( rule__ConstantDeclaration__Group__3__Impl rule__ConstantDeclaration__Group__4 )
            // InternalFiacre.g:8295:2: rule__ConstantDeclaration__Group__3__Impl rule__ConstantDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_16);
            rule__ConstantDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__3"


    // $ANTLR start "rule__ConstantDeclaration__Group__3__Impl"
    // InternalFiacre.g:8302:1: rule__ConstantDeclaration__Group__3__Impl : ( ( rule__ConstantDeclaration__TypeAssignment_3 ) ) ;
    public final void rule__ConstantDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8306:1: ( ( ( rule__ConstantDeclaration__TypeAssignment_3 ) ) )
            // InternalFiacre.g:8307:1: ( ( rule__ConstantDeclaration__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:8307:1: ( ( rule__ConstantDeclaration__TypeAssignment_3 ) )
            // InternalFiacre.g:8308:2: ( rule__ConstantDeclaration__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:8309:2: ( rule__ConstantDeclaration__TypeAssignment_3 )
            // InternalFiacre.g:8309:3: rule__ConstantDeclaration__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__4"
    // InternalFiacre.g:8317:1: rule__ConstantDeclaration__Group__4 : rule__ConstantDeclaration__Group__4__Impl rule__ConstantDeclaration__Group__5 ;
    public final void rule__ConstantDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8321:1: ( rule__ConstantDeclaration__Group__4__Impl rule__ConstantDeclaration__Group__5 )
            // InternalFiacre.g:8322:2: rule__ConstantDeclaration__Group__4__Impl rule__ConstantDeclaration__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ConstantDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__4"


    // $ANTLR start "rule__ConstantDeclaration__Group__4__Impl"
    // InternalFiacre.g:8329:1: rule__ConstantDeclaration__Group__4__Impl : ( 'is' ) ;
    public final void rule__ConstantDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8333:1: ( ( 'is' ) )
            // InternalFiacre.g:8334:1: ( 'is' )
            {
            // InternalFiacre.g:8334:1: ( 'is' )
            // InternalFiacre.g:8335:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getIsKeyword_4()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getIsKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__4__Impl"


    // $ANTLR start "rule__ConstantDeclaration__Group__5"
    // InternalFiacre.g:8344:1: rule__ConstantDeclaration__Group__5 : rule__ConstantDeclaration__Group__5__Impl ;
    public final void rule__ConstantDeclaration__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8348:1: ( rule__ConstantDeclaration__Group__5__Impl )
            // InternalFiacre.g:8349:2: rule__ConstantDeclaration__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__5"


    // $ANTLR start "rule__ConstantDeclaration__Group__5__Impl"
    // InternalFiacre.g:8355:1: rule__ConstantDeclaration__Group__5__Impl : ( ( rule__ConstantDeclaration__ValueAssignment_5 ) ) ;
    public final void rule__ConstantDeclaration__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8359:1: ( ( ( rule__ConstantDeclaration__ValueAssignment_5 ) ) )
            // InternalFiacre.g:8360:1: ( ( rule__ConstantDeclaration__ValueAssignment_5 ) )
            {
            // InternalFiacre.g:8360:1: ( ( rule__ConstantDeclaration__ValueAssignment_5 ) )
            // InternalFiacre.g:8361:2: ( rule__ConstantDeclaration__ValueAssignment_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getValueAssignment_5()); 
            }
            // InternalFiacre.g:8362:2: ( rule__ConstantDeclaration__ValueAssignment_5 )
            // InternalFiacre.g:8362:3: rule__ConstantDeclaration__ValueAssignment_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConstantDeclaration__ValueAssignment_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getValueAssignment_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__Group__5__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__0"
    // InternalFiacre.g:8371:1: rule__ProcessDeclaration__Group__0 : rule__ProcessDeclaration__Group__0__Impl rule__ProcessDeclaration__Group__1 ;
    public final void rule__ProcessDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8375:1: ( rule__ProcessDeclaration__Group__0__Impl rule__ProcessDeclaration__Group__1 )
            // InternalFiacre.g:8376:2: rule__ProcessDeclaration__Group__0__Impl rule__ProcessDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__0"


    // $ANTLR start "rule__ProcessDeclaration__Group__0__Impl"
    // InternalFiacre.g:8383:1: rule__ProcessDeclaration__Group__0__Impl : ( 'process' ) ;
    public final void rule__ProcessDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8387:1: ( ( 'process' ) )
            // InternalFiacre.g:8388:1: ( 'process' )
            {
            // InternalFiacre.g:8388:1: ( 'process' )
            // InternalFiacre.g:8389:2: 'process'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getProcessKeyword_0()); 
            }
            match(input,40,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getProcessKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__1"
    // InternalFiacre.g:8398:1: rule__ProcessDeclaration__Group__1 : rule__ProcessDeclaration__Group__1__Impl rule__ProcessDeclaration__Group__2 ;
    public final void rule__ProcessDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8402:1: ( rule__ProcessDeclaration__Group__1__Impl rule__ProcessDeclaration__Group__2 )
            // InternalFiacre.g:8403:2: rule__ProcessDeclaration__Group__1__Impl rule__ProcessDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ProcessDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__1"


    // $ANTLR start "rule__ProcessDeclaration__Group__1__Impl"
    // InternalFiacre.g:8410:1: rule__ProcessDeclaration__Group__1__Impl : ( ( rule__ProcessDeclaration__NameAssignment_1 ) ) ;
    public final void rule__ProcessDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8414:1: ( ( ( rule__ProcessDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:8415:1: ( ( rule__ProcessDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:8415:1: ( ( rule__ProcessDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:8416:2: ( rule__ProcessDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:8417:2: ( rule__ProcessDeclaration__NameAssignment_1 )
            // InternalFiacre.g:8417:3: rule__ProcessDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__2"
    // InternalFiacre.g:8425:1: rule__ProcessDeclaration__Group__2 : rule__ProcessDeclaration__Group__2__Impl rule__ProcessDeclaration__Group__3 ;
    public final void rule__ProcessDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8429:1: ( rule__ProcessDeclaration__Group__2__Impl rule__ProcessDeclaration__Group__3 )
            // InternalFiacre.g:8430:2: rule__ProcessDeclaration__Group__2__Impl rule__ProcessDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ProcessDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__2"


    // $ANTLR start "rule__ProcessDeclaration__Group__2__Impl"
    // InternalFiacre.g:8437:1: rule__ProcessDeclaration__Group__2__Impl : ( ( rule__ProcessDeclaration__Group_2__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8441:1: ( ( ( rule__ProcessDeclaration__Group_2__0 )? ) )
            // InternalFiacre.g:8442:1: ( ( rule__ProcessDeclaration__Group_2__0 )? )
            {
            // InternalFiacre.g:8442:1: ( ( rule__ProcessDeclaration__Group_2__0 )? )
            // InternalFiacre.g:8443:2: ( rule__ProcessDeclaration__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_2()); 
            }
            // InternalFiacre.g:8444:2: ( rule__ProcessDeclaration__Group_2__0 )?
            int alt83=2;
            int LA83_0 = input.LA(1);

            if ( (LA83_0==42) ) {
                alt83=1;
            }
            switch (alt83) {
                case 1 :
                    // InternalFiacre.g:8444:3: rule__ProcessDeclaration__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__3"
    // InternalFiacre.g:8452:1: rule__ProcessDeclaration__Group__3 : rule__ProcessDeclaration__Group__3__Impl rule__ProcessDeclaration__Group__4 ;
    public final void rule__ProcessDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8456:1: ( rule__ProcessDeclaration__Group__3__Impl rule__ProcessDeclaration__Group__4 )
            // InternalFiacre.g:8457:2: rule__ProcessDeclaration__Group__3__Impl rule__ProcessDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ProcessDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__3"


    // $ANTLR start "rule__ProcessDeclaration__Group__3__Impl"
    // InternalFiacre.g:8464:1: rule__ProcessDeclaration__Group__3__Impl : ( ( rule__ProcessDeclaration__Group_3__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8468:1: ( ( ( rule__ProcessDeclaration__Group_3__0 )? ) )
            // InternalFiacre.g:8469:1: ( ( rule__ProcessDeclaration__Group_3__0 )? )
            {
            // InternalFiacre.g:8469:1: ( ( rule__ProcessDeclaration__Group_3__0 )? )
            // InternalFiacre.g:8470:2: ( rule__ProcessDeclaration__Group_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_3()); 
            }
            // InternalFiacre.g:8471:2: ( rule__ProcessDeclaration__Group_3__0 )?
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( (LA84_0==22) ) {
                alt84=1;
            }
            switch (alt84) {
                case 1 :
                    // InternalFiacre.g:8471:3: rule__ProcessDeclaration__Group_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__4"
    // InternalFiacre.g:8479:1: rule__ProcessDeclaration__Group__4 : rule__ProcessDeclaration__Group__4__Impl rule__ProcessDeclaration__Group__5 ;
    public final void rule__ProcessDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8483:1: ( rule__ProcessDeclaration__Group__4__Impl rule__ProcessDeclaration__Group__5 )
            // InternalFiacre.g:8484:2: rule__ProcessDeclaration__Group__4__Impl rule__ProcessDeclaration__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_40);
            rule__ProcessDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__4"


    // $ANTLR start "rule__ProcessDeclaration__Group__4__Impl"
    // InternalFiacre.g:8491:1: rule__ProcessDeclaration__Group__4__Impl : ( 'is' ) ;
    public final void rule__ProcessDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8495:1: ( ( 'is' ) )
            // InternalFiacre.g:8496:1: ( 'is' )
            {
            // InternalFiacre.g:8496:1: ( 'is' )
            // InternalFiacre.g:8497:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getIsKeyword_4()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getIsKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__4__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__5"
    // InternalFiacre.g:8506:1: rule__ProcessDeclaration__Group__5 : rule__ProcessDeclaration__Group__5__Impl rule__ProcessDeclaration__Group__6 ;
    public final void rule__ProcessDeclaration__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8510:1: ( rule__ProcessDeclaration__Group__5__Impl rule__ProcessDeclaration__Group__6 )
            // InternalFiacre.g:8511:2: rule__ProcessDeclaration__Group__5__Impl rule__ProcessDeclaration__Group__6
            {
            pushFollow(FollowSets000.FOLLOW_40);
            rule__ProcessDeclaration__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__5"


    // $ANTLR start "rule__ProcessDeclaration__Group__5__Impl"
    // InternalFiacre.g:8518:1: rule__ProcessDeclaration__Group__5__Impl : ( ( rule__ProcessDeclaration__Group_5__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8522:1: ( ( ( rule__ProcessDeclaration__Group_5__0 )? ) )
            // InternalFiacre.g:8523:1: ( ( rule__ProcessDeclaration__Group_5__0 )? )
            {
            // InternalFiacre.g:8523:1: ( ( rule__ProcessDeclaration__Group_5__0 )? )
            // InternalFiacre.g:8524:2: ( rule__ProcessDeclaration__Group_5__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_5()); 
            }
            // InternalFiacre.g:8525:2: ( rule__ProcessDeclaration__Group_5__0 )?
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==44) ) {
                alt85=1;
            }
            switch (alt85) {
                case 1 :
                    // InternalFiacre.g:8525:3: rule__ProcessDeclaration__Group_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_5__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__5__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__6"
    // InternalFiacre.g:8533:1: rule__ProcessDeclaration__Group__6 : rule__ProcessDeclaration__Group__6__Impl rule__ProcessDeclaration__Group__7 ;
    public final void rule__ProcessDeclaration__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8537:1: ( rule__ProcessDeclaration__Group__6__Impl rule__ProcessDeclaration__Group__7 )
            // InternalFiacre.g:8538:2: rule__ProcessDeclaration__Group__6__Impl rule__ProcessDeclaration__Group__7
            {
            pushFollow(FollowSets000.FOLLOW_40);
            rule__ProcessDeclaration__Group__6__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__7();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__6"


    // $ANTLR start "rule__ProcessDeclaration__Group__6__Impl"
    // InternalFiacre.g:8545:1: rule__ProcessDeclaration__Group__6__Impl : ( ( rule__ProcessDeclaration__Group_6__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8549:1: ( ( ( rule__ProcessDeclaration__Group_6__0 )? ) )
            // InternalFiacre.g:8550:1: ( ( rule__ProcessDeclaration__Group_6__0 )? )
            {
            // InternalFiacre.g:8550:1: ( ( rule__ProcessDeclaration__Group_6__0 )? )
            // InternalFiacre.g:8551:2: ( rule__ProcessDeclaration__Group_6__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_6()); 
            }
            // InternalFiacre.g:8552:2: ( rule__ProcessDeclaration__Group_6__0 )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==45) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // InternalFiacre.g:8552:3: rule__ProcessDeclaration__Group_6__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_6__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__6__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__7"
    // InternalFiacre.g:8560:1: rule__ProcessDeclaration__Group__7 : rule__ProcessDeclaration__Group__7__Impl rule__ProcessDeclaration__Group__8 ;
    public final void rule__ProcessDeclaration__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8564:1: ( rule__ProcessDeclaration__Group__7__Impl rule__ProcessDeclaration__Group__8 )
            // InternalFiacre.g:8565:2: rule__ProcessDeclaration__Group__7__Impl rule__ProcessDeclaration__Group__8
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group__7__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__8();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__7"


    // $ANTLR start "rule__ProcessDeclaration__Group__7__Impl"
    // InternalFiacre.g:8572:1: rule__ProcessDeclaration__Group__7__Impl : ( 'states' ) ;
    public final void rule__ProcessDeclaration__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8576:1: ( ( 'states' ) )
            // InternalFiacre.g:8577:1: ( 'states' )
            {
            // InternalFiacre.g:8577:1: ( 'states' )
            // InternalFiacre.g:8578:2: 'states'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getStatesKeyword_7()); 
            }
            match(input,41,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getStatesKeyword_7()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__7__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__8"
    // InternalFiacre.g:8587:1: rule__ProcessDeclaration__Group__8 : rule__ProcessDeclaration__Group__8__Impl rule__ProcessDeclaration__Group__9 ;
    public final void rule__ProcessDeclaration__Group__8() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8591:1: ( rule__ProcessDeclaration__Group__8__Impl rule__ProcessDeclaration__Group__9 )
            // InternalFiacre.g:8592:2: rule__ProcessDeclaration__Group__8__Impl rule__ProcessDeclaration__Group__9
            {
            pushFollow(FollowSets000.FOLLOW_41);
            rule__ProcessDeclaration__Group__8__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__9();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__8"


    // $ANTLR start "rule__ProcessDeclaration__Group__8__Impl"
    // InternalFiacre.g:8599:1: rule__ProcessDeclaration__Group__8__Impl : ( ( rule__ProcessDeclaration__StatesAssignment_8 ) ) ;
    public final void rule__ProcessDeclaration__Group__8__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8603:1: ( ( ( rule__ProcessDeclaration__StatesAssignment_8 ) ) )
            // InternalFiacre.g:8604:1: ( ( rule__ProcessDeclaration__StatesAssignment_8 ) )
            {
            // InternalFiacre.g:8604:1: ( ( rule__ProcessDeclaration__StatesAssignment_8 ) )
            // InternalFiacre.g:8605:2: ( rule__ProcessDeclaration__StatesAssignment_8 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getStatesAssignment_8()); 
            }
            // InternalFiacre.g:8606:2: ( rule__ProcessDeclaration__StatesAssignment_8 )
            // InternalFiacre.g:8606:3: rule__ProcessDeclaration__StatesAssignment_8
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__StatesAssignment_8();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getStatesAssignment_8()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__8__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__9"
    // InternalFiacre.g:8614:1: rule__ProcessDeclaration__Group__9 : rule__ProcessDeclaration__Group__9__Impl rule__ProcessDeclaration__Group__10 ;
    public final void rule__ProcessDeclaration__Group__9() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8618:1: ( rule__ProcessDeclaration__Group__9__Impl rule__ProcessDeclaration__Group__10 )
            // InternalFiacre.g:8619:2: rule__ProcessDeclaration__Group__9__Impl rule__ProcessDeclaration__Group__10
            {
            pushFollow(FollowSets000.FOLLOW_41);
            rule__ProcessDeclaration__Group__9__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__10();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__9"


    // $ANTLR start "rule__ProcessDeclaration__Group__9__Impl"
    // InternalFiacre.g:8626:1: rule__ProcessDeclaration__Group__9__Impl : ( ( rule__ProcessDeclaration__Group_9__0 )* ) ;
    public final void rule__ProcessDeclaration__Group__9__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8630:1: ( ( ( rule__ProcessDeclaration__Group_9__0 )* ) )
            // InternalFiacre.g:8631:1: ( ( rule__ProcessDeclaration__Group_9__0 )* )
            {
            // InternalFiacre.g:8631:1: ( ( rule__ProcessDeclaration__Group_9__0 )* )
            // InternalFiacre.g:8632:2: ( rule__ProcessDeclaration__Group_9__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_9()); 
            }
            // InternalFiacre.g:8633:2: ( rule__ProcessDeclaration__Group_9__0 )*
            loop87:
            do {
                int alt87=2;
                int LA87_0 = input.LA(1);

                if ( (LA87_0==24) ) {
                    alt87=1;
                }


                switch (alt87) {
            	case 1 :
            	    // InternalFiacre.g:8633:3: rule__ProcessDeclaration__Group_9__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_9__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop87;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_9()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__9__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__10"
    // InternalFiacre.g:8641:1: rule__ProcessDeclaration__Group__10 : rule__ProcessDeclaration__Group__10__Impl rule__ProcessDeclaration__Group__11 ;
    public final void rule__ProcessDeclaration__Group__10() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8645:1: ( rule__ProcessDeclaration__Group__10__Impl rule__ProcessDeclaration__Group__11 )
            // InternalFiacre.g:8646:2: rule__ProcessDeclaration__Group__10__Impl rule__ProcessDeclaration__Group__11
            {
            pushFollow(FollowSets000.FOLLOW_41);
            rule__ProcessDeclaration__Group__10__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__11();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__10"


    // $ANTLR start "rule__ProcessDeclaration__Group__10__Impl"
    // InternalFiacre.g:8653:1: rule__ProcessDeclaration__Group__10__Impl : ( ( rule__ProcessDeclaration__Group_10__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__10__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8657:1: ( ( ( rule__ProcessDeclaration__Group_10__0 )? ) )
            // InternalFiacre.g:8658:1: ( ( rule__ProcessDeclaration__Group_10__0 )? )
            {
            // InternalFiacre.g:8658:1: ( ( rule__ProcessDeclaration__Group_10__0 )? )
            // InternalFiacre.g:8659:2: ( rule__ProcessDeclaration__Group_10__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_10()); 
            }
            // InternalFiacre.g:8660:2: ( rule__ProcessDeclaration__Group_10__0 )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==25) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // InternalFiacre.g:8660:3: rule__ProcessDeclaration__Group_10__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_10__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_10()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__10__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__11"
    // InternalFiacre.g:8668:1: rule__ProcessDeclaration__Group__11 : rule__ProcessDeclaration__Group__11__Impl rule__ProcessDeclaration__Group__12 ;
    public final void rule__ProcessDeclaration__Group__11() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8672:1: ( rule__ProcessDeclaration__Group__11__Impl rule__ProcessDeclaration__Group__12 )
            // InternalFiacre.g:8673:2: rule__ProcessDeclaration__Group__11__Impl rule__ProcessDeclaration__Group__12
            {
            pushFollow(FollowSets000.FOLLOW_41);
            rule__ProcessDeclaration__Group__11__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__12();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__11"


    // $ANTLR start "rule__ProcessDeclaration__Group__11__Impl"
    // InternalFiacre.g:8680:1: rule__ProcessDeclaration__Group__11__Impl : ( ( rule__ProcessDeclaration__Group_11__0 )? ) ;
    public final void rule__ProcessDeclaration__Group__11__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8684:1: ( ( ( rule__ProcessDeclaration__Group_11__0 )? ) )
            // InternalFiacre.g:8685:1: ( ( rule__ProcessDeclaration__Group_11__0 )? )
            {
            // InternalFiacre.g:8685:1: ( ( rule__ProcessDeclaration__Group_11__0 )? )
            // InternalFiacre.g:8686:2: ( rule__ProcessDeclaration__Group_11__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_11()); 
            }
            // InternalFiacre.g:8687:2: ( rule__ProcessDeclaration__Group_11__0 )?
            int alt89=2;
            int LA89_0 = input.LA(1);

            if ( (LA89_0==46) ) {
                alt89=1;
            }
            switch (alt89) {
                case 1 :
                    // InternalFiacre.g:8687:3: rule__ProcessDeclaration__Group_11__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ProcessDeclaration__Group_11__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_11()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__11__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group__12"
    // InternalFiacre.g:8695:1: rule__ProcessDeclaration__Group__12 : rule__ProcessDeclaration__Group__12__Impl ;
    public final void rule__ProcessDeclaration__Group__12() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8699:1: ( rule__ProcessDeclaration__Group__12__Impl )
            // InternalFiacre.g:8700:2: rule__ProcessDeclaration__Group__12__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group__12__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__12"


    // $ANTLR start "rule__ProcessDeclaration__Group__12__Impl"
    // InternalFiacre.g:8706:1: rule__ProcessDeclaration__Group__12__Impl : ( ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) ) ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* ) ) ;
    public final void rule__ProcessDeclaration__Group__12__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8710:1: ( ( ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) ) ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* ) ) )
            // InternalFiacre.g:8711:1: ( ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) ) ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* ) )
            {
            // InternalFiacre.g:8711:1: ( ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) ) ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* ) )
            // InternalFiacre.g:8712:2: ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) ) ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* )
            {
            // InternalFiacre.g:8712:2: ( ( rule__ProcessDeclaration__TransitionsAssignment_12 ) )
            // InternalFiacre.g:8713:3: ( rule__ProcessDeclaration__TransitionsAssignment_12 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getTransitionsAssignment_12()); 
            }
            // InternalFiacre.g:8714:3: ( rule__ProcessDeclaration__TransitionsAssignment_12 )
            // InternalFiacre.g:8714:4: rule__ProcessDeclaration__TransitionsAssignment_12
            {
            pushFollow(FollowSets000.FOLLOW_42);
            rule__ProcessDeclaration__TransitionsAssignment_12();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getTransitionsAssignment_12()); 
            }

            }

            // InternalFiacre.g:8717:2: ( ( rule__ProcessDeclaration__TransitionsAssignment_12 )* )
            // InternalFiacre.g:8718:3: ( rule__ProcessDeclaration__TransitionsAssignment_12 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getTransitionsAssignment_12()); 
            }
            // InternalFiacre.g:8719:3: ( rule__ProcessDeclaration__TransitionsAssignment_12 )*
            loop90:
            do {
                int alt90=2;
                int LA90_0 = input.LA(1);

                if ( (LA90_0==47) ) {
                    alt90=1;
                }


                switch (alt90) {
            	case 1 :
            	    // InternalFiacre.g:8719:4: rule__ProcessDeclaration__TransitionsAssignment_12
            	    {
            	    pushFollow(FollowSets000.FOLLOW_42);
            	    rule__ProcessDeclaration__TransitionsAssignment_12();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop90;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getTransitionsAssignment_12()); 
            }

            }


            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group__12__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__0"
    // InternalFiacre.g:8729:1: rule__ProcessDeclaration__Group_2__0 : rule__ProcessDeclaration__Group_2__0__Impl rule__ProcessDeclaration__Group_2__1 ;
    public final void rule__ProcessDeclaration__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8733:1: ( rule__ProcessDeclaration__Group_2__0__Impl rule__ProcessDeclaration__Group_2__1 )
            // InternalFiacre.g:8734:2: rule__ProcessDeclaration__Group_2__0__Impl rule__ProcessDeclaration__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__0__Impl"
    // InternalFiacre.g:8741:1: rule__ProcessDeclaration__Group_2__0__Impl : ( '[' ) ;
    public final void rule__ProcessDeclaration__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8745:1: ( ( '[' ) )
            // InternalFiacre.g:8746:1: ( '[' )
            {
            // InternalFiacre.g:8746:1: ( '[' )
            // InternalFiacre.g:8747:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLeftSquareBracketKeyword_2_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLeftSquareBracketKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__1"
    // InternalFiacre.g:8756:1: rule__ProcessDeclaration__Group_2__1 : rule__ProcessDeclaration__Group_2__1__Impl rule__ProcessDeclaration__Group_2__2 ;
    public final void rule__ProcessDeclaration__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8760:1: ( rule__ProcessDeclaration__Group_2__1__Impl rule__ProcessDeclaration__Group_2__2 )
            // InternalFiacre.g:8761:2: rule__ProcessDeclaration__Group_2__1__Impl rule__ProcessDeclaration__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ProcessDeclaration__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__1__Impl"
    // InternalFiacre.g:8768:1: rule__ProcessDeclaration__Group_2__1__Impl : ( ( rule__ProcessDeclaration__PortsAssignment_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8772:1: ( ( ( rule__ProcessDeclaration__PortsAssignment_2_1 ) ) )
            // InternalFiacre.g:8773:1: ( ( rule__ProcessDeclaration__PortsAssignment_2_1 ) )
            {
            // InternalFiacre.g:8773:1: ( ( rule__ProcessDeclaration__PortsAssignment_2_1 ) )
            // InternalFiacre.g:8774:2: ( rule__ProcessDeclaration__PortsAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPortsAssignment_2_1()); 
            }
            // InternalFiacre.g:8775:2: ( rule__ProcessDeclaration__PortsAssignment_2_1 )
            // InternalFiacre.g:8775:3: rule__ProcessDeclaration__PortsAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__PortsAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPortsAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__2"
    // InternalFiacre.g:8783:1: rule__ProcessDeclaration__Group_2__2 : rule__ProcessDeclaration__Group_2__2__Impl rule__ProcessDeclaration__Group_2__3 ;
    public final void rule__ProcessDeclaration__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8787:1: ( rule__ProcessDeclaration__Group_2__2__Impl rule__ProcessDeclaration__Group_2__3 )
            // InternalFiacre.g:8788:2: rule__ProcessDeclaration__Group_2__2__Impl rule__ProcessDeclaration__Group_2__3
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ProcessDeclaration__Group_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__2"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__2__Impl"
    // InternalFiacre.g:8795:1: rule__ProcessDeclaration__Group_2__2__Impl : ( ( rule__ProcessDeclaration__Group_2_2__0 )* ) ;
    public final void rule__ProcessDeclaration__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8799:1: ( ( ( rule__ProcessDeclaration__Group_2_2__0 )* ) )
            // InternalFiacre.g:8800:1: ( ( rule__ProcessDeclaration__Group_2_2__0 )* )
            {
            // InternalFiacre.g:8800:1: ( ( rule__ProcessDeclaration__Group_2_2__0 )* )
            // InternalFiacre.g:8801:2: ( rule__ProcessDeclaration__Group_2_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_2_2()); 
            }
            // InternalFiacre.g:8802:2: ( rule__ProcessDeclaration__Group_2_2__0 )*
            loop91:
            do {
                int alt91=2;
                int LA91_0 = input.LA(1);

                if ( (LA91_0==24) ) {
                    alt91=1;
                }


                switch (alt91) {
            	case 1 :
            	    // InternalFiacre.g:8802:3: rule__ProcessDeclaration__Group_2_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_2_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop91;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__3"
    // InternalFiacre.g:8810:1: rule__ProcessDeclaration__Group_2__3 : rule__ProcessDeclaration__Group_2__3__Impl ;
    public final void rule__ProcessDeclaration__Group_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8814:1: ( rule__ProcessDeclaration__Group_2__3__Impl )
            // InternalFiacre.g:8815:2: rule__ProcessDeclaration__Group_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__3"


    // $ANTLR start "rule__ProcessDeclaration__Group_2__3__Impl"
    // InternalFiacre.g:8821:1: rule__ProcessDeclaration__Group_2__3__Impl : ( ']' ) ;
    public final void rule__ProcessDeclaration__Group_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8825:1: ( ( ']' ) )
            // InternalFiacre.g:8826:1: ( ']' )
            {
            // InternalFiacre.g:8826:1: ( ']' )
            // InternalFiacre.g:8827:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getRightSquareBracketKeyword_2_3()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getRightSquareBracketKeyword_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2__3__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2_2__0"
    // InternalFiacre.g:8837:1: rule__ProcessDeclaration__Group_2_2__0 : rule__ProcessDeclaration__Group_2_2__0__Impl rule__ProcessDeclaration__Group_2_2__1 ;
    public final void rule__ProcessDeclaration__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8841:1: ( rule__ProcessDeclaration__Group_2_2__0__Impl rule__ProcessDeclaration__Group_2_2__1 )
            // InternalFiacre.g:8842:2: rule__ProcessDeclaration__Group_2_2__0__Impl rule__ProcessDeclaration__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_2_2__0__Impl"
    // InternalFiacre.g:8849:1: rule__ProcessDeclaration__Group_2_2__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8853:1: ( ( ',' ) )
            // InternalFiacre.g:8854:1: ( ',' )
            {
            // InternalFiacre.g:8854:1: ( ',' )
            // InternalFiacre.g:8855:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_2_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_2_2__1"
    // InternalFiacre.g:8864:1: rule__ProcessDeclaration__Group_2_2__1 : rule__ProcessDeclaration__Group_2_2__1__Impl ;
    public final void rule__ProcessDeclaration__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8868:1: ( rule__ProcessDeclaration__Group_2_2__1__Impl )
            // InternalFiacre.g:8869:2: rule__ProcessDeclaration__Group_2_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_2_2__1__Impl"
    // InternalFiacre.g:8875:1: rule__ProcessDeclaration__Group_2_2__1__Impl : ( ( rule__ProcessDeclaration__PortsAssignment_2_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8879:1: ( ( ( rule__ProcessDeclaration__PortsAssignment_2_2_1 ) ) )
            // InternalFiacre.g:8880:1: ( ( rule__ProcessDeclaration__PortsAssignment_2_2_1 ) )
            {
            // InternalFiacre.g:8880:1: ( ( rule__ProcessDeclaration__PortsAssignment_2_2_1 ) )
            // InternalFiacre.g:8881:2: ( rule__ProcessDeclaration__PortsAssignment_2_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPortsAssignment_2_2_1()); 
            }
            // InternalFiacre.g:8882:2: ( rule__ProcessDeclaration__PortsAssignment_2_2_1 )
            // InternalFiacre.g:8882:3: rule__ProcessDeclaration__PortsAssignment_2_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__PortsAssignment_2_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPortsAssignment_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_2_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__0"
    // InternalFiacre.g:8891:1: rule__ProcessDeclaration__Group_3__0 : rule__ProcessDeclaration__Group_3__0__Impl rule__ProcessDeclaration__Group_3__1 ;
    public final void rule__ProcessDeclaration__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8895:1: ( rule__ProcessDeclaration__Group_3__0__Impl rule__ProcessDeclaration__Group_3__1 )
            // InternalFiacre.g:8896:2: rule__ProcessDeclaration__Group_3__0__Impl rule__ProcessDeclaration__Group_3__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ProcessDeclaration__Group_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__0__Impl"
    // InternalFiacre.g:8903:1: rule__ProcessDeclaration__Group_3__0__Impl : ( '(' ) ;
    public final void rule__ProcessDeclaration__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8907:1: ( ( '(' ) )
            // InternalFiacre.g:8908:1: ( '(' )
            {
            // InternalFiacre.g:8908:1: ( '(' )
            // InternalFiacre.g:8909:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLeftParenthesisKeyword_3_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLeftParenthesisKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__1"
    // InternalFiacre.g:8918:1: rule__ProcessDeclaration__Group_3__1 : rule__ProcessDeclaration__Group_3__1__Impl rule__ProcessDeclaration__Group_3__2 ;
    public final void rule__ProcessDeclaration__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8922:1: ( rule__ProcessDeclaration__Group_3__1__Impl rule__ProcessDeclaration__Group_3__2 )
            // InternalFiacre.g:8923:2: rule__ProcessDeclaration__Group_3__1__Impl rule__ProcessDeclaration__Group_3__2
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ProcessDeclaration__Group_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__1__Impl"
    // InternalFiacre.g:8930:1: rule__ProcessDeclaration__Group_3__1__Impl : ( ( rule__ProcessDeclaration__ParametersAssignment_3_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8934:1: ( ( ( rule__ProcessDeclaration__ParametersAssignment_3_1 ) ) )
            // InternalFiacre.g:8935:1: ( ( rule__ProcessDeclaration__ParametersAssignment_3_1 ) )
            {
            // InternalFiacre.g:8935:1: ( ( rule__ProcessDeclaration__ParametersAssignment_3_1 ) )
            // InternalFiacre.g:8936:2: ( rule__ProcessDeclaration__ParametersAssignment_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getParametersAssignment_3_1()); 
            }
            // InternalFiacre.g:8937:2: ( rule__ProcessDeclaration__ParametersAssignment_3_1 )
            // InternalFiacre.g:8937:3: rule__ProcessDeclaration__ParametersAssignment_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__ParametersAssignment_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getParametersAssignment_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__2"
    // InternalFiacre.g:8945:1: rule__ProcessDeclaration__Group_3__2 : rule__ProcessDeclaration__Group_3__2__Impl rule__ProcessDeclaration__Group_3__3 ;
    public final void rule__ProcessDeclaration__Group_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8949:1: ( rule__ProcessDeclaration__Group_3__2__Impl rule__ProcessDeclaration__Group_3__3 )
            // InternalFiacre.g:8950:2: rule__ProcessDeclaration__Group_3__2__Impl rule__ProcessDeclaration__Group_3__3
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ProcessDeclaration__Group_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__2"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__2__Impl"
    // InternalFiacre.g:8957:1: rule__ProcessDeclaration__Group_3__2__Impl : ( ( rule__ProcessDeclaration__Group_3_2__0 )* ) ;
    public final void rule__ProcessDeclaration__Group_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8961:1: ( ( ( rule__ProcessDeclaration__Group_3_2__0 )* ) )
            // InternalFiacre.g:8962:1: ( ( rule__ProcessDeclaration__Group_3_2__0 )* )
            {
            // InternalFiacre.g:8962:1: ( ( rule__ProcessDeclaration__Group_3_2__0 )* )
            // InternalFiacre.g:8963:2: ( rule__ProcessDeclaration__Group_3_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_3_2()); 
            }
            // InternalFiacre.g:8964:2: ( rule__ProcessDeclaration__Group_3_2__0 )*
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( (LA92_0==24) ) {
                    alt92=1;
                }


                switch (alt92) {
            	case 1 :
            	    // InternalFiacre.g:8964:3: rule__ProcessDeclaration__Group_3_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_3_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop92;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__3"
    // InternalFiacre.g:8972:1: rule__ProcessDeclaration__Group_3__3 : rule__ProcessDeclaration__Group_3__3__Impl ;
    public final void rule__ProcessDeclaration__Group_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8976:1: ( rule__ProcessDeclaration__Group_3__3__Impl )
            // InternalFiacre.g:8977:2: rule__ProcessDeclaration__Group_3__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__3"


    // $ANTLR start "rule__ProcessDeclaration__Group_3__3__Impl"
    // InternalFiacre.g:8983:1: rule__ProcessDeclaration__Group_3__3__Impl : ( ')' ) ;
    public final void rule__ProcessDeclaration__Group_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:8987:1: ( ( ')' ) )
            // InternalFiacre.g:8988:1: ( ')' )
            {
            // InternalFiacre.g:8988:1: ( ')' )
            // InternalFiacre.g:8989:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getRightParenthesisKeyword_3_3()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getRightParenthesisKeyword_3_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3__3__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3_2__0"
    // InternalFiacre.g:8999:1: rule__ProcessDeclaration__Group_3_2__0 : rule__ProcessDeclaration__Group_3_2__0__Impl rule__ProcessDeclaration__Group_3_2__1 ;
    public final void rule__ProcessDeclaration__Group_3_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9003:1: ( rule__ProcessDeclaration__Group_3_2__0__Impl rule__ProcessDeclaration__Group_3_2__1 )
            // InternalFiacre.g:9004:2: rule__ProcessDeclaration__Group_3_2__0__Impl rule__ProcessDeclaration__Group_3_2__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ProcessDeclaration__Group_3_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_3_2__0__Impl"
    // InternalFiacre.g:9011:1: rule__ProcessDeclaration__Group_3_2__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_3_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9015:1: ( ( ',' ) )
            // InternalFiacre.g:9016:1: ( ',' )
            {
            // InternalFiacre.g:9016:1: ( ',' )
            // InternalFiacre.g:9017:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_3_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_3_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_3_2__1"
    // InternalFiacre.g:9026:1: rule__ProcessDeclaration__Group_3_2__1 : rule__ProcessDeclaration__Group_3_2__1__Impl ;
    public final void rule__ProcessDeclaration__Group_3_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9030:1: ( rule__ProcessDeclaration__Group_3_2__1__Impl )
            // InternalFiacre.g:9031:2: rule__ProcessDeclaration__Group_3_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_3_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_3_2__1__Impl"
    // InternalFiacre.g:9037:1: rule__ProcessDeclaration__Group_3_2__1__Impl : ( ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_3_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9041:1: ( ( ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 ) ) )
            // InternalFiacre.g:9042:1: ( ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 ) )
            {
            // InternalFiacre.g:9042:1: ( ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 ) )
            // InternalFiacre.g:9043:2: ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getParametersAssignment_3_2_1()); 
            }
            // InternalFiacre.g:9044:2: ( rule__ProcessDeclaration__ParametersAssignment_3_2_1 )
            // InternalFiacre.g:9044:3: rule__ProcessDeclaration__ParametersAssignment_3_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__ParametersAssignment_3_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getParametersAssignment_3_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_3_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__0"
    // InternalFiacre.g:9053:1: rule__ProcessDeclaration__Group_5__0 : rule__ProcessDeclaration__Group_5__0__Impl rule__ProcessDeclaration__Group_5__1 ;
    public final void rule__ProcessDeclaration__Group_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9057:1: ( rule__ProcessDeclaration__Group_5__0__Impl rule__ProcessDeclaration__Group_5__1 )
            // InternalFiacre.g:9058:2: rule__ProcessDeclaration__Group_5__0__Impl rule__ProcessDeclaration__Group_5__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__0__Impl"
    // InternalFiacre.g:9065:1: rule__ProcessDeclaration__Group_5__0__Impl : ( 'port' ) ;
    public final void rule__ProcessDeclaration__Group_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9069:1: ( ( 'port' ) )
            // InternalFiacre.g:9070:1: ( 'port' )
            {
            // InternalFiacre.g:9070:1: ( 'port' )
            // InternalFiacre.g:9071:2: 'port'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPortKeyword_5_0()); 
            }
            match(input,44,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPortKeyword_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__1"
    // InternalFiacre.g:9080:1: rule__ProcessDeclaration__Group_5__1 : rule__ProcessDeclaration__Group_5__1__Impl rule__ProcessDeclaration__Group_5__2 ;
    public final void rule__ProcessDeclaration__Group_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9084:1: ( rule__ProcessDeclaration__Group_5__1__Impl rule__ProcessDeclaration__Group_5__2 )
            // InternalFiacre.g:9085:2: rule__ProcessDeclaration__Group_5__1__Impl rule__ProcessDeclaration__Group_5__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ProcessDeclaration__Group_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_5__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__1__Impl"
    // InternalFiacre.g:9092:1: rule__ProcessDeclaration__Group_5__1__Impl : ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9096:1: ( ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 ) ) )
            // InternalFiacre.g:9097:1: ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 ) )
            {
            // InternalFiacre.g:9097:1: ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 ) )
            // InternalFiacre.g:9098:2: ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLocalPortsAssignment_5_1()); 
            }
            // InternalFiacre.g:9099:2: ( rule__ProcessDeclaration__LocalPortsAssignment_5_1 )
            // InternalFiacre.g:9099:3: rule__ProcessDeclaration__LocalPortsAssignment_5_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__LocalPortsAssignment_5_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLocalPortsAssignment_5_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__2"
    // InternalFiacre.g:9107:1: rule__ProcessDeclaration__Group_5__2 : rule__ProcessDeclaration__Group_5__2__Impl ;
    public final void rule__ProcessDeclaration__Group_5__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9111:1: ( rule__ProcessDeclaration__Group_5__2__Impl )
            // InternalFiacre.g:9112:2: rule__ProcessDeclaration__Group_5__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_5__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__2"


    // $ANTLR start "rule__ProcessDeclaration__Group_5__2__Impl"
    // InternalFiacre.g:9118:1: rule__ProcessDeclaration__Group_5__2__Impl : ( ( rule__ProcessDeclaration__Group_5_2__0 )* ) ;
    public final void rule__ProcessDeclaration__Group_5__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9122:1: ( ( ( rule__ProcessDeclaration__Group_5_2__0 )* ) )
            // InternalFiacre.g:9123:1: ( ( rule__ProcessDeclaration__Group_5_2__0 )* )
            {
            // InternalFiacre.g:9123:1: ( ( rule__ProcessDeclaration__Group_5_2__0 )* )
            // InternalFiacre.g:9124:2: ( rule__ProcessDeclaration__Group_5_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_5_2()); 
            }
            // InternalFiacre.g:9125:2: ( rule__ProcessDeclaration__Group_5_2__0 )*
            loop93:
            do {
                int alt93=2;
                int LA93_0 = input.LA(1);

                if ( (LA93_0==24) ) {
                    alt93=1;
                }


                switch (alt93) {
            	case 1 :
            	    // InternalFiacre.g:9125:3: rule__ProcessDeclaration__Group_5_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_5_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop93;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_5_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_5_2__0"
    // InternalFiacre.g:9134:1: rule__ProcessDeclaration__Group_5_2__0 : rule__ProcessDeclaration__Group_5_2__0__Impl rule__ProcessDeclaration__Group_5_2__1 ;
    public final void rule__ProcessDeclaration__Group_5_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9138:1: ( rule__ProcessDeclaration__Group_5_2__0__Impl rule__ProcessDeclaration__Group_5_2__1 )
            // InternalFiacre.g:9139:2: rule__ProcessDeclaration__Group_5_2__0__Impl rule__ProcessDeclaration__Group_5_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_5_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_5_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_5_2__0__Impl"
    // InternalFiacre.g:9146:1: rule__ProcessDeclaration__Group_5_2__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_5_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9150:1: ( ( ',' ) )
            // InternalFiacre.g:9151:1: ( ',' )
            {
            // InternalFiacre.g:9151:1: ( ',' )
            // InternalFiacre.g:9152:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_5_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_5_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_5_2__1"
    // InternalFiacre.g:9161:1: rule__ProcessDeclaration__Group_5_2__1 : rule__ProcessDeclaration__Group_5_2__1__Impl ;
    public final void rule__ProcessDeclaration__Group_5_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9165:1: ( rule__ProcessDeclaration__Group_5_2__1__Impl )
            // InternalFiacre.g:9166:2: rule__ProcessDeclaration__Group_5_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_5_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_5_2__1__Impl"
    // InternalFiacre.g:9172:1: rule__ProcessDeclaration__Group_5_2__1__Impl : ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_5_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9176:1: ( ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 ) ) )
            // InternalFiacre.g:9177:1: ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 ) )
            {
            // InternalFiacre.g:9177:1: ( ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 ) )
            // InternalFiacre.g:9178:2: ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLocalPortsAssignment_5_2_1()); 
            }
            // InternalFiacre.g:9179:2: ( rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 )
            // InternalFiacre.g:9179:3: rule__ProcessDeclaration__LocalPortsAssignment_5_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__LocalPortsAssignment_5_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLocalPortsAssignment_5_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_5_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__0"
    // InternalFiacre.g:9188:1: rule__ProcessDeclaration__Group_6__0 : rule__ProcessDeclaration__Group_6__0__Impl rule__ProcessDeclaration__Group_6__1 ;
    public final void rule__ProcessDeclaration__Group_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9192:1: ( rule__ProcessDeclaration__Group_6__0__Impl rule__ProcessDeclaration__Group_6__1 )
            // InternalFiacre.g:9193:2: rule__ProcessDeclaration__Group_6__0__Impl rule__ProcessDeclaration__Group_6__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__0__Impl"
    // InternalFiacre.g:9200:1: rule__ProcessDeclaration__Group_6__0__Impl : ( 'priority' ) ;
    public final void rule__ProcessDeclaration__Group_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9204:1: ( ( 'priority' ) )
            // InternalFiacre.g:9205:1: ( 'priority' )
            {
            // InternalFiacre.g:9205:1: ( 'priority' )
            // InternalFiacre.g:9206:2: 'priority'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPriorityKeyword_6_0()); 
            }
            match(input,45,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPriorityKeyword_6_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__1"
    // InternalFiacre.g:9215:1: rule__ProcessDeclaration__Group_6__1 : rule__ProcessDeclaration__Group_6__1__Impl rule__ProcessDeclaration__Group_6__2 ;
    public final void rule__ProcessDeclaration__Group_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9219:1: ( rule__ProcessDeclaration__Group_6__1__Impl rule__ProcessDeclaration__Group_6__2 )
            // InternalFiacre.g:9220:2: rule__ProcessDeclaration__Group_6__1__Impl rule__ProcessDeclaration__Group_6__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ProcessDeclaration__Group_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_6__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__1__Impl"
    // InternalFiacre.g:9227:1: rule__ProcessDeclaration__Group_6__1__Impl : ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9231:1: ( ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 ) ) )
            // InternalFiacre.g:9232:1: ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 ) )
            {
            // InternalFiacre.g:9232:1: ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 ) )
            // InternalFiacre.g:9233:2: ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPrioritiesAssignment_6_1()); 
            }
            // InternalFiacre.g:9234:2: ( rule__ProcessDeclaration__PrioritiesAssignment_6_1 )
            // InternalFiacre.g:9234:3: rule__ProcessDeclaration__PrioritiesAssignment_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__PrioritiesAssignment_6_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPrioritiesAssignment_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__2"
    // InternalFiacre.g:9242:1: rule__ProcessDeclaration__Group_6__2 : rule__ProcessDeclaration__Group_6__2__Impl ;
    public final void rule__ProcessDeclaration__Group_6__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9246:1: ( rule__ProcessDeclaration__Group_6__2__Impl )
            // InternalFiacre.g:9247:2: rule__ProcessDeclaration__Group_6__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_6__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__2"


    // $ANTLR start "rule__ProcessDeclaration__Group_6__2__Impl"
    // InternalFiacre.g:9253:1: rule__ProcessDeclaration__Group_6__2__Impl : ( ( rule__ProcessDeclaration__Group_6_2__0 )* ) ;
    public final void rule__ProcessDeclaration__Group_6__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9257:1: ( ( ( rule__ProcessDeclaration__Group_6_2__0 )* ) )
            // InternalFiacre.g:9258:1: ( ( rule__ProcessDeclaration__Group_6_2__0 )* )
            {
            // InternalFiacre.g:9258:1: ( ( rule__ProcessDeclaration__Group_6_2__0 )* )
            // InternalFiacre.g:9259:2: ( rule__ProcessDeclaration__Group_6_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_6_2()); 
            }
            // InternalFiacre.g:9260:2: ( rule__ProcessDeclaration__Group_6_2__0 )*
            loop94:
            do {
                int alt94=2;
                int LA94_0 = input.LA(1);

                if ( (LA94_0==24) ) {
                    alt94=1;
                }


                switch (alt94) {
            	case 1 :
            	    // InternalFiacre.g:9260:3: rule__ProcessDeclaration__Group_6_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_6_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop94;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_6_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_6_2__0"
    // InternalFiacre.g:9269:1: rule__ProcessDeclaration__Group_6_2__0 : rule__ProcessDeclaration__Group_6_2__0__Impl rule__ProcessDeclaration__Group_6_2__1 ;
    public final void rule__ProcessDeclaration__Group_6_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9273:1: ( rule__ProcessDeclaration__Group_6_2__0__Impl rule__ProcessDeclaration__Group_6_2__1 )
            // InternalFiacre.g:9274:2: rule__ProcessDeclaration__Group_6_2__0__Impl rule__ProcessDeclaration__Group_6_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_6_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_6_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_6_2__0__Impl"
    // InternalFiacre.g:9281:1: rule__ProcessDeclaration__Group_6_2__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_6_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9285:1: ( ( ',' ) )
            // InternalFiacre.g:9286:1: ( ',' )
            {
            // InternalFiacre.g:9286:1: ( ',' )
            // InternalFiacre.g:9287:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_6_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_6_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_6_2__1"
    // InternalFiacre.g:9296:1: rule__ProcessDeclaration__Group_6_2__1 : rule__ProcessDeclaration__Group_6_2__1__Impl ;
    public final void rule__ProcessDeclaration__Group_6_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9300:1: ( rule__ProcessDeclaration__Group_6_2__1__Impl )
            // InternalFiacre.g:9301:2: rule__ProcessDeclaration__Group_6_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_6_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_6_2__1__Impl"
    // InternalFiacre.g:9307:1: rule__ProcessDeclaration__Group_6_2__1__Impl : ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_6_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9311:1: ( ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 ) ) )
            // InternalFiacre.g:9312:1: ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 ) )
            {
            // InternalFiacre.g:9312:1: ( ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 ) )
            // InternalFiacre.g:9313:2: ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPrioritiesAssignment_6_2_1()); 
            }
            // InternalFiacre.g:9314:2: ( rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 )
            // InternalFiacre.g:9314:3: rule__ProcessDeclaration__PrioritiesAssignment_6_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__PrioritiesAssignment_6_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPrioritiesAssignment_6_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_6_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_9__0"
    // InternalFiacre.g:9323:1: rule__ProcessDeclaration__Group_9__0 : rule__ProcessDeclaration__Group_9__0__Impl rule__ProcessDeclaration__Group_9__1 ;
    public final void rule__ProcessDeclaration__Group_9__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9327:1: ( rule__ProcessDeclaration__Group_9__0__Impl rule__ProcessDeclaration__Group_9__1 )
            // InternalFiacre.g:9328:2: rule__ProcessDeclaration__Group_9__0__Impl rule__ProcessDeclaration__Group_9__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_9__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_9__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_9__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_9__0__Impl"
    // InternalFiacre.g:9335:1: rule__ProcessDeclaration__Group_9__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_9__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9339:1: ( ( ',' ) )
            // InternalFiacre.g:9340:1: ( ',' )
            {
            // InternalFiacre.g:9340:1: ( ',' )
            // InternalFiacre.g:9341:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_9_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_9_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_9__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_9__1"
    // InternalFiacre.g:9350:1: rule__ProcessDeclaration__Group_9__1 : rule__ProcessDeclaration__Group_9__1__Impl ;
    public final void rule__ProcessDeclaration__Group_9__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9354:1: ( rule__ProcessDeclaration__Group_9__1__Impl )
            // InternalFiacre.g:9355:2: rule__ProcessDeclaration__Group_9__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_9__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_9__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_9__1__Impl"
    // InternalFiacre.g:9361:1: rule__ProcessDeclaration__Group_9__1__Impl : ( ( rule__ProcessDeclaration__StatesAssignment_9_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_9__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9365:1: ( ( ( rule__ProcessDeclaration__StatesAssignment_9_1 ) ) )
            // InternalFiacre.g:9366:1: ( ( rule__ProcessDeclaration__StatesAssignment_9_1 ) )
            {
            // InternalFiacre.g:9366:1: ( ( rule__ProcessDeclaration__StatesAssignment_9_1 ) )
            // InternalFiacre.g:9367:2: ( rule__ProcessDeclaration__StatesAssignment_9_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getStatesAssignment_9_1()); 
            }
            // InternalFiacre.g:9368:2: ( rule__ProcessDeclaration__StatesAssignment_9_1 )
            // InternalFiacre.g:9368:3: rule__ProcessDeclaration__StatesAssignment_9_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__StatesAssignment_9_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getStatesAssignment_9_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_9__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__0"
    // InternalFiacre.g:9377:1: rule__ProcessDeclaration__Group_10__0 : rule__ProcessDeclaration__Group_10__0__Impl rule__ProcessDeclaration__Group_10__1 ;
    public final void rule__ProcessDeclaration__Group_10__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9381:1: ( rule__ProcessDeclaration__Group_10__0__Impl rule__ProcessDeclaration__Group_10__1 )
            // InternalFiacre.g:9382:2: rule__ProcessDeclaration__Group_10__0__Impl rule__ProcessDeclaration__Group_10__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_10__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_10__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__0__Impl"
    // InternalFiacre.g:9389:1: rule__ProcessDeclaration__Group_10__0__Impl : ( 'var' ) ;
    public final void rule__ProcessDeclaration__Group_10__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9393:1: ( ( 'var' ) )
            // InternalFiacre.g:9394:1: ( 'var' )
            {
            // InternalFiacre.g:9394:1: ( 'var' )
            // InternalFiacre.g:9395:2: 'var'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getVarKeyword_10_0()); 
            }
            match(input,25,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getVarKeyword_10_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__1"
    // InternalFiacre.g:9404:1: rule__ProcessDeclaration__Group_10__1 : rule__ProcessDeclaration__Group_10__1__Impl rule__ProcessDeclaration__Group_10__2 ;
    public final void rule__ProcessDeclaration__Group_10__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9408:1: ( rule__ProcessDeclaration__Group_10__1__Impl rule__ProcessDeclaration__Group_10__2 )
            // InternalFiacre.g:9409:2: rule__ProcessDeclaration__Group_10__1__Impl rule__ProcessDeclaration__Group_10__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ProcessDeclaration__Group_10__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_10__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__1__Impl"
    // InternalFiacre.g:9416:1: rule__ProcessDeclaration__Group_10__1__Impl : ( ( rule__ProcessDeclaration__VariablesAssignment_10_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_10__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9420:1: ( ( ( rule__ProcessDeclaration__VariablesAssignment_10_1 ) ) )
            // InternalFiacre.g:9421:1: ( ( rule__ProcessDeclaration__VariablesAssignment_10_1 ) )
            {
            // InternalFiacre.g:9421:1: ( ( rule__ProcessDeclaration__VariablesAssignment_10_1 ) )
            // InternalFiacre.g:9422:2: ( rule__ProcessDeclaration__VariablesAssignment_10_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getVariablesAssignment_10_1()); 
            }
            // InternalFiacre.g:9423:2: ( rule__ProcessDeclaration__VariablesAssignment_10_1 )
            // InternalFiacre.g:9423:3: rule__ProcessDeclaration__VariablesAssignment_10_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__VariablesAssignment_10_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getVariablesAssignment_10_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__2"
    // InternalFiacre.g:9431:1: rule__ProcessDeclaration__Group_10__2 : rule__ProcessDeclaration__Group_10__2__Impl ;
    public final void rule__ProcessDeclaration__Group_10__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9435:1: ( rule__ProcessDeclaration__Group_10__2__Impl )
            // InternalFiacre.g:9436:2: rule__ProcessDeclaration__Group_10__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_10__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__2"


    // $ANTLR start "rule__ProcessDeclaration__Group_10__2__Impl"
    // InternalFiacre.g:9442:1: rule__ProcessDeclaration__Group_10__2__Impl : ( ( rule__ProcessDeclaration__Group_10_2__0 )* ) ;
    public final void rule__ProcessDeclaration__Group_10__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9446:1: ( ( ( rule__ProcessDeclaration__Group_10_2__0 )* ) )
            // InternalFiacre.g:9447:1: ( ( rule__ProcessDeclaration__Group_10_2__0 )* )
            {
            // InternalFiacre.g:9447:1: ( ( rule__ProcessDeclaration__Group_10_2__0 )* )
            // InternalFiacre.g:9448:2: ( rule__ProcessDeclaration__Group_10_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getGroup_10_2()); 
            }
            // InternalFiacre.g:9449:2: ( rule__ProcessDeclaration__Group_10_2__0 )*
            loop95:
            do {
                int alt95=2;
                int LA95_0 = input.LA(1);

                if ( (LA95_0==24) ) {
                    alt95=1;
                }


                switch (alt95) {
            	case 1 :
            	    // InternalFiacre.g:9449:3: rule__ProcessDeclaration__Group_10_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ProcessDeclaration__Group_10_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop95;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getGroup_10_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10__2__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_10_2__0"
    // InternalFiacre.g:9458:1: rule__ProcessDeclaration__Group_10_2__0 : rule__ProcessDeclaration__Group_10_2__0__Impl rule__ProcessDeclaration__Group_10_2__1 ;
    public final void rule__ProcessDeclaration__Group_10_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9462:1: ( rule__ProcessDeclaration__Group_10_2__0__Impl rule__ProcessDeclaration__Group_10_2__1 )
            // InternalFiacre.g:9463:2: rule__ProcessDeclaration__Group_10_2__0__Impl rule__ProcessDeclaration__Group_10_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ProcessDeclaration__Group_10_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_10_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10_2__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_10_2__0__Impl"
    // InternalFiacre.g:9470:1: rule__ProcessDeclaration__Group_10_2__0__Impl : ( ',' ) ;
    public final void rule__ProcessDeclaration__Group_10_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9474:1: ( ( ',' ) )
            // InternalFiacre.g:9475:1: ( ',' )
            {
            // InternalFiacre.g:9475:1: ( ',' )
            // InternalFiacre.g:9476:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_10_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getCommaKeyword_10_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10_2__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_10_2__1"
    // InternalFiacre.g:9485:1: rule__ProcessDeclaration__Group_10_2__1 : rule__ProcessDeclaration__Group_10_2__1__Impl ;
    public final void rule__ProcessDeclaration__Group_10_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9489:1: ( rule__ProcessDeclaration__Group_10_2__1__Impl )
            // InternalFiacre.g:9490:2: rule__ProcessDeclaration__Group_10_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_10_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10_2__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_10_2__1__Impl"
    // InternalFiacre.g:9496:1: rule__ProcessDeclaration__Group_10_2__1__Impl : ( ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_10_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9500:1: ( ( ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 ) ) )
            // InternalFiacre.g:9501:1: ( ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 ) )
            {
            // InternalFiacre.g:9501:1: ( ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 ) )
            // InternalFiacre.g:9502:2: ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getVariablesAssignment_10_2_1()); 
            }
            // InternalFiacre.g:9503:2: ( rule__ProcessDeclaration__VariablesAssignment_10_2_1 )
            // InternalFiacre.g:9503:3: rule__ProcessDeclaration__VariablesAssignment_10_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__VariablesAssignment_10_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getVariablesAssignment_10_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_10_2__1__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_11__0"
    // InternalFiacre.g:9512:1: rule__ProcessDeclaration__Group_11__0 : rule__ProcessDeclaration__Group_11__0__Impl rule__ProcessDeclaration__Group_11__1 ;
    public final void rule__ProcessDeclaration__Group_11__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9516:1: ( rule__ProcessDeclaration__Group_11__0__Impl rule__ProcessDeclaration__Group_11__1 )
            // InternalFiacre.g:9517:2: rule__ProcessDeclaration__Group_11__0__Impl rule__ProcessDeclaration__Group_11__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ProcessDeclaration__Group_11__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_11__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_11__0"


    // $ANTLR start "rule__ProcessDeclaration__Group_11__0__Impl"
    // InternalFiacre.g:9524:1: rule__ProcessDeclaration__Group_11__0__Impl : ( 'init' ) ;
    public final void rule__ProcessDeclaration__Group_11__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9528:1: ( ( 'init' ) )
            // InternalFiacre.g:9529:1: ( 'init' )
            {
            // InternalFiacre.g:9529:1: ( 'init' )
            // InternalFiacre.g:9530:2: 'init'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getInitKeyword_11_0()); 
            }
            match(input,46,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getInitKeyword_11_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_11__0__Impl"


    // $ANTLR start "rule__ProcessDeclaration__Group_11__1"
    // InternalFiacre.g:9539:1: rule__ProcessDeclaration__Group_11__1 : rule__ProcessDeclaration__Group_11__1__Impl ;
    public final void rule__ProcessDeclaration__Group_11__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9543:1: ( rule__ProcessDeclaration__Group_11__1__Impl )
            // InternalFiacre.g:9544:2: rule__ProcessDeclaration__Group_11__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__Group_11__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_11__1"


    // $ANTLR start "rule__ProcessDeclaration__Group_11__1__Impl"
    // InternalFiacre.g:9550:1: rule__ProcessDeclaration__Group_11__1__Impl : ( ( rule__ProcessDeclaration__PreludeAssignment_11_1 ) ) ;
    public final void rule__ProcessDeclaration__Group_11__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9554:1: ( ( ( rule__ProcessDeclaration__PreludeAssignment_11_1 ) ) )
            // InternalFiacre.g:9555:1: ( ( rule__ProcessDeclaration__PreludeAssignment_11_1 ) )
            {
            // InternalFiacre.g:9555:1: ( ( rule__ProcessDeclaration__PreludeAssignment_11_1 ) )
            // InternalFiacre.g:9556:2: ( rule__ProcessDeclaration__PreludeAssignment_11_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPreludeAssignment_11_1()); 
            }
            // InternalFiacre.g:9557:2: ( rule__ProcessDeclaration__PreludeAssignment_11_1 )
            // InternalFiacre.g:9557:3: rule__ProcessDeclaration__PreludeAssignment_11_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ProcessDeclaration__PreludeAssignment_11_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPreludeAssignment_11_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__Group_11__1__Impl"


    // $ANTLR start "rule__TransitionSource__Group__0"
    // InternalFiacre.g:9566:1: rule__TransitionSource__Group__0 : rule__TransitionSource__Group__0__Impl rule__TransitionSource__Group__1 ;
    public final void rule__TransitionSource__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9570:1: ( rule__TransitionSource__Group__0__Impl rule__TransitionSource__Group__1 )
            // InternalFiacre.g:9571:2: rule__TransitionSource__Group__0__Impl rule__TransitionSource__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__TransitionSource__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TransitionSource__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TransitionSource__Group__0"


    // $ANTLR start "rule__TransitionSource__Group__0__Impl"
    // InternalFiacre.g:9578:1: rule__TransitionSource__Group__0__Impl : ( 'from' ) ;
    public final void rule__TransitionSource__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9582:1: ( ( 'from' ) )
            // InternalFiacre.g:9583:1: ( 'from' )
            {
            // InternalFiacre.g:9583:1: ( 'from' )
            // InternalFiacre.g:9584:2: 'from'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceAccess().getFromKeyword_0()); 
            }
            match(input,47,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceAccess().getFromKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TransitionSource__Group__0__Impl"


    // $ANTLR start "rule__TransitionSource__Group__1"
    // InternalFiacre.g:9593:1: rule__TransitionSource__Group__1 : rule__TransitionSource__Group__1__Impl ;
    public final void rule__TransitionSource__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9597:1: ( rule__TransitionSource__Group__1__Impl )
            // InternalFiacre.g:9598:2: rule__TransitionSource__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TransitionSource__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TransitionSource__Group__1"


    // $ANTLR start "rule__TransitionSource__Group__1__Impl"
    // InternalFiacre.g:9604:1: rule__TransitionSource__Group__1__Impl : ( ( rule__TransitionSource__OriginAssignment_1 ) ) ;
    public final void rule__TransitionSource__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9608:1: ( ( ( rule__TransitionSource__OriginAssignment_1 ) ) )
            // InternalFiacre.g:9609:1: ( ( rule__TransitionSource__OriginAssignment_1 ) )
            {
            // InternalFiacre.g:9609:1: ( ( rule__TransitionSource__OriginAssignment_1 ) )
            // InternalFiacre.g:9610:2: ( rule__TransitionSource__OriginAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceAccess().getOriginAssignment_1()); 
            }
            // InternalFiacre.g:9611:2: ( rule__TransitionSource__OriginAssignment_1 )
            // InternalFiacre.g:9611:3: rule__TransitionSource__OriginAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TransitionSource__OriginAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceAccess().getOriginAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TransitionSource__Group__1__Impl"


    // $ANTLR start "rule__Transition__Group__0"
    // InternalFiacre.g:9620:1: rule__Transition__Group__0 : rule__Transition__Group__0__Impl rule__Transition__Group__1 ;
    public final void rule__Transition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9624:1: ( rule__Transition__Group__0__Impl rule__Transition__Group__1 )
            // InternalFiacre.g:9625:2: rule__Transition__Group__0__Impl rule__Transition__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__Transition__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Transition__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__Group__0"


    // $ANTLR start "rule__Transition__Group__0__Impl"
    // InternalFiacre.g:9632:1: rule__Transition__Group__0__Impl : ( ( rule__Transition__SourceAssignment_0 ) ) ;
    public final void rule__Transition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9636:1: ( ( ( rule__Transition__SourceAssignment_0 ) ) )
            // InternalFiacre.g:9637:1: ( ( rule__Transition__SourceAssignment_0 ) )
            {
            // InternalFiacre.g:9637:1: ( ( rule__Transition__SourceAssignment_0 ) )
            // InternalFiacre.g:9638:2: ( rule__Transition__SourceAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionAccess().getSourceAssignment_0()); 
            }
            // InternalFiacre.g:9639:2: ( rule__Transition__SourceAssignment_0 )
            // InternalFiacre.g:9639:3: rule__Transition__SourceAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Transition__SourceAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionAccess().getSourceAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__Group__0__Impl"


    // $ANTLR start "rule__Transition__Group__1"
    // InternalFiacre.g:9647:1: rule__Transition__Group__1 : rule__Transition__Group__1__Impl ;
    public final void rule__Transition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9651:1: ( rule__Transition__Group__1__Impl )
            // InternalFiacre.g:9652:2: rule__Transition__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Transition__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__Group__1"


    // $ANTLR start "rule__Transition__Group__1__Impl"
    // InternalFiacre.g:9658:1: rule__Transition__Group__1__Impl : ( ( rule__Transition__ActionAssignment_1 ) ) ;
    public final void rule__Transition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9662:1: ( ( ( rule__Transition__ActionAssignment_1 ) ) )
            // InternalFiacre.g:9663:1: ( ( rule__Transition__ActionAssignment_1 ) )
            {
            // InternalFiacre.g:9663:1: ( ( rule__Transition__ActionAssignment_1 ) )
            // InternalFiacre.g:9664:2: ( rule__Transition__ActionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionAccess().getActionAssignment_1()); 
            }
            // InternalFiacre.g:9665:2: ( rule__Transition__ActionAssignment_1 )
            // InternalFiacre.g:9665:3: rule__Transition__ActionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Transition__ActionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionAccess().getActionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__Group__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__0"
    // InternalFiacre.g:9674:1: rule__ComponentDeclaration__Group__0 : rule__ComponentDeclaration__Group__0__Impl rule__ComponentDeclaration__Group__1 ;
    public final void rule__ComponentDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9678:1: ( rule__ComponentDeclaration__Group__0__Impl rule__ComponentDeclaration__Group__1 )
            // InternalFiacre.g:9679:2: rule__ComponentDeclaration__Group__0__Impl rule__ComponentDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__0"


    // $ANTLR start "rule__ComponentDeclaration__Group__0__Impl"
    // InternalFiacre.g:9686:1: rule__ComponentDeclaration__Group__0__Impl : ( 'component' ) ;
    public final void rule__ComponentDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9690:1: ( ( 'component' ) )
            // InternalFiacre.g:9691:1: ( 'component' )
            {
            // InternalFiacre.g:9691:1: ( 'component' )
            // InternalFiacre.g:9692:2: 'component'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getComponentKeyword_0()); 
            }
            match(input,48,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getComponentKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__1"
    // InternalFiacre.g:9701:1: rule__ComponentDeclaration__Group__1 : rule__ComponentDeclaration__Group__1__Impl rule__ComponentDeclaration__Group__2 ;
    public final void rule__ComponentDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9705:1: ( rule__ComponentDeclaration__Group__1__Impl rule__ComponentDeclaration__Group__2 )
            // InternalFiacre.g:9706:2: rule__ComponentDeclaration__Group__1__Impl rule__ComponentDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ComponentDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__1"


    // $ANTLR start "rule__ComponentDeclaration__Group__1__Impl"
    // InternalFiacre.g:9713:1: rule__ComponentDeclaration__Group__1__Impl : ( ( rule__ComponentDeclaration__NameAssignment_1 ) ) ;
    public final void rule__ComponentDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9717:1: ( ( ( rule__ComponentDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:9718:1: ( ( rule__ComponentDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:9718:1: ( ( rule__ComponentDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:9719:2: ( rule__ComponentDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:9720:2: ( rule__ComponentDeclaration__NameAssignment_1 )
            // InternalFiacre.g:9720:3: rule__ComponentDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__2"
    // InternalFiacre.g:9728:1: rule__ComponentDeclaration__Group__2 : rule__ComponentDeclaration__Group__2__Impl rule__ComponentDeclaration__Group__3 ;
    public final void rule__ComponentDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9732:1: ( rule__ComponentDeclaration__Group__2__Impl rule__ComponentDeclaration__Group__3 )
            // InternalFiacre.g:9733:2: rule__ComponentDeclaration__Group__2__Impl rule__ComponentDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ComponentDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__2"


    // $ANTLR start "rule__ComponentDeclaration__Group__2__Impl"
    // InternalFiacre.g:9740:1: rule__ComponentDeclaration__Group__2__Impl : ( ( rule__ComponentDeclaration__Group_2__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9744:1: ( ( ( rule__ComponentDeclaration__Group_2__0 )? ) )
            // InternalFiacre.g:9745:1: ( ( rule__ComponentDeclaration__Group_2__0 )? )
            {
            // InternalFiacre.g:9745:1: ( ( rule__ComponentDeclaration__Group_2__0 )? )
            // InternalFiacre.g:9746:2: ( rule__ComponentDeclaration__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_2()); 
            }
            // InternalFiacre.g:9747:2: ( rule__ComponentDeclaration__Group_2__0 )?
            int alt96=2;
            int LA96_0 = input.LA(1);

            if ( (LA96_0==42) ) {
                alt96=1;
            }
            switch (alt96) {
                case 1 :
                    // InternalFiacre.g:9747:3: rule__ComponentDeclaration__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__3"
    // InternalFiacre.g:9755:1: rule__ComponentDeclaration__Group__3 : rule__ComponentDeclaration__Group__3__Impl rule__ComponentDeclaration__Group__4 ;
    public final void rule__ComponentDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9759:1: ( rule__ComponentDeclaration__Group__3__Impl rule__ComponentDeclaration__Group__4 )
            // InternalFiacre.g:9760:2: rule__ComponentDeclaration__Group__3__Impl rule__ComponentDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_39);
            rule__ComponentDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__3"


    // $ANTLR start "rule__ComponentDeclaration__Group__3__Impl"
    // InternalFiacre.g:9767:1: rule__ComponentDeclaration__Group__3__Impl : ( ( rule__ComponentDeclaration__Group_3__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9771:1: ( ( ( rule__ComponentDeclaration__Group_3__0 )? ) )
            // InternalFiacre.g:9772:1: ( ( rule__ComponentDeclaration__Group_3__0 )? )
            {
            // InternalFiacre.g:9772:1: ( ( rule__ComponentDeclaration__Group_3__0 )? )
            // InternalFiacre.g:9773:2: ( rule__ComponentDeclaration__Group_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_3()); 
            }
            // InternalFiacre.g:9774:2: ( rule__ComponentDeclaration__Group_3__0 )?
            int alt97=2;
            int LA97_0 = input.LA(1);

            if ( (LA97_0==22) ) {
                alt97=1;
            }
            switch (alt97) {
                case 1 :
                    // InternalFiacre.g:9774:3: rule__ComponentDeclaration__Group_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__4"
    // InternalFiacre.g:9782:1: rule__ComponentDeclaration__Group__4 : rule__ComponentDeclaration__Group__4__Impl rule__ComponentDeclaration__Group__5 ;
    public final void rule__ComponentDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9786:1: ( rule__ComponentDeclaration__Group__4__Impl rule__ComponentDeclaration__Group__5 )
            // InternalFiacre.g:9787:2: rule__ComponentDeclaration__Group__4__Impl rule__ComponentDeclaration__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_45);
            rule__ComponentDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__4"


    // $ANTLR start "rule__ComponentDeclaration__Group__4__Impl"
    // InternalFiacre.g:9794:1: rule__ComponentDeclaration__Group__4__Impl : ( 'is' ) ;
    public final void rule__ComponentDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9798:1: ( ( 'is' ) )
            // InternalFiacre.g:9799:1: ( 'is' )
            {
            // InternalFiacre.g:9799:1: ( 'is' )
            // InternalFiacre.g:9800:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getIsKeyword_4()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getIsKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__4__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__5"
    // InternalFiacre.g:9809:1: rule__ComponentDeclaration__Group__5 : rule__ComponentDeclaration__Group__5__Impl rule__ComponentDeclaration__Group__6 ;
    public final void rule__ComponentDeclaration__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9813:1: ( rule__ComponentDeclaration__Group__5__Impl rule__ComponentDeclaration__Group__6 )
            // InternalFiacre.g:9814:2: rule__ComponentDeclaration__Group__5__Impl rule__ComponentDeclaration__Group__6
            {
            pushFollow(FollowSets000.FOLLOW_45);
            rule__ComponentDeclaration__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__5"


    // $ANTLR start "rule__ComponentDeclaration__Group__5__Impl"
    // InternalFiacre.g:9821:1: rule__ComponentDeclaration__Group__5__Impl : ( ( rule__ComponentDeclaration__Group_5__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9825:1: ( ( ( rule__ComponentDeclaration__Group_5__0 )? ) )
            // InternalFiacre.g:9826:1: ( ( rule__ComponentDeclaration__Group_5__0 )? )
            {
            // InternalFiacre.g:9826:1: ( ( rule__ComponentDeclaration__Group_5__0 )? )
            // InternalFiacre.g:9827:2: ( rule__ComponentDeclaration__Group_5__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_5()); 
            }
            // InternalFiacre.g:9828:2: ( rule__ComponentDeclaration__Group_5__0 )?
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==25) ) {
                alt98=1;
            }
            switch (alt98) {
                case 1 :
                    // InternalFiacre.g:9828:3: rule__ComponentDeclaration__Group_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_5__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__5__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__6"
    // InternalFiacre.g:9836:1: rule__ComponentDeclaration__Group__6 : rule__ComponentDeclaration__Group__6__Impl rule__ComponentDeclaration__Group__7 ;
    public final void rule__ComponentDeclaration__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9840:1: ( rule__ComponentDeclaration__Group__6__Impl rule__ComponentDeclaration__Group__7 )
            // InternalFiacre.g:9841:2: rule__ComponentDeclaration__Group__6__Impl rule__ComponentDeclaration__Group__7
            {
            pushFollow(FollowSets000.FOLLOW_45);
            rule__ComponentDeclaration__Group__6__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__7();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__6"


    // $ANTLR start "rule__ComponentDeclaration__Group__6__Impl"
    // InternalFiacre.g:9848:1: rule__ComponentDeclaration__Group__6__Impl : ( ( rule__ComponentDeclaration__Group_6__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9852:1: ( ( ( rule__ComponentDeclaration__Group_6__0 )? ) )
            // InternalFiacre.g:9853:1: ( ( rule__ComponentDeclaration__Group_6__0 )? )
            {
            // InternalFiacre.g:9853:1: ( ( rule__ComponentDeclaration__Group_6__0 )? )
            // InternalFiacre.g:9854:2: ( rule__ComponentDeclaration__Group_6__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_6()); 
            }
            // InternalFiacre.g:9855:2: ( rule__ComponentDeclaration__Group_6__0 )?
            int alt99=2;
            int LA99_0 = input.LA(1);

            if ( (LA99_0==44) ) {
                alt99=1;
            }
            switch (alt99) {
                case 1 :
                    // InternalFiacre.g:9855:3: rule__ComponentDeclaration__Group_6__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_6__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__6__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__7"
    // InternalFiacre.g:9863:1: rule__ComponentDeclaration__Group__7 : rule__ComponentDeclaration__Group__7__Impl rule__ComponentDeclaration__Group__8 ;
    public final void rule__ComponentDeclaration__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9867:1: ( rule__ComponentDeclaration__Group__7__Impl rule__ComponentDeclaration__Group__8 )
            // InternalFiacre.g:9868:2: rule__ComponentDeclaration__Group__7__Impl rule__ComponentDeclaration__Group__8
            {
            pushFollow(FollowSets000.FOLLOW_45);
            rule__ComponentDeclaration__Group__7__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__8();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__7"


    // $ANTLR start "rule__ComponentDeclaration__Group__7__Impl"
    // InternalFiacre.g:9875:1: rule__ComponentDeclaration__Group__7__Impl : ( ( rule__ComponentDeclaration__Group_7__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9879:1: ( ( ( rule__ComponentDeclaration__Group_7__0 )? ) )
            // InternalFiacre.g:9880:1: ( ( rule__ComponentDeclaration__Group_7__0 )? )
            {
            // InternalFiacre.g:9880:1: ( ( rule__ComponentDeclaration__Group_7__0 )? )
            // InternalFiacre.g:9881:2: ( rule__ComponentDeclaration__Group_7__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_7()); 
            }
            // InternalFiacre.g:9882:2: ( rule__ComponentDeclaration__Group_7__0 )?
            int alt100=2;
            int LA100_0 = input.LA(1);

            if ( (LA100_0==45) ) {
                alt100=1;
            }
            switch (alt100) {
                case 1 :
                    // InternalFiacre.g:9882:3: rule__ComponentDeclaration__Group_7__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_7__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_7()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__7__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__8"
    // InternalFiacre.g:9890:1: rule__ComponentDeclaration__Group__8 : rule__ComponentDeclaration__Group__8__Impl rule__ComponentDeclaration__Group__9 ;
    public final void rule__ComponentDeclaration__Group__8() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9894:1: ( rule__ComponentDeclaration__Group__8__Impl rule__ComponentDeclaration__Group__9 )
            // InternalFiacre.g:9895:2: rule__ComponentDeclaration__Group__8__Impl rule__ComponentDeclaration__Group__9
            {
            pushFollow(FollowSets000.FOLLOW_45);
            rule__ComponentDeclaration__Group__8__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__9();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__8"


    // $ANTLR start "rule__ComponentDeclaration__Group__8__Impl"
    // InternalFiacre.g:9902:1: rule__ComponentDeclaration__Group__8__Impl : ( ( rule__ComponentDeclaration__Group_8__0 )? ) ;
    public final void rule__ComponentDeclaration__Group__8__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9906:1: ( ( ( rule__ComponentDeclaration__Group_8__0 )? ) )
            // InternalFiacre.g:9907:1: ( ( rule__ComponentDeclaration__Group_8__0 )? )
            {
            // InternalFiacre.g:9907:1: ( ( rule__ComponentDeclaration__Group_8__0 )? )
            // InternalFiacre.g:9908:2: ( rule__ComponentDeclaration__Group_8__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_8()); 
            }
            // InternalFiacre.g:9909:2: ( rule__ComponentDeclaration__Group_8__0 )?
            int alt101=2;
            int LA101_0 = input.LA(1);

            if ( (LA101_0==46) ) {
                alt101=1;
            }
            switch (alt101) {
                case 1 :
                    // InternalFiacre.g:9909:3: rule__ComponentDeclaration__Group_8__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentDeclaration__Group_8__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_8()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__8__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group__9"
    // InternalFiacre.g:9917:1: rule__ComponentDeclaration__Group__9 : rule__ComponentDeclaration__Group__9__Impl ;
    public final void rule__ComponentDeclaration__Group__9() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9921:1: ( rule__ComponentDeclaration__Group__9__Impl )
            // InternalFiacre.g:9922:2: rule__ComponentDeclaration__Group__9__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group__9__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__9"


    // $ANTLR start "rule__ComponentDeclaration__Group__9__Impl"
    // InternalFiacre.g:9928:1: rule__ComponentDeclaration__Group__9__Impl : ( ( rule__ComponentDeclaration__BodyAssignment_9 ) ) ;
    public final void rule__ComponentDeclaration__Group__9__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9932:1: ( ( ( rule__ComponentDeclaration__BodyAssignment_9 ) ) )
            // InternalFiacre.g:9933:1: ( ( rule__ComponentDeclaration__BodyAssignment_9 ) )
            {
            // InternalFiacre.g:9933:1: ( ( rule__ComponentDeclaration__BodyAssignment_9 ) )
            // InternalFiacre.g:9934:2: ( rule__ComponentDeclaration__BodyAssignment_9 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getBodyAssignment_9()); 
            }
            // InternalFiacre.g:9935:2: ( rule__ComponentDeclaration__BodyAssignment_9 )
            // InternalFiacre.g:9935:3: rule__ComponentDeclaration__BodyAssignment_9
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__BodyAssignment_9();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getBodyAssignment_9()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group__9__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__0"
    // InternalFiacre.g:9944:1: rule__ComponentDeclaration__Group_2__0 : rule__ComponentDeclaration__Group_2__0__Impl rule__ComponentDeclaration__Group_2__1 ;
    public final void rule__ComponentDeclaration__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9948:1: ( rule__ComponentDeclaration__Group_2__0__Impl rule__ComponentDeclaration__Group_2__1 )
            // InternalFiacre.g:9949:2: rule__ComponentDeclaration__Group_2__0__Impl rule__ComponentDeclaration__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__0__Impl"
    // InternalFiacre.g:9956:1: rule__ComponentDeclaration__Group_2__0__Impl : ( '[' ) ;
    public final void rule__ComponentDeclaration__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9960:1: ( ( '[' ) )
            // InternalFiacre.g:9961:1: ( '[' )
            {
            // InternalFiacre.g:9961:1: ( '[' )
            // InternalFiacre.g:9962:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLeftSquareBracketKeyword_2_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLeftSquareBracketKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__1"
    // InternalFiacre.g:9971:1: rule__ComponentDeclaration__Group_2__1 : rule__ComponentDeclaration__Group_2__1__Impl rule__ComponentDeclaration__Group_2__2 ;
    public final void rule__ComponentDeclaration__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9975:1: ( rule__ComponentDeclaration__Group_2__1__Impl rule__ComponentDeclaration__Group_2__2 )
            // InternalFiacre.g:9976:2: rule__ComponentDeclaration__Group_2__1__Impl rule__ComponentDeclaration__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ComponentDeclaration__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__1__Impl"
    // InternalFiacre.g:9983:1: rule__ComponentDeclaration__Group_2__1__Impl : ( ( rule__ComponentDeclaration__PortsAssignment_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:9987:1: ( ( ( rule__ComponentDeclaration__PortsAssignment_2_1 ) ) )
            // InternalFiacre.g:9988:1: ( ( rule__ComponentDeclaration__PortsAssignment_2_1 ) )
            {
            // InternalFiacre.g:9988:1: ( ( rule__ComponentDeclaration__PortsAssignment_2_1 ) )
            // InternalFiacre.g:9989:2: ( rule__ComponentDeclaration__PortsAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPortsAssignment_2_1()); 
            }
            // InternalFiacre.g:9990:2: ( rule__ComponentDeclaration__PortsAssignment_2_1 )
            // InternalFiacre.g:9990:3: rule__ComponentDeclaration__PortsAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__PortsAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPortsAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__2"
    // InternalFiacre.g:9998:1: rule__ComponentDeclaration__Group_2__2 : rule__ComponentDeclaration__Group_2__2__Impl rule__ComponentDeclaration__Group_2__3 ;
    public final void rule__ComponentDeclaration__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10002:1: ( rule__ComponentDeclaration__Group_2__2__Impl rule__ComponentDeclaration__Group_2__3 )
            // InternalFiacre.g:10003:2: rule__ComponentDeclaration__Group_2__2__Impl rule__ComponentDeclaration__Group_2__3
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ComponentDeclaration__Group_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__2"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__2__Impl"
    // InternalFiacre.g:10010:1: rule__ComponentDeclaration__Group_2__2__Impl : ( ( rule__ComponentDeclaration__Group_2_2__0 )* ) ;
    public final void rule__ComponentDeclaration__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10014:1: ( ( ( rule__ComponentDeclaration__Group_2_2__0 )* ) )
            // InternalFiacre.g:10015:1: ( ( rule__ComponentDeclaration__Group_2_2__0 )* )
            {
            // InternalFiacre.g:10015:1: ( ( rule__ComponentDeclaration__Group_2_2__0 )* )
            // InternalFiacre.g:10016:2: ( rule__ComponentDeclaration__Group_2_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_2_2()); 
            }
            // InternalFiacre.g:10017:2: ( rule__ComponentDeclaration__Group_2_2__0 )*
            loop102:
            do {
                int alt102=2;
                int LA102_0 = input.LA(1);

                if ( (LA102_0==24) ) {
                    alt102=1;
                }


                switch (alt102) {
            	case 1 :
            	    // InternalFiacre.g:10017:3: rule__ComponentDeclaration__Group_2_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentDeclaration__Group_2_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop102;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__3"
    // InternalFiacre.g:10025:1: rule__ComponentDeclaration__Group_2__3 : rule__ComponentDeclaration__Group_2__3__Impl ;
    public final void rule__ComponentDeclaration__Group_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10029:1: ( rule__ComponentDeclaration__Group_2__3__Impl )
            // InternalFiacre.g:10030:2: rule__ComponentDeclaration__Group_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__3"


    // $ANTLR start "rule__ComponentDeclaration__Group_2__3__Impl"
    // InternalFiacre.g:10036:1: rule__ComponentDeclaration__Group_2__3__Impl : ( ']' ) ;
    public final void rule__ComponentDeclaration__Group_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10040:1: ( ( ']' ) )
            // InternalFiacre.g:10041:1: ( ']' )
            {
            // InternalFiacre.g:10041:1: ( ']' )
            // InternalFiacre.g:10042:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getRightSquareBracketKeyword_2_3()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getRightSquareBracketKeyword_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2__3__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2_2__0"
    // InternalFiacre.g:10052:1: rule__ComponentDeclaration__Group_2_2__0 : rule__ComponentDeclaration__Group_2_2__0__Impl rule__ComponentDeclaration__Group_2_2__1 ;
    public final void rule__ComponentDeclaration__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10056:1: ( rule__ComponentDeclaration__Group_2_2__0__Impl rule__ComponentDeclaration__Group_2_2__1 )
            // InternalFiacre.g:10057:2: rule__ComponentDeclaration__Group_2_2__0__Impl rule__ComponentDeclaration__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_2_2__0__Impl"
    // InternalFiacre.g:10064:1: rule__ComponentDeclaration__Group_2_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentDeclaration__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10068:1: ( ( ',' ) )
            // InternalFiacre.g:10069:1: ( ',' )
            {
            // InternalFiacre.g:10069:1: ( ',' )
            // InternalFiacre.g:10070:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_2_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_2_2__1"
    // InternalFiacre.g:10079:1: rule__ComponentDeclaration__Group_2_2__1 : rule__ComponentDeclaration__Group_2_2__1__Impl ;
    public final void rule__ComponentDeclaration__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10083:1: ( rule__ComponentDeclaration__Group_2_2__1__Impl )
            // InternalFiacre.g:10084:2: rule__ComponentDeclaration__Group_2_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_2_2__1__Impl"
    // InternalFiacre.g:10090:1: rule__ComponentDeclaration__Group_2_2__1__Impl : ( ( rule__ComponentDeclaration__PortsAssignment_2_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10094:1: ( ( ( rule__ComponentDeclaration__PortsAssignment_2_2_1 ) ) )
            // InternalFiacre.g:10095:1: ( ( rule__ComponentDeclaration__PortsAssignment_2_2_1 ) )
            {
            // InternalFiacre.g:10095:1: ( ( rule__ComponentDeclaration__PortsAssignment_2_2_1 ) )
            // InternalFiacre.g:10096:2: ( rule__ComponentDeclaration__PortsAssignment_2_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPortsAssignment_2_2_1()); 
            }
            // InternalFiacre.g:10097:2: ( rule__ComponentDeclaration__PortsAssignment_2_2_1 )
            // InternalFiacre.g:10097:3: rule__ComponentDeclaration__PortsAssignment_2_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__PortsAssignment_2_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPortsAssignment_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_2_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__0"
    // InternalFiacre.g:10106:1: rule__ComponentDeclaration__Group_3__0 : rule__ComponentDeclaration__Group_3__0__Impl rule__ComponentDeclaration__Group_3__1 ;
    public final void rule__ComponentDeclaration__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10110:1: ( rule__ComponentDeclaration__Group_3__0__Impl rule__ComponentDeclaration__Group_3__1 )
            // InternalFiacre.g:10111:2: rule__ComponentDeclaration__Group_3__0__Impl rule__ComponentDeclaration__Group_3__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ComponentDeclaration__Group_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__0__Impl"
    // InternalFiacre.g:10118:1: rule__ComponentDeclaration__Group_3__0__Impl : ( '(' ) ;
    public final void rule__ComponentDeclaration__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10122:1: ( ( '(' ) )
            // InternalFiacre.g:10123:1: ( '(' )
            {
            // InternalFiacre.g:10123:1: ( '(' )
            // InternalFiacre.g:10124:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLeftParenthesisKeyword_3_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLeftParenthesisKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__1"
    // InternalFiacre.g:10133:1: rule__ComponentDeclaration__Group_3__1 : rule__ComponentDeclaration__Group_3__1__Impl rule__ComponentDeclaration__Group_3__2 ;
    public final void rule__ComponentDeclaration__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10137:1: ( rule__ComponentDeclaration__Group_3__1__Impl rule__ComponentDeclaration__Group_3__2 )
            // InternalFiacre.g:10138:2: rule__ComponentDeclaration__Group_3__1__Impl rule__ComponentDeclaration__Group_3__2
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ComponentDeclaration__Group_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__1__Impl"
    // InternalFiacre.g:10145:1: rule__ComponentDeclaration__Group_3__1__Impl : ( ( rule__ComponentDeclaration__ParametersAssignment_3_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10149:1: ( ( ( rule__ComponentDeclaration__ParametersAssignment_3_1 ) ) )
            // InternalFiacre.g:10150:1: ( ( rule__ComponentDeclaration__ParametersAssignment_3_1 ) )
            {
            // InternalFiacre.g:10150:1: ( ( rule__ComponentDeclaration__ParametersAssignment_3_1 ) )
            // InternalFiacre.g:10151:2: ( rule__ComponentDeclaration__ParametersAssignment_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getParametersAssignment_3_1()); 
            }
            // InternalFiacre.g:10152:2: ( rule__ComponentDeclaration__ParametersAssignment_3_1 )
            // InternalFiacre.g:10152:3: rule__ComponentDeclaration__ParametersAssignment_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__ParametersAssignment_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getParametersAssignment_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__2"
    // InternalFiacre.g:10160:1: rule__ComponentDeclaration__Group_3__2 : rule__ComponentDeclaration__Group_3__2__Impl rule__ComponentDeclaration__Group_3__3 ;
    public final void rule__ComponentDeclaration__Group_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10164:1: ( rule__ComponentDeclaration__Group_3__2__Impl rule__ComponentDeclaration__Group_3__3 )
            // InternalFiacre.g:10165:2: rule__ComponentDeclaration__Group_3__2__Impl rule__ComponentDeclaration__Group_3__3
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ComponentDeclaration__Group_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__2"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__2__Impl"
    // InternalFiacre.g:10172:1: rule__ComponentDeclaration__Group_3__2__Impl : ( ( rule__ComponentDeclaration__Group_3_2__0 )* ) ;
    public final void rule__ComponentDeclaration__Group_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10176:1: ( ( ( rule__ComponentDeclaration__Group_3_2__0 )* ) )
            // InternalFiacre.g:10177:1: ( ( rule__ComponentDeclaration__Group_3_2__0 )* )
            {
            // InternalFiacre.g:10177:1: ( ( rule__ComponentDeclaration__Group_3_2__0 )* )
            // InternalFiacre.g:10178:2: ( rule__ComponentDeclaration__Group_3_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_3_2()); 
            }
            // InternalFiacre.g:10179:2: ( rule__ComponentDeclaration__Group_3_2__0 )*
            loop103:
            do {
                int alt103=2;
                int LA103_0 = input.LA(1);

                if ( (LA103_0==24) ) {
                    alt103=1;
                }


                switch (alt103) {
            	case 1 :
            	    // InternalFiacre.g:10179:3: rule__ComponentDeclaration__Group_3_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentDeclaration__Group_3_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop103;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__3"
    // InternalFiacre.g:10187:1: rule__ComponentDeclaration__Group_3__3 : rule__ComponentDeclaration__Group_3__3__Impl ;
    public final void rule__ComponentDeclaration__Group_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10191:1: ( rule__ComponentDeclaration__Group_3__3__Impl )
            // InternalFiacre.g:10192:2: rule__ComponentDeclaration__Group_3__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__3"


    // $ANTLR start "rule__ComponentDeclaration__Group_3__3__Impl"
    // InternalFiacre.g:10198:1: rule__ComponentDeclaration__Group_3__3__Impl : ( ')' ) ;
    public final void rule__ComponentDeclaration__Group_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10202:1: ( ( ')' ) )
            // InternalFiacre.g:10203:1: ( ')' )
            {
            // InternalFiacre.g:10203:1: ( ')' )
            // InternalFiacre.g:10204:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getRightParenthesisKeyword_3_3()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getRightParenthesisKeyword_3_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3__3__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3_2__0"
    // InternalFiacre.g:10214:1: rule__ComponentDeclaration__Group_3_2__0 : rule__ComponentDeclaration__Group_3_2__0__Impl rule__ComponentDeclaration__Group_3_2__1 ;
    public final void rule__ComponentDeclaration__Group_3_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10218:1: ( rule__ComponentDeclaration__Group_3_2__0__Impl rule__ComponentDeclaration__Group_3_2__1 )
            // InternalFiacre.g:10219:2: rule__ComponentDeclaration__Group_3_2__0__Impl rule__ComponentDeclaration__Group_3_2__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ComponentDeclaration__Group_3_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_3_2__0__Impl"
    // InternalFiacre.g:10226:1: rule__ComponentDeclaration__Group_3_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentDeclaration__Group_3_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10230:1: ( ( ',' ) )
            // InternalFiacre.g:10231:1: ( ',' )
            {
            // InternalFiacre.g:10231:1: ( ',' )
            // InternalFiacre.g:10232:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_3_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_3_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_3_2__1"
    // InternalFiacre.g:10241:1: rule__ComponentDeclaration__Group_3_2__1 : rule__ComponentDeclaration__Group_3_2__1__Impl ;
    public final void rule__ComponentDeclaration__Group_3_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10245:1: ( rule__ComponentDeclaration__Group_3_2__1__Impl )
            // InternalFiacre.g:10246:2: rule__ComponentDeclaration__Group_3_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_3_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_3_2__1__Impl"
    // InternalFiacre.g:10252:1: rule__ComponentDeclaration__Group_3_2__1__Impl : ( ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_3_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10256:1: ( ( ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 ) ) )
            // InternalFiacre.g:10257:1: ( ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 ) )
            {
            // InternalFiacre.g:10257:1: ( ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 ) )
            // InternalFiacre.g:10258:2: ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getParametersAssignment_3_2_1()); 
            }
            // InternalFiacre.g:10259:2: ( rule__ComponentDeclaration__ParametersAssignment_3_2_1 )
            // InternalFiacre.g:10259:3: rule__ComponentDeclaration__ParametersAssignment_3_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__ParametersAssignment_3_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getParametersAssignment_3_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_3_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__0"
    // InternalFiacre.g:10268:1: rule__ComponentDeclaration__Group_5__0 : rule__ComponentDeclaration__Group_5__0__Impl rule__ComponentDeclaration__Group_5__1 ;
    public final void rule__ComponentDeclaration__Group_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10272:1: ( rule__ComponentDeclaration__Group_5__0__Impl rule__ComponentDeclaration__Group_5__1 )
            // InternalFiacre.g:10273:2: rule__ComponentDeclaration__Group_5__0__Impl rule__ComponentDeclaration__Group_5__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__0__Impl"
    // InternalFiacre.g:10280:1: rule__ComponentDeclaration__Group_5__0__Impl : ( 'var' ) ;
    public final void rule__ComponentDeclaration__Group_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10284:1: ( ( 'var' ) )
            // InternalFiacre.g:10285:1: ( 'var' )
            {
            // InternalFiacre.g:10285:1: ( 'var' )
            // InternalFiacre.g:10286:2: 'var'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getVarKeyword_5_0()); 
            }
            match(input,25,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getVarKeyword_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__1"
    // InternalFiacre.g:10295:1: rule__ComponentDeclaration__Group_5__1 : rule__ComponentDeclaration__Group_5__1__Impl rule__ComponentDeclaration__Group_5__2 ;
    public final void rule__ComponentDeclaration__Group_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10299:1: ( rule__ComponentDeclaration__Group_5__1__Impl rule__ComponentDeclaration__Group_5__2 )
            // InternalFiacre.g:10300:2: rule__ComponentDeclaration__Group_5__1__Impl rule__ComponentDeclaration__Group_5__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ComponentDeclaration__Group_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_5__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__1__Impl"
    // InternalFiacre.g:10307:1: rule__ComponentDeclaration__Group_5__1__Impl : ( ( rule__ComponentDeclaration__VariablesAssignment_5_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10311:1: ( ( ( rule__ComponentDeclaration__VariablesAssignment_5_1 ) ) )
            // InternalFiacre.g:10312:1: ( ( rule__ComponentDeclaration__VariablesAssignment_5_1 ) )
            {
            // InternalFiacre.g:10312:1: ( ( rule__ComponentDeclaration__VariablesAssignment_5_1 ) )
            // InternalFiacre.g:10313:2: ( rule__ComponentDeclaration__VariablesAssignment_5_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getVariablesAssignment_5_1()); 
            }
            // InternalFiacre.g:10314:2: ( rule__ComponentDeclaration__VariablesAssignment_5_1 )
            // InternalFiacre.g:10314:3: rule__ComponentDeclaration__VariablesAssignment_5_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__VariablesAssignment_5_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getVariablesAssignment_5_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__2"
    // InternalFiacre.g:10322:1: rule__ComponentDeclaration__Group_5__2 : rule__ComponentDeclaration__Group_5__2__Impl ;
    public final void rule__ComponentDeclaration__Group_5__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10326:1: ( rule__ComponentDeclaration__Group_5__2__Impl )
            // InternalFiacre.g:10327:2: rule__ComponentDeclaration__Group_5__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_5__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__2"


    // $ANTLR start "rule__ComponentDeclaration__Group_5__2__Impl"
    // InternalFiacre.g:10333:1: rule__ComponentDeclaration__Group_5__2__Impl : ( ( rule__ComponentDeclaration__Group_5_2__0 )* ) ;
    public final void rule__ComponentDeclaration__Group_5__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10337:1: ( ( ( rule__ComponentDeclaration__Group_5_2__0 )* ) )
            // InternalFiacre.g:10338:1: ( ( rule__ComponentDeclaration__Group_5_2__0 )* )
            {
            // InternalFiacre.g:10338:1: ( ( rule__ComponentDeclaration__Group_5_2__0 )* )
            // InternalFiacre.g:10339:2: ( rule__ComponentDeclaration__Group_5_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_5_2()); 
            }
            // InternalFiacre.g:10340:2: ( rule__ComponentDeclaration__Group_5_2__0 )*
            loop104:
            do {
                int alt104=2;
                int LA104_0 = input.LA(1);

                if ( (LA104_0==24) ) {
                    alt104=1;
                }


                switch (alt104) {
            	case 1 :
            	    // InternalFiacre.g:10340:3: rule__ComponentDeclaration__Group_5_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentDeclaration__Group_5_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop104;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_5_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_5_2__0"
    // InternalFiacre.g:10349:1: rule__ComponentDeclaration__Group_5_2__0 : rule__ComponentDeclaration__Group_5_2__0__Impl rule__ComponentDeclaration__Group_5_2__1 ;
    public final void rule__ComponentDeclaration__Group_5_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10353:1: ( rule__ComponentDeclaration__Group_5_2__0__Impl rule__ComponentDeclaration__Group_5_2__1 )
            // InternalFiacre.g:10354:2: rule__ComponentDeclaration__Group_5_2__0__Impl rule__ComponentDeclaration__Group_5_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_5_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_5_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_5_2__0__Impl"
    // InternalFiacre.g:10361:1: rule__ComponentDeclaration__Group_5_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentDeclaration__Group_5_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10365:1: ( ( ',' ) )
            // InternalFiacre.g:10366:1: ( ',' )
            {
            // InternalFiacre.g:10366:1: ( ',' )
            // InternalFiacre.g:10367:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_5_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_5_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_5_2__1"
    // InternalFiacre.g:10376:1: rule__ComponentDeclaration__Group_5_2__1 : rule__ComponentDeclaration__Group_5_2__1__Impl ;
    public final void rule__ComponentDeclaration__Group_5_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10380:1: ( rule__ComponentDeclaration__Group_5_2__1__Impl )
            // InternalFiacre.g:10381:2: rule__ComponentDeclaration__Group_5_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_5_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_5_2__1__Impl"
    // InternalFiacre.g:10387:1: rule__ComponentDeclaration__Group_5_2__1__Impl : ( ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_5_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10391:1: ( ( ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 ) ) )
            // InternalFiacre.g:10392:1: ( ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 ) )
            {
            // InternalFiacre.g:10392:1: ( ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 ) )
            // InternalFiacre.g:10393:2: ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getVariablesAssignment_5_2_1()); 
            }
            // InternalFiacre.g:10394:2: ( rule__ComponentDeclaration__VariablesAssignment_5_2_1 )
            // InternalFiacre.g:10394:3: rule__ComponentDeclaration__VariablesAssignment_5_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__VariablesAssignment_5_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getVariablesAssignment_5_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_5_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__0"
    // InternalFiacre.g:10403:1: rule__ComponentDeclaration__Group_6__0 : rule__ComponentDeclaration__Group_6__0__Impl rule__ComponentDeclaration__Group_6__1 ;
    public final void rule__ComponentDeclaration__Group_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10407:1: ( rule__ComponentDeclaration__Group_6__0__Impl rule__ComponentDeclaration__Group_6__1 )
            // InternalFiacre.g:10408:2: rule__ComponentDeclaration__Group_6__0__Impl rule__ComponentDeclaration__Group_6__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__0__Impl"
    // InternalFiacre.g:10415:1: rule__ComponentDeclaration__Group_6__0__Impl : ( 'port' ) ;
    public final void rule__ComponentDeclaration__Group_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10419:1: ( ( 'port' ) )
            // InternalFiacre.g:10420:1: ( 'port' )
            {
            // InternalFiacre.g:10420:1: ( 'port' )
            // InternalFiacre.g:10421:2: 'port'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPortKeyword_6_0()); 
            }
            match(input,44,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPortKeyword_6_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__1"
    // InternalFiacre.g:10430:1: rule__ComponentDeclaration__Group_6__1 : rule__ComponentDeclaration__Group_6__1__Impl rule__ComponentDeclaration__Group_6__2 ;
    public final void rule__ComponentDeclaration__Group_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10434:1: ( rule__ComponentDeclaration__Group_6__1__Impl rule__ComponentDeclaration__Group_6__2 )
            // InternalFiacre.g:10435:2: rule__ComponentDeclaration__Group_6__1__Impl rule__ComponentDeclaration__Group_6__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ComponentDeclaration__Group_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_6__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__1__Impl"
    // InternalFiacre.g:10442:1: rule__ComponentDeclaration__Group_6__1__Impl : ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10446:1: ( ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 ) ) )
            // InternalFiacre.g:10447:1: ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 ) )
            {
            // InternalFiacre.g:10447:1: ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 ) )
            // InternalFiacre.g:10448:2: ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLocalPortsAssignment_6_1()); 
            }
            // InternalFiacre.g:10449:2: ( rule__ComponentDeclaration__LocalPortsAssignment_6_1 )
            // InternalFiacre.g:10449:3: rule__ComponentDeclaration__LocalPortsAssignment_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__LocalPortsAssignment_6_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLocalPortsAssignment_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__2"
    // InternalFiacre.g:10457:1: rule__ComponentDeclaration__Group_6__2 : rule__ComponentDeclaration__Group_6__2__Impl ;
    public final void rule__ComponentDeclaration__Group_6__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10461:1: ( rule__ComponentDeclaration__Group_6__2__Impl )
            // InternalFiacre.g:10462:2: rule__ComponentDeclaration__Group_6__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_6__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__2"


    // $ANTLR start "rule__ComponentDeclaration__Group_6__2__Impl"
    // InternalFiacre.g:10468:1: rule__ComponentDeclaration__Group_6__2__Impl : ( ( rule__ComponentDeclaration__Group_6_2__0 )* ) ;
    public final void rule__ComponentDeclaration__Group_6__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10472:1: ( ( ( rule__ComponentDeclaration__Group_6_2__0 )* ) )
            // InternalFiacre.g:10473:1: ( ( rule__ComponentDeclaration__Group_6_2__0 )* )
            {
            // InternalFiacre.g:10473:1: ( ( rule__ComponentDeclaration__Group_6_2__0 )* )
            // InternalFiacre.g:10474:2: ( rule__ComponentDeclaration__Group_6_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_6_2()); 
            }
            // InternalFiacre.g:10475:2: ( rule__ComponentDeclaration__Group_6_2__0 )*
            loop105:
            do {
                int alt105=2;
                int LA105_0 = input.LA(1);

                if ( (LA105_0==24) ) {
                    alt105=1;
                }


                switch (alt105) {
            	case 1 :
            	    // InternalFiacre.g:10475:3: rule__ComponentDeclaration__Group_6_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentDeclaration__Group_6_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop105;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_6_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_6_2__0"
    // InternalFiacre.g:10484:1: rule__ComponentDeclaration__Group_6_2__0 : rule__ComponentDeclaration__Group_6_2__0__Impl rule__ComponentDeclaration__Group_6_2__1 ;
    public final void rule__ComponentDeclaration__Group_6_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10488:1: ( rule__ComponentDeclaration__Group_6_2__0__Impl rule__ComponentDeclaration__Group_6_2__1 )
            // InternalFiacre.g:10489:2: rule__ComponentDeclaration__Group_6_2__0__Impl rule__ComponentDeclaration__Group_6_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_6_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_6_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_6_2__0__Impl"
    // InternalFiacre.g:10496:1: rule__ComponentDeclaration__Group_6_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentDeclaration__Group_6_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10500:1: ( ( ',' ) )
            // InternalFiacre.g:10501:1: ( ',' )
            {
            // InternalFiacre.g:10501:1: ( ',' )
            // InternalFiacre.g:10502:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_6_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_6_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_6_2__1"
    // InternalFiacre.g:10511:1: rule__ComponentDeclaration__Group_6_2__1 : rule__ComponentDeclaration__Group_6_2__1__Impl ;
    public final void rule__ComponentDeclaration__Group_6_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10515:1: ( rule__ComponentDeclaration__Group_6_2__1__Impl )
            // InternalFiacre.g:10516:2: rule__ComponentDeclaration__Group_6_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_6_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_6_2__1__Impl"
    // InternalFiacre.g:10522:1: rule__ComponentDeclaration__Group_6_2__1__Impl : ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_6_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10526:1: ( ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 ) ) )
            // InternalFiacre.g:10527:1: ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 ) )
            {
            // InternalFiacre.g:10527:1: ( ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 ) )
            // InternalFiacre.g:10528:2: ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLocalPortsAssignment_6_2_1()); 
            }
            // InternalFiacre.g:10529:2: ( rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 )
            // InternalFiacre.g:10529:3: rule__ComponentDeclaration__LocalPortsAssignment_6_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__LocalPortsAssignment_6_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLocalPortsAssignment_6_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_6_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__0"
    // InternalFiacre.g:10538:1: rule__ComponentDeclaration__Group_7__0 : rule__ComponentDeclaration__Group_7__0__Impl rule__ComponentDeclaration__Group_7__1 ;
    public final void rule__ComponentDeclaration__Group_7__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10542:1: ( rule__ComponentDeclaration__Group_7__0__Impl rule__ComponentDeclaration__Group_7__1 )
            // InternalFiacre.g:10543:2: rule__ComponentDeclaration__Group_7__0__Impl rule__ComponentDeclaration__Group_7__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_7__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_7__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__0__Impl"
    // InternalFiacre.g:10550:1: rule__ComponentDeclaration__Group_7__0__Impl : ( 'priority' ) ;
    public final void rule__ComponentDeclaration__Group_7__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10554:1: ( ( 'priority' ) )
            // InternalFiacre.g:10555:1: ( 'priority' )
            {
            // InternalFiacre.g:10555:1: ( 'priority' )
            // InternalFiacre.g:10556:2: 'priority'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPriorityKeyword_7_0()); 
            }
            match(input,45,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPriorityKeyword_7_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__1"
    // InternalFiacre.g:10565:1: rule__ComponentDeclaration__Group_7__1 : rule__ComponentDeclaration__Group_7__1__Impl rule__ComponentDeclaration__Group_7__2 ;
    public final void rule__ComponentDeclaration__Group_7__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10569:1: ( rule__ComponentDeclaration__Group_7__1__Impl rule__ComponentDeclaration__Group_7__2 )
            // InternalFiacre.g:10570:2: rule__ComponentDeclaration__Group_7__1__Impl rule__ComponentDeclaration__Group_7__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ComponentDeclaration__Group_7__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_7__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__1__Impl"
    // InternalFiacre.g:10577:1: rule__ComponentDeclaration__Group_7__1__Impl : ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_7__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10581:1: ( ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 ) ) )
            // InternalFiacre.g:10582:1: ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 ) )
            {
            // InternalFiacre.g:10582:1: ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 ) )
            // InternalFiacre.g:10583:2: ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPrioritiesAssignment_7_1()); 
            }
            // InternalFiacre.g:10584:2: ( rule__ComponentDeclaration__PrioritiesAssignment_7_1 )
            // InternalFiacre.g:10584:3: rule__ComponentDeclaration__PrioritiesAssignment_7_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__PrioritiesAssignment_7_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPrioritiesAssignment_7_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__2"
    // InternalFiacre.g:10592:1: rule__ComponentDeclaration__Group_7__2 : rule__ComponentDeclaration__Group_7__2__Impl ;
    public final void rule__ComponentDeclaration__Group_7__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10596:1: ( rule__ComponentDeclaration__Group_7__2__Impl )
            // InternalFiacre.g:10597:2: rule__ComponentDeclaration__Group_7__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_7__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__2"


    // $ANTLR start "rule__ComponentDeclaration__Group_7__2__Impl"
    // InternalFiacre.g:10603:1: rule__ComponentDeclaration__Group_7__2__Impl : ( ( rule__ComponentDeclaration__Group_7_2__0 )* ) ;
    public final void rule__ComponentDeclaration__Group_7__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10607:1: ( ( ( rule__ComponentDeclaration__Group_7_2__0 )* ) )
            // InternalFiacre.g:10608:1: ( ( rule__ComponentDeclaration__Group_7_2__0 )* )
            {
            // InternalFiacre.g:10608:1: ( ( rule__ComponentDeclaration__Group_7_2__0 )* )
            // InternalFiacre.g:10609:2: ( rule__ComponentDeclaration__Group_7_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getGroup_7_2()); 
            }
            // InternalFiacre.g:10610:2: ( rule__ComponentDeclaration__Group_7_2__0 )*
            loop106:
            do {
                int alt106=2;
                int LA106_0 = input.LA(1);

                if ( (LA106_0==24) ) {
                    alt106=1;
                }


                switch (alt106) {
            	case 1 :
            	    // InternalFiacre.g:10610:3: rule__ComponentDeclaration__Group_7_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentDeclaration__Group_7_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop106;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getGroup_7_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7__2__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_7_2__0"
    // InternalFiacre.g:10619:1: rule__ComponentDeclaration__Group_7_2__0 : rule__ComponentDeclaration__Group_7_2__0__Impl rule__ComponentDeclaration__Group_7_2__1 ;
    public final void rule__ComponentDeclaration__Group_7_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10623:1: ( rule__ComponentDeclaration__Group_7_2__0__Impl rule__ComponentDeclaration__Group_7_2__1 )
            // InternalFiacre.g:10624:2: rule__ComponentDeclaration__Group_7_2__0__Impl rule__ComponentDeclaration__Group_7_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ComponentDeclaration__Group_7_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_7_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7_2__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_7_2__0__Impl"
    // InternalFiacre.g:10631:1: rule__ComponentDeclaration__Group_7_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentDeclaration__Group_7_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10635:1: ( ( ',' ) )
            // InternalFiacre.g:10636:1: ( ',' )
            {
            // InternalFiacre.g:10636:1: ( ',' )
            // InternalFiacre.g:10637:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_7_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getCommaKeyword_7_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7_2__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_7_2__1"
    // InternalFiacre.g:10646:1: rule__ComponentDeclaration__Group_7_2__1 : rule__ComponentDeclaration__Group_7_2__1__Impl ;
    public final void rule__ComponentDeclaration__Group_7_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10650:1: ( rule__ComponentDeclaration__Group_7_2__1__Impl )
            // InternalFiacre.g:10651:2: rule__ComponentDeclaration__Group_7_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_7_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7_2__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_7_2__1__Impl"
    // InternalFiacre.g:10657:1: rule__ComponentDeclaration__Group_7_2__1__Impl : ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_7_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10661:1: ( ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 ) ) )
            // InternalFiacre.g:10662:1: ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 ) )
            {
            // InternalFiacre.g:10662:1: ( ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 ) )
            // InternalFiacre.g:10663:2: ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPrioritiesAssignment_7_2_1()); 
            }
            // InternalFiacre.g:10664:2: ( rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 )
            // InternalFiacre.g:10664:3: rule__ComponentDeclaration__PrioritiesAssignment_7_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__PrioritiesAssignment_7_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPrioritiesAssignment_7_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_7_2__1__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_8__0"
    // InternalFiacre.g:10673:1: rule__ComponentDeclaration__Group_8__0 : rule__ComponentDeclaration__Group_8__0__Impl rule__ComponentDeclaration__Group_8__1 ;
    public final void rule__ComponentDeclaration__Group_8__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10677:1: ( rule__ComponentDeclaration__Group_8__0__Impl rule__ComponentDeclaration__Group_8__1 )
            // InternalFiacre.g:10678:2: rule__ComponentDeclaration__Group_8__0__Impl rule__ComponentDeclaration__Group_8__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ComponentDeclaration__Group_8__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_8__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_8__0"


    // $ANTLR start "rule__ComponentDeclaration__Group_8__0__Impl"
    // InternalFiacre.g:10685:1: rule__ComponentDeclaration__Group_8__0__Impl : ( 'init' ) ;
    public final void rule__ComponentDeclaration__Group_8__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10689:1: ( ( 'init' ) )
            // InternalFiacre.g:10690:1: ( 'init' )
            {
            // InternalFiacre.g:10690:1: ( 'init' )
            // InternalFiacre.g:10691:2: 'init'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getInitKeyword_8_0()); 
            }
            match(input,46,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getInitKeyword_8_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_8__0__Impl"


    // $ANTLR start "rule__ComponentDeclaration__Group_8__1"
    // InternalFiacre.g:10700:1: rule__ComponentDeclaration__Group_8__1 : rule__ComponentDeclaration__Group_8__1__Impl ;
    public final void rule__ComponentDeclaration__Group_8__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10704:1: ( rule__ComponentDeclaration__Group_8__1__Impl )
            // InternalFiacre.g:10705:2: rule__ComponentDeclaration__Group_8__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__Group_8__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_8__1"


    // $ANTLR start "rule__ComponentDeclaration__Group_8__1__Impl"
    // InternalFiacre.g:10711:1: rule__ComponentDeclaration__Group_8__1__Impl : ( ( rule__ComponentDeclaration__PreludeAssignment_8_1 ) ) ;
    public final void rule__ComponentDeclaration__Group_8__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10715:1: ( ( ( rule__ComponentDeclaration__PreludeAssignment_8_1 ) ) )
            // InternalFiacre.g:10716:1: ( ( rule__ComponentDeclaration__PreludeAssignment_8_1 ) )
            {
            // InternalFiacre.g:10716:1: ( ( rule__ComponentDeclaration__PreludeAssignment_8_1 ) )
            // InternalFiacre.g:10717:2: ( rule__ComponentDeclaration__PreludeAssignment_8_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPreludeAssignment_8_1()); 
            }
            // InternalFiacre.g:10718:2: ( rule__ComponentDeclaration__PreludeAssignment_8_1 )
            // InternalFiacre.g:10718:3: rule__ComponentDeclaration__PreludeAssignment_8_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentDeclaration__PreludeAssignment_8_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPreludeAssignment_8_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__Group_8__1__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group__0"
    // InternalFiacre.g:10727:1: rule__PortsDeclaration__Group__0 : rule__PortsDeclaration__Group__0__Impl rule__PortsDeclaration__Group__1 ;
    public final void rule__PortsDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10731:1: ( rule__PortsDeclaration__Group__0__Impl rule__PortsDeclaration__Group__1 )
            // InternalFiacre.g:10732:2: rule__PortsDeclaration__Group__0__Impl rule__PortsDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__PortsDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__0"


    // $ANTLR start "rule__PortsDeclaration__Group__0__Impl"
    // InternalFiacre.g:10739:1: rule__PortsDeclaration__Group__0__Impl : ( ( rule__PortsDeclaration__PortsAssignment_0 ) ) ;
    public final void rule__PortsDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10743:1: ( ( ( rule__PortsDeclaration__PortsAssignment_0 ) ) )
            // InternalFiacre.g:10744:1: ( ( rule__PortsDeclaration__PortsAssignment_0 ) )
            {
            // InternalFiacre.g:10744:1: ( ( rule__PortsDeclaration__PortsAssignment_0 ) )
            // InternalFiacre.g:10745:2: ( rule__PortsDeclaration__PortsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getPortsAssignment_0()); 
            }
            // InternalFiacre.g:10746:2: ( rule__PortsDeclaration__PortsAssignment_0 )
            // InternalFiacre.g:10746:3: rule__PortsDeclaration__PortsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__PortsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getPortsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__0__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group__1"
    // InternalFiacre.g:10754:1: rule__PortsDeclaration__Group__1 : rule__PortsDeclaration__Group__1__Impl rule__PortsDeclaration__Group__2 ;
    public final void rule__PortsDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10758:1: ( rule__PortsDeclaration__Group__1__Impl rule__PortsDeclaration__Group__2 )
            // InternalFiacre.g:10759:2: rule__PortsDeclaration__Group__1__Impl rule__PortsDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__PortsDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__1"


    // $ANTLR start "rule__PortsDeclaration__Group__1__Impl"
    // InternalFiacre.g:10766:1: rule__PortsDeclaration__Group__1__Impl : ( ( rule__PortsDeclaration__Group_1__0 )* ) ;
    public final void rule__PortsDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10770:1: ( ( ( rule__PortsDeclaration__Group_1__0 )* ) )
            // InternalFiacre.g:10771:1: ( ( rule__PortsDeclaration__Group_1__0 )* )
            {
            // InternalFiacre.g:10771:1: ( ( rule__PortsDeclaration__Group_1__0 )* )
            // InternalFiacre.g:10772:2: ( rule__PortsDeclaration__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:10773:2: ( rule__PortsDeclaration__Group_1__0 )*
            loop107:
            do {
                int alt107=2;
                int LA107_0 = input.LA(1);

                if ( (LA107_0==24) ) {
                    alt107=1;
                }


                switch (alt107) {
            	case 1 :
            	    // InternalFiacre.g:10773:3: rule__PortsDeclaration__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PortsDeclaration__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop107;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__1__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group__2"
    // InternalFiacre.g:10781:1: rule__PortsDeclaration__Group__2 : rule__PortsDeclaration__Group__2__Impl rule__PortsDeclaration__Group__3 ;
    public final void rule__PortsDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10785:1: ( rule__PortsDeclaration__Group__2__Impl rule__PortsDeclaration__Group__3 )
            // InternalFiacre.g:10786:2: rule__PortsDeclaration__Group__2__Impl rule__PortsDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_22);
            rule__PortsDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__2"


    // $ANTLR start "rule__PortsDeclaration__Group__2__Impl"
    // InternalFiacre.g:10793:1: rule__PortsDeclaration__Group__2__Impl : ( ':' ) ;
    public final void rule__PortsDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10797:1: ( ( ':' ) )
            // InternalFiacre.g:10798:1: ( ':' )
            {
            // InternalFiacre.g:10798:1: ( ':' )
            // InternalFiacre.g:10799:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__2__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group__3"
    // InternalFiacre.g:10808:1: rule__PortsDeclaration__Group__3 : rule__PortsDeclaration__Group__3__Impl ;
    public final void rule__PortsDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10812:1: ( rule__PortsDeclaration__Group__3__Impl )
            // InternalFiacre.g:10813:2: rule__PortsDeclaration__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__3"


    // $ANTLR start "rule__PortsDeclaration__Group__3__Impl"
    // InternalFiacre.g:10819:1: rule__PortsDeclaration__Group__3__Impl : ( ( rule__PortsDeclaration__TypeAssignment_3 ) ) ;
    public final void rule__PortsDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10823:1: ( ( ( rule__PortsDeclaration__TypeAssignment_3 ) ) )
            // InternalFiacre.g:10824:1: ( ( rule__PortsDeclaration__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:10824:1: ( ( rule__PortsDeclaration__TypeAssignment_3 ) )
            // InternalFiacre.g:10825:2: ( rule__PortsDeclaration__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:10826:2: ( rule__PortsDeclaration__TypeAssignment_3 )
            // InternalFiacre.g:10826:3: rule__PortsDeclaration__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group__3__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group_1__0"
    // InternalFiacre.g:10835:1: rule__PortsDeclaration__Group_1__0 : rule__PortsDeclaration__Group_1__0__Impl rule__PortsDeclaration__Group_1__1 ;
    public final void rule__PortsDeclaration__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10839:1: ( rule__PortsDeclaration__Group_1__0__Impl rule__PortsDeclaration__Group_1__1 )
            // InternalFiacre.g:10840:2: rule__PortsDeclaration__Group_1__0__Impl rule__PortsDeclaration__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__PortsDeclaration__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group_1__0"


    // $ANTLR start "rule__PortsDeclaration__Group_1__0__Impl"
    // InternalFiacre.g:10847:1: rule__PortsDeclaration__Group_1__0__Impl : ( ',' ) ;
    public final void rule__PortsDeclaration__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10851:1: ( ( ',' ) )
            // InternalFiacre.g:10852:1: ( ',' )
            {
            // InternalFiacre.g:10852:1: ( ',' )
            // InternalFiacre.g:10853:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group_1__0__Impl"


    // $ANTLR start "rule__PortsDeclaration__Group_1__1"
    // InternalFiacre.g:10862:1: rule__PortsDeclaration__Group_1__1 : rule__PortsDeclaration__Group_1__1__Impl ;
    public final void rule__PortsDeclaration__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10866:1: ( rule__PortsDeclaration__Group_1__1__Impl )
            // InternalFiacre.g:10867:2: rule__PortsDeclaration__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group_1__1"


    // $ANTLR start "rule__PortsDeclaration__Group_1__1__Impl"
    // InternalFiacre.g:10873:1: rule__PortsDeclaration__Group_1__1__Impl : ( ( rule__PortsDeclaration__PortsAssignment_1_1 ) ) ;
    public final void rule__PortsDeclaration__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10877:1: ( ( ( rule__PortsDeclaration__PortsAssignment_1_1 ) ) )
            // InternalFiacre.g:10878:1: ( ( rule__PortsDeclaration__PortsAssignment_1_1 ) )
            {
            // InternalFiacre.g:10878:1: ( ( rule__PortsDeclaration__PortsAssignment_1_1 ) )
            // InternalFiacre.g:10879:2: ( rule__PortsDeclaration__PortsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getPortsAssignment_1_1()); 
            }
            // InternalFiacre.g:10880:2: ( rule__PortsDeclaration__PortsAssignment_1_1 )
            // InternalFiacre.g:10880:3: rule__PortsDeclaration__PortsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortsDeclaration__PortsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getPortsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__Group_1__1__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__0"
    // InternalFiacre.g:10889:1: rule__LocalPortsDeclaration__Group__0 : rule__LocalPortsDeclaration__Group__0__Impl rule__LocalPortsDeclaration__Group__1 ;
    public final void rule__LocalPortsDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10893:1: ( rule__LocalPortsDeclaration__Group__0__Impl rule__LocalPortsDeclaration__Group__1 )
            // InternalFiacre.g:10894:2: rule__LocalPortsDeclaration__Group__0__Impl rule__LocalPortsDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__LocalPortsDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__0"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__0__Impl"
    // InternalFiacre.g:10901:1: rule__LocalPortsDeclaration__Group__0__Impl : ( ( rule__LocalPortsDeclaration__PortsAssignment_0 ) ) ;
    public final void rule__LocalPortsDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10905:1: ( ( ( rule__LocalPortsDeclaration__PortsAssignment_0 ) ) )
            // InternalFiacre.g:10906:1: ( ( rule__LocalPortsDeclaration__PortsAssignment_0 ) )
            {
            // InternalFiacre.g:10906:1: ( ( rule__LocalPortsDeclaration__PortsAssignment_0 ) )
            // InternalFiacre.g:10907:2: ( rule__LocalPortsDeclaration__PortsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getPortsAssignment_0()); 
            }
            // InternalFiacre.g:10908:2: ( rule__LocalPortsDeclaration__PortsAssignment_0 )
            // InternalFiacre.g:10908:3: rule__LocalPortsDeclaration__PortsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__PortsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getPortsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__0__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__1"
    // InternalFiacre.g:10916:1: rule__LocalPortsDeclaration__Group__1 : rule__LocalPortsDeclaration__Group__1__Impl rule__LocalPortsDeclaration__Group__2 ;
    public final void rule__LocalPortsDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10920:1: ( rule__LocalPortsDeclaration__Group__1__Impl rule__LocalPortsDeclaration__Group__2 )
            // InternalFiacre.g:10921:2: rule__LocalPortsDeclaration__Group__1__Impl rule__LocalPortsDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__LocalPortsDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__1"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__1__Impl"
    // InternalFiacre.g:10928:1: rule__LocalPortsDeclaration__Group__1__Impl : ( ( rule__LocalPortsDeclaration__Group_1__0 )* ) ;
    public final void rule__LocalPortsDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10932:1: ( ( ( rule__LocalPortsDeclaration__Group_1__0 )* ) )
            // InternalFiacre.g:10933:1: ( ( rule__LocalPortsDeclaration__Group_1__0 )* )
            {
            // InternalFiacre.g:10933:1: ( ( rule__LocalPortsDeclaration__Group_1__0 )* )
            // InternalFiacre.g:10934:2: ( rule__LocalPortsDeclaration__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:10935:2: ( rule__LocalPortsDeclaration__Group_1__0 )*
            loop108:
            do {
                int alt108=2;
                int LA108_0 = input.LA(1);

                if ( (LA108_0==24) ) {
                    alt108=1;
                }


                switch (alt108) {
            	case 1 :
            	    // InternalFiacre.g:10935:3: rule__LocalPortsDeclaration__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__LocalPortsDeclaration__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop108;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__1__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__2"
    // InternalFiacre.g:10943:1: rule__LocalPortsDeclaration__Group__2 : rule__LocalPortsDeclaration__Group__2__Impl rule__LocalPortsDeclaration__Group__3 ;
    public final void rule__LocalPortsDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10947:1: ( rule__LocalPortsDeclaration__Group__2__Impl rule__LocalPortsDeclaration__Group__3 )
            // InternalFiacre.g:10948:2: rule__LocalPortsDeclaration__Group__2__Impl rule__LocalPortsDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_22);
            rule__LocalPortsDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__2"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__2__Impl"
    // InternalFiacre.g:10955:1: rule__LocalPortsDeclaration__Group__2__Impl : ( ':' ) ;
    public final void rule__LocalPortsDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10959:1: ( ( ':' ) )
            // InternalFiacre.g:10960:1: ( ':' )
            {
            // InternalFiacre.g:10960:1: ( ':' )
            // InternalFiacre.g:10961:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__2__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__3"
    // InternalFiacre.g:10970:1: rule__LocalPortsDeclaration__Group__3 : rule__LocalPortsDeclaration__Group__3__Impl rule__LocalPortsDeclaration__Group__4 ;
    public final void rule__LocalPortsDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10974:1: ( rule__LocalPortsDeclaration__Group__3__Impl rule__LocalPortsDeclaration__Group__4 )
            // InternalFiacre.g:10975:2: rule__LocalPortsDeclaration__Group__3__Impl rule__LocalPortsDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_46);
            rule__LocalPortsDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__3"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__3__Impl"
    // InternalFiacre.g:10982:1: rule__LocalPortsDeclaration__Group__3__Impl : ( ( rule__LocalPortsDeclaration__TypeAssignment_3 ) ) ;
    public final void rule__LocalPortsDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:10986:1: ( ( ( rule__LocalPortsDeclaration__TypeAssignment_3 ) ) )
            // InternalFiacre.g:10987:1: ( ( rule__LocalPortsDeclaration__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:10987:1: ( ( rule__LocalPortsDeclaration__TypeAssignment_3 ) )
            // InternalFiacre.g:10988:2: ( rule__LocalPortsDeclaration__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:10989:2: ( rule__LocalPortsDeclaration__TypeAssignment_3 )
            // InternalFiacre.g:10989:3: rule__LocalPortsDeclaration__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__3__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__4"
    // InternalFiacre.g:10997:1: rule__LocalPortsDeclaration__Group__4 : rule__LocalPortsDeclaration__Group__4__Impl ;
    public final void rule__LocalPortsDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11001:1: ( rule__LocalPortsDeclaration__Group__4__Impl )
            // InternalFiacre.g:11002:2: rule__LocalPortsDeclaration__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__4"


    // $ANTLR start "rule__LocalPortsDeclaration__Group__4__Impl"
    // InternalFiacre.g:11008:1: rule__LocalPortsDeclaration__Group__4__Impl : ( ( rule__LocalPortsDeclaration__Group_4__0 )? ) ;
    public final void rule__LocalPortsDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11012:1: ( ( ( rule__LocalPortsDeclaration__Group_4__0 )? ) )
            // InternalFiacre.g:11013:1: ( ( rule__LocalPortsDeclaration__Group_4__0 )? )
            {
            // InternalFiacre.g:11013:1: ( ( rule__LocalPortsDeclaration__Group_4__0 )? )
            // InternalFiacre.g:11014:2: ( rule__LocalPortsDeclaration__Group_4__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getGroup_4()); 
            }
            // InternalFiacre.g:11015:2: ( rule__LocalPortsDeclaration__Group_4__0 )?
            int alt109=2;
            int LA109_0 = input.LA(1);

            if ( (LA109_0==49) ) {
                alt109=1;
            }
            switch (alt109) {
                case 1 :
                    // InternalFiacre.g:11015:3: rule__LocalPortsDeclaration__Group_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LocalPortsDeclaration__Group_4__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getGroup_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group__4__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_1__0"
    // InternalFiacre.g:11024:1: rule__LocalPortsDeclaration__Group_1__0 : rule__LocalPortsDeclaration__Group_1__0__Impl rule__LocalPortsDeclaration__Group_1__1 ;
    public final void rule__LocalPortsDeclaration__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11028:1: ( rule__LocalPortsDeclaration__Group_1__0__Impl rule__LocalPortsDeclaration__Group_1__1 )
            // InternalFiacre.g:11029:2: rule__LocalPortsDeclaration__Group_1__0__Impl rule__LocalPortsDeclaration__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__LocalPortsDeclaration__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_1__0"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_1__0__Impl"
    // InternalFiacre.g:11036:1: rule__LocalPortsDeclaration__Group_1__0__Impl : ( ',' ) ;
    public final void rule__LocalPortsDeclaration__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11040:1: ( ( ',' ) )
            // InternalFiacre.g:11041:1: ( ',' )
            {
            // InternalFiacre.g:11041:1: ( ',' )
            // InternalFiacre.g:11042:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_1__0__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_1__1"
    // InternalFiacre.g:11051:1: rule__LocalPortsDeclaration__Group_1__1 : rule__LocalPortsDeclaration__Group_1__1__Impl ;
    public final void rule__LocalPortsDeclaration__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11055:1: ( rule__LocalPortsDeclaration__Group_1__1__Impl )
            // InternalFiacre.g:11056:2: rule__LocalPortsDeclaration__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_1__1"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_1__1__Impl"
    // InternalFiacre.g:11062:1: rule__LocalPortsDeclaration__Group_1__1__Impl : ( ( rule__LocalPortsDeclaration__PortsAssignment_1_1 ) ) ;
    public final void rule__LocalPortsDeclaration__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11066:1: ( ( ( rule__LocalPortsDeclaration__PortsAssignment_1_1 ) ) )
            // InternalFiacre.g:11067:1: ( ( rule__LocalPortsDeclaration__PortsAssignment_1_1 ) )
            {
            // InternalFiacre.g:11067:1: ( ( rule__LocalPortsDeclaration__PortsAssignment_1_1 ) )
            // InternalFiacre.g:11068:2: ( rule__LocalPortsDeclaration__PortsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getPortsAssignment_1_1()); 
            }
            // InternalFiacre.g:11069:2: ( rule__LocalPortsDeclaration__PortsAssignment_1_1 )
            // InternalFiacre.g:11069:3: rule__LocalPortsDeclaration__PortsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__PortsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getPortsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_1__1__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__0"
    // InternalFiacre.g:11078:1: rule__LocalPortsDeclaration__Group_4__0 : rule__LocalPortsDeclaration__Group_4__0__Impl rule__LocalPortsDeclaration__Group_4__1 ;
    public final void rule__LocalPortsDeclaration__Group_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11082:1: ( rule__LocalPortsDeclaration__Group_4__0__Impl rule__LocalPortsDeclaration__Group_4__1 )
            // InternalFiacre.g:11083:2: rule__LocalPortsDeclaration__Group_4__0__Impl rule__LocalPortsDeclaration__Group_4__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__LocalPortsDeclaration__Group_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__0"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__0__Impl"
    // InternalFiacre.g:11090:1: rule__LocalPortsDeclaration__Group_4__0__Impl : ( 'in' ) ;
    public final void rule__LocalPortsDeclaration__Group_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11094:1: ( ( 'in' ) )
            // InternalFiacre.g:11095:1: ( 'in' )
            {
            // InternalFiacre.g:11095:1: ( 'in' )
            // InternalFiacre.g:11096:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getInKeyword_4_0()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getInKeyword_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__0__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__1"
    // InternalFiacre.g:11105:1: rule__LocalPortsDeclaration__Group_4__1 : rule__LocalPortsDeclaration__Group_4__1__Impl rule__LocalPortsDeclaration__Group_4__2 ;
    public final void rule__LocalPortsDeclaration__Group_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11109:1: ( rule__LocalPortsDeclaration__Group_4__1__Impl rule__LocalPortsDeclaration__Group_4__2 )
            // InternalFiacre.g:11110:2: rule__LocalPortsDeclaration__Group_4__1__Impl rule__LocalPortsDeclaration__Group_4__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__LocalPortsDeclaration__Group_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_4__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__1"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__1__Impl"
    // InternalFiacre.g:11117:1: rule__LocalPortsDeclaration__Group_4__1__Impl : ( ( rule__LocalPortsDeclaration__LeftAssignment_4_1 ) ) ;
    public final void rule__LocalPortsDeclaration__Group_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11121:1: ( ( ( rule__LocalPortsDeclaration__LeftAssignment_4_1 ) ) )
            // InternalFiacre.g:11122:1: ( ( rule__LocalPortsDeclaration__LeftAssignment_4_1 ) )
            {
            // InternalFiacre.g:11122:1: ( ( rule__LocalPortsDeclaration__LeftAssignment_4_1 ) )
            // InternalFiacre.g:11123:2: ( rule__LocalPortsDeclaration__LeftAssignment_4_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getLeftAssignment_4_1()); 
            }
            // InternalFiacre.g:11124:2: ( rule__LocalPortsDeclaration__LeftAssignment_4_1 )
            // InternalFiacre.g:11124:3: rule__LocalPortsDeclaration__LeftAssignment_4_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__LeftAssignment_4_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getLeftAssignment_4_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__1__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__2"
    // InternalFiacre.g:11132:1: rule__LocalPortsDeclaration__Group_4__2 : rule__LocalPortsDeclaration__Group_4__2__Impl rule__LocalPortsDeclaration__Group_4__3 ;
    public final void rule__LocalPortsDeclaration__Group_4__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11136:1: ( rule__LocalPortsDeclaration__Group_4__2__Impl rule__LocalPortsDeclaration__Group_4__3 )
            // InternalFiacre.g:11137:2: rule__LocalPortsDeclaration__Group_4__2__Impl rule__LocalPortsDeclaration__Group_4__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__LocalPortsDeclaration__Group_4__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_4__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__2"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__2__Impl"
    // InternalFiacre.g:11144:1: rule__LocalPortsDeclaration__Group_4__2__Impl : ( ',' ) ;
    public final void rule__LocalPortsDeclaration__Group_4__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11148:1: ( ( ',' ) )
            // InternalFiacre.g:11149:1: ( ',' )
            {
            // InternalFiacre.g:11149:1: ( ',' )
            // InternalFiacre.g:11150:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getCommaKeyword_4_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getCommaKeyword_4_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__2__Impl"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__3"
    // InternalFiacre.g:11159:1: rule__LocalPortsDeclaration__Group_4__3 : rule__LocalPortsDeclaration__Group_4__3__Impl ;
    public final void rule__LocalPortsDeclaration__Group_4__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11163:1: ( rule__LocalPortsDeclaration__Group_4__3__Impl )
            // InternalFiacre.g:11164:2: rule__LocalPortsDeclaration__Group_4__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__Group_4__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__3"


    // $ANTLR start "rule__LocalPortsDeclaration__Group_4__3__Impl"
    // InternalFiacre.g:11170:1: rule__LocalPortsDeclaration__Group_4__3__Impl : ( ( rule__LocalPortsDeclaration__RightAssignment_4_3 ) ) ;
    public final void rule__LocalPortsDeclaration__Group_4__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11174:1: ( ( ( rule__LocalPortsDeclaration__RightAssignment_4_3 ) ) )
            // InternalFiacre.g:11175:1: ( ( rule__LocalPortsDeclaration__RightAssignment_4_3 ) )
            {
            // InternalFiacre.g:11175:1: ( ( rule__LocalPortsDeclaration__RightAssignment_4_3 ) )
            // InternalFiacre.g:11176:2: ( rule__LocalPortsDeclaration__RightAssignment_4_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getRightAssignment_4_3()); 
            }
            // InternalFiacre.g:11177:2: ( rule__LocalPortsDeclaration__RightAssignment_4_3 )
            // InternalFiacre.g:11177:3: rule__LocalPortsDeclaration__RightAssignment_4_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LocalPortsDeclaration__RightAssignment_4_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getRightAssignment_4_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__Group_4__3__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__0"
    // InternalFiacre.g:11186:1: rule__ParametersDeclaration__Group__0 : rule__ParametersDeclaration__Group__0__Impl rule__ParametersDeclaration__Group__1 ;
    public final void rule__ParametersDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11190:1: ( rule__ParametersDeclaration__Group__0__Impl rule__ParametersDeclaration__Group__1 )
            // InternalFiacre.g:11191:2: rule__ParametersDeclaration__Group__0__Impl rule__ParametersDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__ParametersDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__0"


    // $ANTLR start "rule__ParametersDeclaration__Group__0__Impl"
    // InternalFiacre.g:11198:1: rule__ParametersDeclaration__Group__0__Impl : ( ( rule__ParametersDeclaration__ParametersAssignment_0 ) ) ;
    public final void rule__ParametersDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11202:1: ( ( ( rule__ParametersDeclaration__ParametersAssignment_0 ) ) )
            // InternalFiacre.g:11203:1: ( ( rule__ParametersDeclaration__ParametersAssignment_0 ) )
            {
            // InternalFiacre.g:11203:1: ( ( rule__ParametersDeclaration__ParametersAssignment_0 ) )
            // InternalFiacre.g:11204:2: ( rule__ParametersDeclaration__ParametersAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getParametersAssignment_0()); 
            }
            // InternalFiacre.g:11205:2: ( rule__ParametersDeclaration__ParametersAssignment_0 )
            // InternalFiacre.g:11205:3: rule__ParametersDeclaration__ParametersAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__ParametersAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getParametersAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__1"
    // InternalFiacre.g:11213:1: rule__ParametersDeclaration__Group__1 : rule__ParametersDeclaration__Group__1__Impl rule__ParametersDeclaration__Group__2 ;
    public final void rule__ParametersDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11217:1: ( rule__ParametersDeclaration__Group__1__Impl rule__ParametersDeclaration__Group__2 )
            // InternalFiacre.g:11218:2: rule__ParametersDeclaration__Group__1__Impl rule__ParametersDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__ParametersDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__1"


    // $ANTLR start "rule__ParametersDeclaration__Group__1__Impl"
    // InternalFiacre.g:11225:1: rule__ParametersDeclaration__Group__1__Impl : ( ( rule__ParametersDeclaration__Group_1__0 )* ) ;
    public final void rule__ParametersDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11229:1: ( ( ( rule__ParametersDeclaration__Group_1__0 )* ) )
            // InternalFiacre.g:11230:1: ( ( rule__ParametersDeclaration__Group_1__0 )* )
            {
            // InternalFiacre.g:11230:1: ( ( rule__ParametersDeclaration__Group_1__0 )* )
            // InternalFiacre.g:11231:2: ( rule__ParametersDeclaration__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:11232:2: ( rule__ParametersDeclaration__Group_1__0 )*
            loop110:
            do {
                int alt110=2;
                int LA110_0 = input.LA(1);

                if ( (LA110_0==24) ) {
                    alt110=1;
                }


                switch (alt110) {
            	case 1 :
            	    // InternalFiacre.g:11232:3: rule__ParametersDeclaration__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ParametersDeclaration__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop110;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__2"
    // InternalFiacre.g:11240:1: rule__ParametersDeclaration__Group__2 : rule__ParametersDeclaration__Group__2__Impl rule__ParametersDeclaration__Group__3 ;
    public final void rule__ParametersDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11244:1: ( rule__ParametersDeclaration__Group__2__Impl rule__ParametersDeclaration__Group__3 )
            // InternalFiacre.g:11245:2: rule__ParametersDeclaration__Group__2__Impl rule__ParametersDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_49);
            rule__ParametersDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__2"


    // $ANTLR start "rule__ParametersDeclaration__Group__2__Impl"
    // InternalFiacre.g:11252:1: rule__ParametersDeclaration__Group__2__Impl : ( ':' ) ;
    public final void rule__ParametersDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11256:1: ( ( ':' ) )
            // InternalFiacre.g:11257:1: ( ':' )
            {
            // InternalFiacre.g:11257:1: ( ':' )
            // InternalFiacre.g:11258:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__2__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__3"
    // InternalFiacre.g:11267:1: rule__ParametersDeclaration__Group__3 : rule__ParametersDeclaration__Group__3__Impl rule__ParametersDeclaration__Group__4 ;
    public final void rule__ParametersDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11271:1: ( rule__ParametersDeclaration__Group__3__Impl rule__ParametersDeclaration__Group__4 )
            // InternalFiacre.g:11272:2: rule__ParametersDeclaration__Group__3__Impl rule__ParametersDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_49);
            rule__ParametersDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__3"


    // $ANTLR start "rule__ParametersDeclaration__Group__3__Impl"
    // InternalFiacre.g:11279:1: rule__ParametersDeclaration__Group__3__Impl : ( ( rule__ParametersDeclaration__ReadAssignment_3 )? ) ;
    public final void rule__ParametersDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11283:1: ( ( ( rule__ParametersDeclaration__ReadAssignment_3 )? ) )
            // InternalFiacre.g:11284:1: ( ( rule__ParametersDeclaration__ReadAssignment_3 )? )
            {
            // InternalFiacre.g:11284:1: ( ( rule__ParametersDeclaration__ReadAssignment_3 )? )
            // InternalFiacre.g:11285:2: ( rule__ParametersDeclaration__ReadAssignment_3 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getReadAssignment_3()); 
            }
            // InternalFiacre.g:11286:2: ( rule__ParametersDeclaration__ReadAssignment_3 )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==138) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // InternalFiacre.g:11286:3: rule__ParametersDeclaration__ReadAssignment_3
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ParametersDeclaration__ReadAssignment_3();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getReadAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__3__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__4"
    // InternalFiacre.g:11294:1: rule__ParametersDeclaration__Group__4 : rule__ParametersDeclaration__Group__4__Impl rule__ParametersDeclaration__Group__5 ;
    public final void rule__ParametersDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11298:1: ( rule__ParametersDeclaration__Group__4__Impl rule__ParametersDeclaration__Group__5 )
            // InternalFiacre.g:11299:2: rule__ParametersDeclaration__Group__4__Impl rule__ParametersDeclaration__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_49);
            rule__ParametersDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__4"


    // $ANTLR start "rule__ParametersDeclaration__Group__4__Impl"
    // InternalFiacre.g:11306:1: rule__ParametersDeclaration__Group__4__Impl : ( ( rule__ParametersDeclaration__WriteAssignment_4 )? ) ;
    public final void rule__ParametersDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11310:1: ( ( ( rule__ParametersDeclaration__WriteAssignment_4 )? ) )
            // InternalFiacre.g:11311:1: ( ( rule__ParametersDeclaration__WriteAssignment_4 )? )
            {
            // InternalFiacre.g:11311:1: ( ( rule__ParametersDeclaration__WriteAssignment_4 )? )
            // InternalFiacre.g:11312:2: ( rule__ParametersDeclaration__WriteAssignment_4 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getWriteAssignment_4()); 
            }
            // InternalFiacre.g:11313:2: ( rule__ParametersDeclaration__WriteAssignment_4 )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==139) ) {
                alt112=1;
            }
            switch (alt112) {
                case 1 :
                    // InternalFiacre.g:11313:3: rule__ParametersDeclaration__WriteAssignment_4
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ParametersDeclaration__WriteAssignment_4();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getWriteAssignment_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__4__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group__5"
    // InternalFiacre.g:11321:1: rule__ParametersDeclaration__Group__5 : rule__ParametersDeclaration__Group__5__Impl ;
    public final void rule__ParametersDeclaration__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11325:1: ( rule__ParametersDeclaration__Group__5__Impl )
            // InternalFiacre.g:11326:2: rule__ParametersDeclaration__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__5"


    // $ANTLR start "rule__ParametersDeclaration__Group__5__Impl"
    // InternalFiacre.g:11332:1: rule__ParametersDeclaration__Group__5__Impl : ( ( rule__ParametersDeclaration__TypeAssignment_5 ) ) ;
    public final void rule__ParametersDeclaration__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11336:1: ( ( ( rule__ParametersDeclaration__TypeAssignment_5 ) ) )
            // InternalFiacre.g:11337:1: ( ( rule__ParametersDeclaration__TypeAssignment_5 ) )
            {
            // InternalFiacre.g:11337:1: ( ( rule__ParametersDeclaration__TypeAssignment_5 ) )
            // InternalFiacre.g:11338:2: ( rule__ParametersDeclaration__TypeAssignment_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getTypeAssignment_5()); 
            }
            // InternalFiacre.g:11339:2: ( rule__ParametersDeclaration__TypeAssignment_5 )
            // InternalFiacre.g:11339:3: rule__ParametersDeclaration__TypeAssignment_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__TypeAssignment_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getTypeAssignment_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group__5__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group_1__0"
    // InternalFiacre.g:11348:1: rule__ParametersDeclaration__Group_1__0 : rule__ParametersDeclaration__Group_1__0__Impl rule__ParametersDeclaration__Group_1__1 ;
    public final void rule__ParametersDeclaration__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11352:1: ( rule__ParametersDeclaration__Group_1__0__Impl rule__ParametersDeclaration__Group_1__1 )
            // InternalFiacre.g:11353:2: rule__ParametersDeclaration__Group_1__0__Impl rule__ParametersDeclaration__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ParametersDeclaration__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group_1__0"


    // $ANTLR start "rule__ParametersDeclaration__Group_1__0__Impl"
    // InternalFiacre.g:11360:1: rule__ParametersDeclaration__Group_1__0__Impl : ( ',' ) ;
    public final void rule__ParametersDeclaration__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11364:1: ( ( ',' ) )
            // InternalFiacre.g:11365:1: ( ',' )
            {
            // InternalFiacre.g:11365:1: ( ',' )
            // InternalFiacre.g:11366:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group_1__0__Impl"


    // $ANTLR start "rule__ParametersDeclaration__Group_1__1"
    // InternalFiacre.g:11375:1: rule__ParametersDeclaration__Group_1__1 : rule__ParametersDeclaration__Group_1__1__Impl ;
    public final void rule__ParametersDeclaration__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11379:1: ( rule__ParametersDeclaration__Group_1__1__Impl )
            // InternalFiacre.g:11380:2: rule__ParametersDeclaration__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group_1__1"


    // $ANTLR start "rule__ParametersDeclaration__Group_1__1__Impl"
    // InternalFiacre.g:11386:1: rule__ParametersDeclaration__Group_1__1__Impl : ( ( rule__ParametersDeclaration__ParametersAssignment_1_1 ) ) ;
    public final void rule__ParametersDeclaration__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11390:1: ( ( ( rule__ParametersDeclaration__ParametersAssignment_1_1 ) ) )
            // InternalFiacre.g:11391:1: ( ( rule__ParametersDeclaration__ParametersAssignment_1_1 ) )
            {
            // InternalFiacre.g:11391:1: ( ( rule__ParametersDeclaration__ParametersAssignment_1_1 ) )
            // InternalFiacre.g:11392:2: ( rule__ParametersDeclaration__ParametersAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getParametersAssignment_1_1()); 
            }
            // InternalFiacre.g:11393:2: ( rule__ParametersDeclaration__ParametersAssignment_1_1 )
            // InternalFiacre.g:11393:3: rule__ParametersDeclaration__ParametersAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParametersDeclaration__ParametersAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getParametersAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__Group_1__1__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group__0"
    // InternalFiacre.g:11402:1: rule__ParameterDeclaration__Group__0 : rule__ParameterDeclaration__Group__0__Impl rule__ParameterDeclaration__Group__1 ;
    public final void rule__ParameterDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11406:1: ( rule__ParameterDeclaration__Group__0__Impl rule__ParameterDeclaration__Group__1 )
            // InternalFiacre.g:11407:2: rule__ParameterDeclaration__Group__0__Impl rule__ParameterDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_21);
            rule__ParameterDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group__0"


    // $ANTLR start "rule__ParameterDeclaration__Group__0__Impl"
    // InternalFiacre.g:11414:1: rule__ParameterDeclaration__Group__0__Impl : ( ( rule__ParameterDeclaration__Group_0__0 )? ) ;
    public final void rule__ParameterDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11418:1: ( ( ( rule__ParameterDeclaration__Group_0__0 )? ) )
            // InternalFiacre.g:11419:1: ( ( rule__ParameterDeclaration__Group_0__0 )? )
            {
            // InternalFiacre.g:11419:1: ( ( rule__ParameterDeclaration__Group_0__0 )? )
            // InternalFiacre.g:11420:2: ( rule__ParameterDeclaration__Group_0__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getGroup_0()); 
            }
            // InternalFiacre.g:11421:2: ( rule__ParameterDeclaration__Group_0__0 )?
            int alt113=2;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==99) ) {
                alt113=1;
            }
            switch (alt113) {
                case 1 :
                    // InternalFiacre.g:11421:3: rule__ParameterDeclaration__Group_0__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ParameterDeclaration__Group_0__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getGroup_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group__0__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group__1"
    // InternalFiacre.g:11429:1: rule__ParameterDeclaration__Group__1 : rule__ParameterDeclaration__Group__1__Impl ;
    public final void rule__ParameterDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11433:1: ( rule__ParameterDeclaration__Group__1__Impl )
            // InternalFiacre.g:11434:2: rule__ParameterDeclaration__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group__1"


    // $ANTLR start "rule__ParameterDeclaration__Group__1__Impl"
    // InternalFiacre.g:11440:1: rule__ParameterDeclaration__Group__1__Impl : ( ( rule__ParameterDeclaration__NameAssignment_1 ) ) ;
    public final void rule__ParameterDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11444:1: ( ( ( rule__ParameterDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:11445:1: ( ( rule__ParameterDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:11445:1: ( ( rule__ParameterDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:11446:2: ( rule__ParameterDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:11447:2: ( rule__ParameterDeclaration__NameAssignment_1 )
            // InternalFiacre.g:11447:3: rule__ParameterDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group__1__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group_0__0"
    // InternalFiacre.g:11456:1: rule__ParameterDeclaration__Group_0__0 : rule__ParameterDeclaration__Group_0__0__Impl rule__ParameterDeclaration__Group_0__1 ;
    public final void rule__ParameterDeclaration__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11460:1: ( rule__ParameterDeclaration__Group_0__0__Impl rule__ParameterDeclaration__Group_0__1 )
            // InternalFiacre.g:11461:2: rule__ParameterDeclaration__Group_0__0__Impl rule__ParameterDeclaration__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_50);
            rule__ParameterDeclaration__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0__0"


    // $ANTLR start "rule__ParameterDeclaration__Group_0__0__Impl"
    // InternalFiacre.g:11468:1: rule__ParameterDeclaration__Group_0__0__Impl : ( ( rule__ParameterDeclaration__ReferenceAssignment_0_0 ) ) ;
    public final void rule__ParameterDeclaration__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11472:1: ( ( ( rule__ParameterDeclaration__ReferenceAssignment_0_0 ) ) )
            // InternalFiacre.g:11473:1: ( ( rule__ParameterDeclaration__ReferenceAssignment_0_0 ) )
            {
            // InternalFiacre.g:11473:1: ( ( rule__ParameterDeclaration__ReferenceAssignment_0_0 ) )
            // InternalFiacre.g:11474:2: ( rule__ParameterDeclaration__ReferenceAssignment_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getReferenceAssignment_0_0()); 
            }
            // InternalFiacre.g:11475:2: ( rule__ParameterDeclaration__ReferenceAssignment_0_0 )
            // InternalFiacre.g:11475:3: rule__ParameterDeclaration__ReferenceAssignment_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__ReferenceAssignment_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getReferenceAssignment_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0__0__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group_0__1"
    // InternalFiacre.g:11483:1: rule__ParameterDeclaration__Group_0__1 : rule__ParameterDeclaration__Group_0__1__Impl ;
    public final void rule__ParameterDeclaration__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11487:1: ( rule__ParameterDeclaration__Group_0__1__Impl )
            // InternalFiacre.g:11488:2: rule__ParameterDeclaration__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0__1"


    // $ANTLR start "rule__ParameterDeclaration__Group_0__1__Impl"
    // InternalFiacre.g:11494:1: rule__ParameterDeclaration__Group_0__1__Impl : ( ( rule__ParameterDeclaration__Group_0_1__0 )? ) ;
    public final void rule__ParameterDeclaration__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11498:1: ( ( ( rule__ParameterDeclaration__Group_0_1__0 )? ) )
            // InternalFiacre.g:11499:1: ( ( rule__ParameterDeclaration__Group_0_1__0 )? )
            {
            // InternalFiacre.g:11499:1: ( ( rule__ParameterDeclaration__Group_0_1__0 )? )
            // InternalFiacre.g:11500:2: ( rule__ParameterDeclaration__Group_0_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getGroup_0_1()); 
            }
            // InternalFiacre.g:11501:2: ( rule__ParameterDeclaration__Group_0_1__0 )?
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( (LA114_0==42) ) {
                alt114=1;
            }
            switch (alt114) {
                case 1 :
                    // InternalFiacre.g:11501:3: rule__ParameterDeclaration__Group_0_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ParameterDeclaration__Group_0_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getGroup_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0__1__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__0"
    // InternalFiacre.g:11510:1: rule__ParameterDeclaration__Group_0_1__0 : rule__ParameterDeclaration__Group_0_1__0__Impl rule__ParameterDeclaration__Group_0_1__1 ;
    public final void rule__ParameterDeclaration__Group_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11514:1: ( rule__ParameterDeclaration__Group_0_1__0__Impl rule__ParameterDeclaration__Group_0_1__1 )
            // InternalFiacre.g:11515:2: rule__ParameterDeclaration__Group_0_1__0__Impl rule__ParameterDeclaration__Group_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ParameterDeclaration__Group_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__0"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__0__Impl"
    // InternalFiacre.g:11522:1: rule__ParameterDeclaration__Group_0_1__0__Impl : ( ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 ) ) ;
    public final void rule__ParameterDeclaration__Group_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11526:1: ( ( ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 ) ) )
            // InternalFiacre.g:11527:1: ( ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 ) )
            {
            // InternalFiacre.g:11527:1: ( ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 ) )
            // InternalFiacre.g:11528:2: ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getArrayAssignment_0_1_0()); 
            }
            // InternalFiacre.g:11529:2: ( rule__ParameterDeclaration__ArrayAssignment_0_1_0 )
            // InternalFiacre.g:11529:3: rule__ParameterDeclaration__ArrayAssignment_0_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__ArrayAssignment_0_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getArrayAssignment_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__0__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__1"
    // InternalFiacre.g:11537:1: rule__ParameterDeclaration__Group_0_1__1 : rule__ParameterDeclaration__Group_0_1__1__Impl rule__ParameterDeclaration__Group_0_1__2 ;
    public final void rule__ParameterDeclaration__Group_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11541:1: ( rule__ParameterDeclaration__Group_0_1__1__Impl rule__ParameterDeclaration__Group_0_1__2 )
            // InternalFiacre.g:11542:2: rule__ParameterDeclaration__Group_0_1__1__Impl rule__ParameterDeclaration__Group_0_1__2
            {
            pushFollow(FollowSets000.FOLLOW_51);
            rule__ParameterDeclaration__Group_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group_0_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__1"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__1__Impl"
    // InternalFiacre.g:11549:1: rule__ParameterDeclaration__Group_0_1__1__Impl : ( ( rule__ParameterDeclaration__SizeAssignment_0_1_1 ) ) ;
    public final void rule__ParameterDeclaration__Group_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11553:1: ( ( ( rule__ParameterDeclaration__SizeAssignment_0_1_1 ) ) )
            // InternalFiacre.g:11554:1: ( ( rule__ParameterDeclaration__SizeAssignment_0_1_1 ) )
            {
            // InternalFiacre.g:11554:1: ( ( rule__ParameterDeclaration__SizeAssignment_0_1_1 ) )
            // InternalFiacre.g:11555:2: ( rule__ParameterDeclaration__SizeAssignment_0_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getSizeAssignment_0_1_1()); 
            }
            // InternalFiacre.g:11556:2: ( rule__ParameterDeclaration__SizeAssignment_0_1_1 )
            // InternalFiacre.g:11556:3: rule__ParameterDeclaration__SizeAssignment_0_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__SizeAssignment_0_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getSizeAssignment_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__1__Impl"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__2"
    // InternalFiacre.g:11564:1: rule__ParameterDeclaration__Group_0_1__2 : rule__ParameterDeclaration__Group_0_1__2__Impl ;
    public final void rule__ParameterDeclaration__Group_0_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11568:1: ( rule__ParameterDeclaration__Group_0_1__2__Impl )
            // InternalFiacre.g:11569:2: rule__ParameterDeclaration__Group_0_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ParameterDeclaration__Group_0_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__2"


    // $ANTLR start "rule__ParameterDeclaration__Group_0_1__2__Impl"
    // InternalFiacre.g:11575:1: rule__ParameterDeclaration__Group_0_1__2__Impl : ( ']' ) ;
    public final void rule__ParameterDeclaration__Group_0_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11579:1: ( ( ']' ) )
            // InternalFiacre.g:11580:1: ( ']' )
            {
            // InternalFiacre.g:11580:1: ( ']' )
            // InternalFiacre.g:11581:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getRightSquareBracketKeyword_0_1_2()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getRightSquareBracketKeyword_0_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__Group_0_1__2__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group__0"
    // InternalFiacre.g:11591:1: rule__VariablesDeclaration__Group__0 : rule__VariablesDeclaration__Group__0__Impl rule__VariablesDeclaration__Group__1 ;
    public final void rule__VariablesDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11595:1: ( rule__VariablesDeclaration__Group__0__Impl rule__VariablesDeclaration__Group__1 )
            // InternalFiacre.g:11596:2: rule__VariablesDeclaration__Group__0__Impl rule__VariablesDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__VariablesDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__0"


    // $ANTLR start "rule__VariablesDeclaration__Group__0__Impl"
    // InternalFiacre.g:11603:1: rule__VariablesDeclaration__Group__0__Impl : ( ( rule__VariablesDeclaration__VariablesAssignment_0 ) ) ;
    public final void rule__VariablesDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11607:1: ( ( ( rule__VariablesDeclaration__VariablesAssignment_0 ) ) )
            // InternalFiacre.g:11608:1: ( ( rule__VariablesDeclaration__VariablesAssignment_0 ) )
            {
            // InternalFiacre.g:11608:1: ( ( rule__VariablesDeclaration__VariablesAssignment_0 ) )
            // InternalFiacre.g:11609:2: ( rule__VariablesDeclaration__VariablesAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getVariablesAssignment_0()); 
            }
            // InternalFiacre.g:11610:2: ( rule__VariablesDeclaration__VariablesAssignment_0 )
            // InternalFiacre.g:11610:3: rule__VariablesDeclaration__VariablesAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__VariablesAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getVariablesAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__0__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group__1"
    // InternalFiacre.g:11618:1: rule__VariablesDeclaration__Group__1 : rule__VariablesDeclaration__Group__1__Impl rule__VariablesDeclaration__Group__2 ;
    public final void rule__VariablesDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11622:1: ( rule__VariablesDeclaration__Group__1__Impl rule__VariablesDeclaration__Group__2 )
            // InternalFiacre.g:11623:2: rule__VariablesDeclaration__Group__1__Impl rule__VariablesDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_38);
            rule__VariablesDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__1"


    // $ANTLR start "rule__VariablesDeclaration__Group__1__Impl"
    // InternalFiacre.g:11630:1: rule__VariablesDeclaration__Group__1__Impl : ( ( rule__VariablesDeclaration__Group_1__0 )* ) ;
    public final void rule__VariablesDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11634:1: ( ( ( rule__VariablesDeclaration__Group_1__0 )* ) )
            // InternalFiacre.g:11635:1: ( ( rule__VariablesDeclaration__Group_1__0 )* )
            {
            // InternalFiacre.g:11635:1: ( ( rule__VariablesDeclaration__Group_1__0 )* )
            // InternalFiacre.g:11636:2: ( rule__VariablesDeclaration__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:11637:2: ( rule__VariablesDeclaration__Group_1__0 )*
            loop115:
            do {
                int alt115=2;
                int LA115_0 = input.LA(1);

                if ( (LA115_0==24) ) {
                    alt115=1;
                }


                switch (alt115) {
            	case 1 :
            	    // InternalFiacre.g:11637:3: rule__VariablesDeclaration__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__VariablesDeclaration__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop115;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__1__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group__2"
    // InternalFiacre.g:11645:1: rule__VariablesDeclaration__Group__2 : rule__VariablesDeclaration__Group__2__Impl rule__VariablesDeclaration__Group__3 ;
    public final void rule__VariablesDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11649:1: ( rule__VariablesDeclaration__Group__2__Impl rule__VariablesDeclaration__Group__3 )
            // InternalFiacre.g:11650:2: rule__VariablesDeclaration__Group__2__Impl rule__VariablesDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_15);
            rule__VariablesDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__2"


    // $ANTLR start "rule__VariablesDeclaration__Group__2__Impl"
    // InternalFiacre.g:11657:1: rule__VariablesDeclaration__Group__2__Impl : ( ':' ) ;
    public final void rule__VariablesDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11661:1: ( ( ':' ) )
            // InternalFiacre.g:11662:1: ( ':' )
            {
            // InternalFiacre.g:11662:1: ( ':' )
            // InternalFiacre.g:11663:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getColonKeyword_2()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getColonKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__2__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group__3"
    // InternalFiacre.g:11672:1: rule__VariablesDeclaration__Group__3 : rule__VariablesDeclaration__Group__3__Impl rule__VariablesDeclaration__Group__4 ;
    public final void rule__VariablesDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11676:1: ( rule__VariablesDeclaration__Group__3__Impl rule__VariablesDeclaration__Group__4 )
            // InternalFiacre.g:11677:2: rule__VariablesDeclaration__Group__3__Impl rule__VariablesDeclaration__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_52);
            rule__VariablesDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__3"


    // $ANTLR start "rule__VariablesDeclaration__Group__3__Impl"
    // InternalFiacre.g:11684:1: rule__VariablesDeclaration__Group__3__Impl : ( ( rule__VariablesDeclaration__TypeAssignment_3 ) ) ;
    public final void rule__VariablesDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11688:1: ( ( ( rule__VariablesDeclaration__TypeAssignment_3 ) ) )
            // InternalFiacre.g:11689:1: ( ( rule__VariablesDeclaration__TypeAssignment_3 ) )
            {
            // InternalFiacre.g:11689:1: ( ( rule__VariablesDeclaration__TypeAssignment_3 ) )
            // InternalFiacre.g:11690:2: ( rule__VariablesDeclaration__TypeAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getTypeAssignment_3()); 
            }
            // InternalFiacre.g:11691:2: ( rule__VariablesDeclaration__TypeAssignment_3 )
            // InternalFiacre.g:11691:3: rule__VariablesDeclaration__TypeAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__TypeAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getTypeAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__3__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group__4"
    // InternalFiacre.g:11699:1: rule__VariablesDeclaration__Group__4 : rule__VariablesDeclaration__Group__4__Impl ;
    public final void rule__VariablesDeclaration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11703:1: ( rule__VariablesDeclaration__Group__4__Impl )
            // InternalFiacre.g:11704:2: rule__VariablesDeclaration__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__4"


    // $ANTLR start "rule__VariablesDeclaration__Group__4__Impl"
    // InternalFiacre.g:11710:1: rule__VariablesDeclaration__Group__4__Impl : ( ( rule__VariablesDeclaration__Group_4__0 )? ) ;
    public final void rule__VariablesDeclaration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11714:1: ( ( ( rule__VariablesDeclaration__Group_4__0 )? ) )
            // InternalFiacre.g:11715:1: ( ( rule__VariablesDeclaration__Group_4__0 )? )
            {
            // InternalFiacre.g:11715:1: ( ( rule__VariablesDeclaration__Group_4__0 )? )
            // InternalFiacre.g:11716:2: ( rule__VariablesDeclaration__Group_4__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getGroup_4()); 
            }
            // InternalFiacre.g:11717:2: ( rule__VariablesDeclaration__Group_4__0 )?
            int alt116=2;
            int LA116_0 = input.LA(1);

            if ( (LA116_0==50) ) {
                alt116=1;
            }
            switch (alt116) {
                case 1 :
                    // InternalFiacre.g:11717:3: rule__VariablesDeclaration__Group_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__VariablesDeclaration__Group_4__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getGroup_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group__4__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group_1__0"
    // InternalFiacre.g:11726:1: rule__VariablesDeclaration__Group_1__0 : rule__VariablesDeclaration__Group_1__0__Impl rule__VariablesDeclaration__Group_1__1 ;
    public final void rule__VariablesDeclaration__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11730:1: ( rule__VariablesDeclaration__Group_1__0__Impl rule__VariablesDeclaration__Group_1__1 )
            // InternalFiacre.g:11731:2: rule__VariablesDeclaration__Group_1__0__Impl rule__VariablesDeclaration__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__VariablesDeclaration__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_1__0"


    // $ANTLR start "rule__VariablesDeclaration__Group_1__0__Impl"
    // InternalFiacre.g:11738:1: rule__VariablesDeclaration__Group_1__0__Impl : ( ',' ) ;
    public final void rule__VariablesDeclaration__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11742:1: ( ( ',' ) )
            // InternalFiacre.g:11743:1: ( ',' )
            {
            // InternalFiacre.g:11743:1: ( ',' )
            // InternalFiacre.g:11744:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getCommaKeyword_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getCommaKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_1__0__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group_1__1"
    // InternalFiacre.g:11753:1: rule__VariablesDeclaration__Group_1__1 : rule__VariablesDeclaration__Group_1__1__Impl ;
    public final void rule__VariablesDeclaration__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11757:1: ( rule__VariablesDeclaration__Group_1__1__Impl )
            // InternalFiacre.g:11758:2: rule__VariablesDeclaration__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_1__1"


    // $ANTLR start "rule__VariablesDeclaration__Group_1__1__Impl"
    // InternalFiacre.g:11764:1: rule__VariablesDeclaration__Group_1__1__Impl : ( ( rule__VariablesDeclaration__VariablesAssignment_1_1 ) ) ;
    public final void rule__VariablesDeclaration__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11768:1: ( ( ( rule__VariablesDeclaration__VariablesAssignment_1_1 ) ) )
            // InternalFiacre.g:11769:1: ( ( rule__VariablesDeclaration__VariablesAssignment_1_1 ) )
            {
            // InternalFiacre.g:11769:1: ( ( rule__VariablesDeclaration__VariablesAssignment_1_1 ) )
            // InternalFiacre.g:11770:2: ( rule__VariablesDeclaration__VariablesAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getVariablesAssignment_1_1()); 
            }
            // InternalFiacre.g:11771:2: ( rule__VariablesDeclaration__VariablesAssignment_1_1 )
            // InternalFiacre.g:11771:3: rule__VariablesDeclaration__VariablesAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__VariablesAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getVariablesAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_1__1__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group_4__0"
    // InternalFiacre.g:11780:1: rule__VariablesDeclaration__Group_4__0 : rule__VariablesDeclaration__Group_4__0__Impl rule__VariablesDeclaration__Group_4__1 ;
    public final void rule__VariablesDeclaration__Group_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11784:1: ( rule__VariablesDeclaration__Group_4__0__Impl rule__VariablesDeclaration__Group_4__1 )
            // InternalFiacre.g:11785:2: rule__VariablesDeclaration__Group_4__0__Impl rule__VariablesDeclaration__Group_4__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__VariablesDeclaration__Group_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_4__0"


    // $ANTLR start "rule__VariablesDeclaration__Group_4__0__Impl"
    // InternalFiacre.g:11792:1: rule__VariablesDeclaration__Group_4__0__Impl : ( ':=' ) ;
    public final void rule__VariablesDeclaration__Group_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11796:1: ( ( ':=' ) )
            // InternalFiacre.g:11797:1: ( ':=' )
            {
            // InternalFiacre.g:11797:1: ( ':=' )
            // InternalFiacre.g:11798:2: ':='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getColonEqualsSignKeyword_4_0()); 
            }
            match(input,50,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getColonEqualsSignKeyword_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_4__0__Impl"


    // $ANTLR start "rule__VariablesDeclaration__Group_4__1"
    // InternalFiacre.g:11807:1: rule__VariablesDeclaration__Group_4__1 : rule__VariablesDeclaration__Group_4__1__Impl ;
    public final void rule__VariablesDeclaration__Group_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11811:1: ( rule__VariablesDeclaration__Group_4__1__Impl )
            // InternalFiacre.g:11812:2: rule__VariablesDeclaration__Group_4__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__Group_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_4__1"


    // $ANTLR start "rule__VariablesDeclaration__Group_4__1__Impl"
    // InternalFiacre.g:11818:1: rule__VariablesDeclaration__Group_4__1__Impl : ( ( rule__VariablesDeclaration__ValueAssignment_4_1 ) ) ;
    public final void rule__VariablesDeclaration__Group_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11822:1: ( ( ( rule__VariablesDeclaration__ValueAssignment_4_1 ) ) )
            // InternalFiacre.g:11823:1: ( ( rule__VariablesDeclaration__ValueAssignment_4_1 ) )
            {
            // InternalFiacre.g:11823:1: ( ( rule__VariablesDeclaration__ValueAssignment_4_1 ) )
            // InternalFiacre.g:11824:2: ( rule__VariablesDeclaration__ValueAssignment_4_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getValueAssignment_4_1()); 
            }
            // InternalFiacre.g:11825:2: ( rule__VariablesDeclaration__ValueAssignment_4_1 )
            // InternalFiacre.g:11825:3: rule__VariablesDeclaration__ValueAssignment_4_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariablesDeclaration__ValueAssignment_4_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getValueAssignment_4_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__Group_4__1__Impl"


    // $ANTLR start "rule__PriorityDeclaration__Group__0"
    // InternalFiacre.g:11834:1: rule__PriorityDeclaration__Group__0 : rule__PriorityDeclaration__Group__0__Impl rule__PriorityDeclaration__Group__1 ;
    public final void rule__PriorityDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11838:1: ( rule__PriorityDeclaration__Group__0__Impl rule__PriorityDeclaration__Group__1 )
            // InternalFiacre.g:11839:2: rule__PriorityDeclaration__Group__0__Impl rule__PriorityDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_8);
            rule__PriorityDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group__0"


    // $ANTLR start "rule__PriorityDeclaration__Group__0__Impl"
    // InternalFiacre.g:11846:1: rule__PriorityDeclaration__Group__0__Impl : ( ( rule__PriorityDeclaration__GroupsAssignment_0 ) ) ;
    public final void rule__PriorityDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11850:1: ( ( ( rule__PriorityDeclaration__GroupsAssignment_0 ) ) )
            // InternalFiacre.g:11851:1: ( ( rule__PriorityDeclaration__GroupsAssignment_0 ) )
            {
            // InternalFiacre.g:11851:1: ( ( rule__PriorityDeclaration__GroupsAssignment_0 ) )
            // InternalFiacre.g:11852:2: ( rule__PriorityDeclaration__GroupsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroupsAssignment_0()); 
            }
            // InternalFiacre.g:11853:2: ( rule__PriorityDeclaration__GroupsAssignment_0 )
            // InternalFiacre.g:11853:3: rule__PriorityDeclaration__GroupsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__GroupsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroupsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group__0__Impl"


    // $ANTLR start "rule__PriorityDeclaration__Group__1"
    // InternalFiacre.g:11861:1: rule__PriorityDeclaration__Group__1 : rule__PriorityDeclaration__Group__1__Impl ;
    public final void rule__PriorityDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11865:1: ( rule__PriorityDeclaration__Group__1__Impl )
            // InternalFiacre.g:11866:2: rule__PriorityDeclaration__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group__1"


    // $ANTLR start "rule__PriorityDeclaration__Group__1__Impl"
    // InternalFiacre.g:11872:1: rule__PriorityDeclaration__Group__1__Impl : ( ( ( rule__PriorityDeclaration__Group_1__0 ) ) ( ( rule__PriorityDeclaration__Group_1__0 )* ) ) ;
    public final void rule__PriorityDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11876:1: ( ( ( ( rule__PriorityDeclaration__Group_1__0 ) ) ( ( rule__PriorityDeclaration__Group_1__0 )* ) ) )
            // InternalFiacre.g:11877:1: ( ( ( rule__PriorityDeclaration__Group_1__0 ) ) ( ( rule__PriorityDeclaration__Group_1__0 )* ) )
            {
            // InternalFiacre.g:11877:1: ( ( ( rule__PriorityDeclaration__Group_1__0 ) ) ( ( rule__PriorityDeclaration__Group_1__0 )* ) )
            // InternalFiacre.g:11878:2: ( ( rule__PriorityDeclaration__Group_1__0 ) ) ( ( rule__PriorityDeclaration__Group_1__0 )* )
            {
            // InternalFiacre.g:11878:2: ( ( rule__PriorityDeclaration__Group_1__0 ) )
            // InternalFiacre.g:11879:3: ( rule__PriorityDeclaration__Group_1__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:11880:3: ( rule__PriorityDeclaration__Group_1__0 )
            // InternalFiacre.g:11880:4: rule__PriorityDeclaration__Group_1__0
            {
            pushFollow(FollowSets000.FOLLOW_53);
            rule__PriorityDeclaration__Group_1__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroup_1()); 
            }

            }

            // InternalFiacre.g:11883:2: ( ( rule__PriorityDeclaration__Group_1__0 )* )
            // InternalFiacre.g:11884:3: ( rule__PriorityDeclaration__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:11885:3: ( rule__PriorityDeclaration__Group_1__0 )*
            loop117:
            do {
                int alt117=2;
                int LA117_0 = input.LA(1);

                if ( (LA117_0==16) ) {
                    alt117=1;
                }


                switch (alt117) {
            	case 1 :
            	    // InternalFiacre.g:11885:4: rule__PriorityDeclaration__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_53);
            	    rule__PriorityDeclaration__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop117;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroup_1()); 
            }

            }


            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group__1__Impl"


    // $ANTLR start "rule__PriorityDeclaration__Group_1__0"
    // InternalFiacre.g:11895:1: rule__PriorityDeclaration__Group_1__0 : rule__PriorityDeclaration__Group_1__0__Impl rule__PriorityDeclaration__Group_1__1 ;
    public final void rule__PriorityDeclaration__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11899:1: ( rule__PriorityDeclaration__Group_1__0__Impl rule__PriorityDeclaration__Group_1__1 )
            // InternalFiacre.g:11900:2: rule__PriorityDeclaration__Group_1__0__Impl rule__PriorityDeclaration__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__PriorityDeclaration__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group_1__0"


    // $ANTLR start "rule__PriorityDeclaration__Group_1__0__Impl"
    // InternalFiacre.g:11907:1: rule__PriorityDeclaration__Group_1__0__Impl : ( '>' ) ;
    public final void rule__PriorityDeclaration__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11911:1: ( ( '>' ) )
            // InternalFiacre.g:11912:1: ( '>' )
            {
            // InternalFiacre.g:11912:1: ( '>' )
            // InternalFiacre.g:11913:2: '>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGreaterThanSignKeyword_1_0()); 
            }
            match(input,16,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGreaterThanSignKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group_1__0__Impl"


    // $ANTLR start "rule__PriorityDeclaration__Group_1__1"
    // InternalFiacre.g:11922:1: rule__PriorityDeclaration__Group_1__1 : rule__PriorityDeclaration__Group_1__1__Impl ;
    public final void rule__PriorityDeclaration__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11926:1: ( rule__PriorityDeclaration__Group_1__1__Impl )
            // InternalFiacre.g:11927:2: rule__PriorityDeclaration__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group_1__1"


    // $ANTLR start "rule__PriorityDeclaration__Group_1__1__Impl"
    // InternalFiacre.g:11933:1: rule__PriorityDeclaration__Group_1__1__Impl : ( ( rule__PriorityDeclaration__GroupsAssignment_1_1 ) ) ;
    public final void rule__PriorityDeclaration__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11937:1: ( ( ( rule__PriorityDeclaration__GroupsAssignment_1_1 ) ) )
            // InternalFiacre.g:11938:1: ( ( rule__PriorityDeclaration__GroupsAssignment_1_1 ) )
            {
            // InternalFiacre.g:11938:1: ( ( rule__PriorityDeclaration__GroupsAssignment_1_1 ) )
            // InternalFiacre.g:11939:2: ( rule__PriorityDeclaration__GroupsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroupsAssignment_1_1()); 
            }
            // InternalFiacre.g:11940:2: ( rule__PriorityDeclaration__GroupsAssignment_1_1 )
            // InternalFiacre.g:11940:3: rule__PriorityDeclaration__GroupsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityDeclaration__GroupsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroupsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__Group_1__1__Impl"


    // $ANTLR start "rule__PriorityGroup__Group__0"
    // InternalFiacre.g:11949:1: rule__PriorityGroup__Group__0 : rule__PriorityGroup__Group__0__Impl rule__PriorityGroup__Group__1 ;
    public final void rule__PriorityGroup__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11953:1: ( rule__PriorityGroup__Group__0__Impl rule__PriorityGroup__Group__1 )
            // InternalFiacre.g:11954:2: rule__PriorityGroup__Group__0__Impl rule__PriorityGroup__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_10);
            rule__PriorityGroup__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group__0"


    // $ANTLR start "rule__PriorityGroup__Group__0__Impl"
    // InternalFiacre.g:11961:1: rule__PriorityGroup__Group__0__Impl : ( ( rule__PriorityGroup__PortsAssignment_0 ) ) ;
    public final void rule__PriorityGroup__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11965:1: ( ( ( rule__PriorityGroup__PortsAssignment_0 ) ) )
            // InternalFiacre.g:11966:1: ( ( rule__PriorityGroup__PortsAssignment_0 ) )
            {
            // InternalFiacre.g:11966:1: ( ( rule__PriorityGroup__PortsAssignment_0 ) )
            // InternalFiacre.g:11967:2: ( rule__PriorityGroup__PortsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsAssignment_0()); 
            }
            // InternalFiacre.g:11968:2: ( rule__PriorityGroup__PortsAssignment_0 )
            // InternalFiacre.g:11968:3: rule__PriorityGroup__PortsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__PortsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group__0__Impl"


    // $ANTLR start "rule__PriorityGroup__Group__1"
    // InternalFiacre.g:11976:1: rule__PriorityGroup__Group__1 : rule__PriorityGroup__Group__1__Impl ;
    public final void rule__PriorityGroup__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11980:1: ( rule__PriorityGroup__Group__1__Impl )
            // InternalFiacre.g:11981:2: rule__PriorityGroup__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group__1"


    // $ANTLR start "rule__PriorityGroup__Group__1__Impl"
    // InternalFiacre.g:11987:1: rule__PriorityGroup__Group__1__Impl : ( ( rule__PriorityGroup__Group_1__0 )* ) ;
    public final void rule__PriorityGroup__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:11991:1: ( ( ( rule__PriorityGroup__Group_1__0 )* ) )
            // InternalFiacre.g:11992:1: ( ( rule__PriorityGroup__Group_1__0 )* )
            {
            // InternalFiacre.g:11992:1: ( ( rule__PriorityGroup__Group_1__0 )* )
            // InternalFiacre.g:11993:2: ( rule__PriorityGroup__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getGroup_1()); 
            }
            // InternalFiacre.g:11994:2: ( rule__PriorityGroup__Group_1__0 )*
            loop118:
            do {
                int alt118=2;
                int LA118_0 = input.LA(1);

                if ( (LA118_0==17) ) {
                    alt118=1;
                }


                switch (alt118) {
            	case 1 :
            	    // InternalFiacre.g:11994:3: rule__PriorityGroup__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_11);
            	    rule__PriorityGroup__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop118;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group__1__Impl"


    // $ANTLR start "rule__PriorityGroup__Group_1__0"
    // InternalFiacre.g:12003:1: rule__PriorityGroup__Group_1__0 : rule__PriorityGroup__Group_1__0__Impl rule__PriorityGroup__Group_1__1 ;
    public final void rule__PriorityGroup__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12007:1: ( rule__PriorityGroup__Group_1__0__Impl rule__PriorityGroup__Group_1__1 )
            // InternalFiacre.g:12008:2: rule__PriorityGroup__Group_1__0__Impl rule__PriorityGroup__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__PriorityGroup__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group_1__0"


    // $ANTLR start "rule__PriorityGroup__Group_1__0__Impl"
    // InternalFiacre.g:12015:1: rule__PriorityGroup__Group_1__0__Impl : ( '|' ) ;
    public final void rule__PriorityGroup__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12019:1: ( ( '|' ) )
            // InternalFiacre.g:12020:1: ( '|' )
            {
            // InternalFiacre.g:12020:1: ( '|' )
            // InternalFiacre.g:12021:2: '|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getVerticalLineKeyword_1_0()); 
            }
            match(input,17,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getVerticalLineKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group_1__0__Impl"


    // $ANTLR start "rule__PriorityGroup__Group_1__1"
    // InternalFiacre.g:12030:1: rule__PriorityGroup__Group_1__1 : rule__PriorityGroup__Group_1__1__Impl ;
    public final void rule__PriorityGroup__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12034:1: ( rule__PriorityGroup__Group_1__1__Impl )
            // InternalFiacre.g:12035:2: rule__PriorityGroup__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group_1__1"


    // $ANTLR start "rule__PriorityGroup__Group_1__1__Impl"
    // InternalFiacre.g:12041:1: rule__PriorityGroup__Group_1__1__Impl : ( ( rule__PriorityGroup__PortsAssignment_1_1 ) ) ;
    public final void rule__PriorityGroup__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12045:1: ( ( ( rule__PriorityGroup__PortsAssignment_1_1 ) ) )
            // InternalFiacre.g:12046:1: ( ( rule__PriorityGroup__PortsAssignment_1_1 ) )
            {
            // InternalFiacre.g:12046:1: ( ( rule__PriorityGroup__PortsAssignment_1_1 ) )
            // InternalFiacre.g:12047:2: ( rule__PriorityGroup__PortsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsAssignment_1_1()); 
            }
            // InternalFiacre.g:12048:2: ( rule__PriorityGroup__PortsAssignment_1_1 )
            // InternalFiacre.g:12048:3: rule__PriorityGroup__PortsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PriorityGroup__PortsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__Group_1__1__Impl"


    // $ANTLR start "rule__UnlessStatement__Group__0"
    // InternalFiacre.g:12057:1: rule__UnlessStatement__Group__0 : rule__UnlessStatement__Group__0__Impl rule__UnlessStatement__Group__1 ;
    public final void rule__UnlessStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12061:1: ( rule__UnlessStatement__Group__0__Impl rule__UnlessStatement__Group__1 )
            // InternalFiacre.g:12062:2: rule__UnlessStatement__Group__0__Impl rule__UnlessStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_54);
            rule__UnlessStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group__0"


    // $ANTLR start "rule__UnlessStatement__Group__0__Impl"
    // InternalFiacre.g:12069:1: rule__UnlessStatement__Group__0__Impl : ( ruleStatementChoice ) ;
    public final void rule__UnlessStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12073:1: ( ( ruleStatementChoice ) )
            // InternalFiacre.g:12074:1: ( ruleStatementChoice )
            {
            // InternalFiacre.g:12074:1: ( ruleStatementChoice )
            // InternalFiacre.g:12075:2: ruleStatementChoice
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getStatementChoiceParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementChoice();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getStatementChoiceParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group__0__Impl"


    // $ANTLR start "rule__UnlessStatement__Group__1"
    // InternalFiacre.g:12084:1: rule__UnlessStatement__Group__1 : rule__UnlessStatement__Group__1__Impl ;
    public final void rule__UnlessStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12088:1: ( rule__UnlessStatement__Group__1__Impl )
            // InternalFiacre.g:12089:2: rule__UnlessStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group__1"


    // $ANTLR start "rule__UnlessStatement__Group__1__Impl"
    // InternalFiacre.g:12095:1: rule__UnlessStatement__Group__1__Impl : ( ( rule__UnlessStatement__Group_1__0 )* ) ;
    public final void rule__UnlessStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12099:1: ( ( ( rule__UnlessStatement__Group_1__0 )* ) )
            // InternalFiacre.g:12100:1: ( ( rule__UnlessStatement__Group_1__0 )* )
            {
            // InternalFiacre.g:12100:1: ( ( rule__UnlessStatement__Group_1__0 )* )
            // InternalFiacre.g:12101:2: ( rule__UnlessStatement__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getGroup_1()); 
            }
            // InternalFiacre.g:12102:2: ( rule__UnlessStatement__Group_1__0 )*
            loop119:
            do {
                int alt119=2;
                int LA119_0 = input.LA(1);

                if ( (LA119_0==51) ) {
                    alt119=1;
                }


                switch (alt119) {
            	case 1 :
            	    // InternalFiacre.g:12102:3: rule__UnlessStatement__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_55);
            	    rule__UnlessStatement__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop119;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group__1__Impl"


    // $ANTLR start "rule__UnlessStatement__Group_1__0"
    // InternalFiacre.g:12111:1: rule__UnlessStatement__Group_1__0 : rule__UnlessStatement__Group_1__0__Impl rule__UnlessStatement__Group_1__1 ;
    public final void rule__UnlessStatement__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12115:1: ( rule__UnlessStatement__Group_1__0__Impl rule__UnlessStatement__Group_1__1 )
            // InternalFiacre.g:12116:2: rule__UnlessStatement__Group_1__0__Impl rule__UnlessStatement__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_54);
            rule__UnlessStatement__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__0"


    // $ANTLR start "rule__UnlessStatement__Group_1__0__Impl"
    // InternalFiacre.g:12123:1: rule__UnlessStatement__Group_1__0__Impl : ( () ) ;
    public final void rule__UnlessStatement__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12127:1: ( ( () ) )
            // InternalFiacre.g:12128:1: ( () )
            {
            // InternalFiacre.g:12128:1: ( () )
            // InternalFiacre.g:12129:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getUnlessStatementFollowersAction_1_0()); 
            }
            // InternalFiacre.g:12130:2: ()
            // InternalFiacre.g:12130:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getUnlessStatementFollowersAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__0__Impl"


    // $ANTLR start "rule__UnlessStatement__Group_1__1"
    // InternalFiacre.g:12138:1: rule__UnlessStatement__Group_1__1 : rule__UnlessStatement__Group_1__1__Impl rule__UnlessStatement__Group_1__2 ;
    public final void rule__UnlessStatement__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12142:1: ( rule__UnlessStatement__Group_1__1__Impl rule__UnlessStatement__Group_1__2 )
            // InternalFiacre.g:12143:2: rule__UnlessStatement__Group_1__1__Impl rule__UnlessStatement__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__UnlessStatement__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__1"


    // $ANTLR start "rule__UnlessStatement__Group_1__1__Impl"
    // InternalFiacre.g:12150:1: rule__UnlessStatement__Group_1__1__Impl : ( 'unless' ) ;
    public final void rule__UnlessStatement__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12154:1: ( ( 'unless' ) )
            // InternalFiacre.g:12155:1: ( 'unless' )
            {
            // InternalFiacre.g:12155:1: ( 'unless' )
            // InternalFiacre.g:12156:2: 'unless'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getUnlessKeyword_1_1()); 
            }
            match(input,51,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getUnlessKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__1__Impl"


    // $ANTLR start "rule__UnlessStatement__Group_1__2"
    // InternalFiacre.g:12165:1: rule__UnlessStatement__Group_1__2 : rule__UnlessStatement__Group_1__2__Impl ;
    public final void rule__UnlessStatement__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12169:1: ( rule__UnlessStatement__Group_1__2__Impl )
            // InternalFiacre.g:12170:2: rule__UnlessStatement__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__2"


    // $ANTLR start "rule__UnlessStatement__Group_1__2__Impl"
    // InternalFiacre.g:12176:1: rule__UnlessStatement__Group_1__2__Impl : ( ( rule__UnlessStatement__FollowersAssignment_1_2 ) ) ;
    public final void rule__UnlessStatement__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12180:1: ( ( ( rule__UnlessStatement__FollowersAssignment_1_2 ) ) )
            // InternalFiacre.g:12181:1: ( ( rule__UnlessStatement__FollowersAssignment_1_2 ) )
            {
            // InternalFiacre.g:12181:1: ( ( rule__UnlessStatement__FollowersAssignment_1_2 ) )
            // InternalFiacre.g:12182:2: ( rule__UnlessStatement__FollowersAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getFollowersAssignment_1_2()); 
            }
            // InternalFiacre.g:12183:2: ( rule__UnlessStatement__FollowersAssignment_1_2 )
            // InternalFiacre.g:12183:3: rule__UnlessStatement__FollowersAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnlessStatement__FollowersAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getFollowersAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__Group_1__2__Impl"


    // $ANTLR start "rule__StatementChoice__Group__0"
    // InternalFiacre.g:12192:1: rule__StatementChoice__Group__0 : rule__StatementChoice__Group__0__Impl rule__StatementChoice__Group__1 ;
    public final void rule__StatementChoice__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12196:1: ( rule__StatementChoice__Group__0__Impl rule__StatementChoice__Group__1 )
            // InternalFiacre.g:12197:2: rule__StatementChoice__Group__0__Impl rule__StatementChoice__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_56);
            rule__StatementChoice__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group__0"


    // $ANTLR start "rule__StatementChoice__Group__0__Impl"
    // InternalFiacre.g:12204:1: rule__StatementChoice__Group__0__Impl : ( ruleStatementSequence ) ;
    public final void rule__StatementChoice__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12208:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:12209:1: ( ruleStatementSequence )
            {
            // InternalFiacre.g:12209:1: ( ruleStatementSequence )
            // InternalFiacre.g:12210:2: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getStatementSequenceParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getStatementSequenceParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group__0__Impl"


    // $ANTLR start "rule__StatementChoice__Group__1"
    // InternalFiacre.g:12219:1: rule__StatementChoice__Group__1 : rule__StatementChoice__Group__1__Impl ;
    public final void rule__StatementChoice__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12223:1: ( rule__StatementChoice__Group__1__Impl )
            // InternalFiacre.g:12224:2: rule__StatementChoice__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group__1"


    // $ANTLR start "rule__StatementChoice__Group__1__Impl"
    // InternalFiacre.g:12230:1: rule__StatementChoice__Group__1__Impl : ( ( rule__StatementChoice__Group_1__0 )* ) ;
    public final void rule__StatementChoice__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12234:1: ( ( ( rule__StatementChoice__Group_1__0 )* ) )
            // InternalFiacre.g:12235:1: ( ( rule__StatementChoice__Group_1__0 )* )
            {
            // InternalFiacre.g:12235:1: ( ( rule__StatementChoice__Group_1__0 )* )
            // InternalFiacre.g:12236:2: ( rule__StatementChoice__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getGroup_1()); 
            }
            // InternalFiacre.g:12237:2: ( rule__StatementChoice__Group_1__0 )*
            loop120:
            do {
                int alt120=2;
                int LA120_0 = input.LA(1);

                if ( (LA120_0==52) ) {
                    alt120=1;
                }


                switch (alt120) {
            	case 1 :
            	    // InternalFiacre.g:12237:3: rule__StatementChoice__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_57);
            	    rule__StatementChoice__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop120;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group__1__Impl"


    // $ANTLR start "rule__StatementChoice__Group_1__0"
    // InternalFiacre.g:12246:1: rule__StatementChoice__Group_1__0 : rule__StatementChoice__Group_1__0__Impl rule__StatementChoice__Group_1__1 ;
    public final void rule__StatementChoice__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12250:1: ( rule__StatementChoice__Group_1__0__Impl rule__StatementChoice__Group_1__1 )
            // InternalFiacre.g:12251:2: rule__StatementChoice__Group_1__0__Impl rule__StatementChoice__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_56);
            rule__StatementChoice__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__0"


    // $ANTLR start "rule__StatementChoice__Group_1__0__Impl"
    // InternalFiacre.g:12258:1: rule__StatementChoice__Group_1__0__Impl : ( () ) ;
    public final void rule__StatementChoice__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12262:1: ( ( () ) )
            // InternalFiacre.g:12263:1: ( () )
            {
            // InternalFiacre.g:12263:1: ( () )
            // InternalFiacre.g:12264:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getStatementChoiceChoicesAction_1_0()); 
            }
            // InternalFiacre.g:12265:2: ()
            // InternalFiacre.g:12265:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getStatementChoiceChoicesAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__0__Impl"


    // $ANTLR start "rule__StatementChoice__Group_1__1"
    // InternalFiacre.g:12273:1: rule__StatementChoice__Group_1__1 : rule__StatementChoice__Group_1__1__Impl rule__StatementChoice__Group_1__2 ;
    public final void rule__StatementChoice__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12277:1: ( rule__StatementChoice__Group_1__1__Impl rule__StatementChoice__Group_1__2 )
            // InternalFiacre.g:12278:2: rule__StatementChoice__Group_1__1__Impl rule__StatementChoice__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__StatementChoice__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__1"


    // $ANTLR start "rule__StatementChoice__Group_1__1__Impl"
    // InternalFiacre.g:12285:1: rule__StatementChoice__Group_1__1__Impl : ( '[]' ) ;
    public final void rule__StatementChoice__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12289:1: ( ( '[]' ) )
            // InternalFiacre.g:12290:1: ( '[]' )
            {
            // InternalFiacre.g:12290:1: ( '[]' )
            // InternalFiacre.g:12291:2: '[]'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getLeftSquareBracketRightSquareBracketKeyword_1_1()); 
            }
            match(input,52,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getLeftSquareBracketRightSquareBracketKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__1__Impl"


    // $ANTLR start "rule__StatementChoice__Group_1__2"
    // InternalFiacre.g:12300:1: rule__StatementChoice__Group_1__2 : rule__StatementChoice__Group_1__2__Impl ;
    public final void rule__StatementChoice__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12304:1: ( rule__StatementChoice__Group_1__2__Impl )
            // InternalFiacre.g:12305:2: rule__StatementChoice__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__2"


    // $ANTLR start "rule__StatementChoice__Group_1__2__Impl"
    // InternalFiacre.g:12311:1: rule__StatementChoice__Group_1__2__Impl : ( ( rule__StatementChoice__ChoicesAssignment_1_2 ) ) ;
    public final void rule__StatementChoice__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12315:1: ( ( ( rule__StatementChoice__ChoicesAssignment_1_2 ) ) )
            // InternalFiacre.g:12316:1: ( ( rule__StatementChoice__ChoicesAssignment_1_2 ) )
            {
            // InternalFiacre.g:12316:1: ( ( rule__StatementChoice__ChoicesAssignment_1_2 ) )
            // InternalFiacre.g:12317:2: ( rule__StatementChoice__ChoicesAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getChoicesAssignment_1_2()); 
            }
            // InternalFiacre.g:12318:2: ( rule__StatementChoice__ChoicesAssignment_1_2 )
            // InternalFiacre.g:12318:3: rule__StatementChoice__ChoicesAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementChoice__ChoicesAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getChoicesAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__Group_1__2__Impl"


    // $ANTLR start "rule__StatementSequence__Group__0"
    // InternalFiacre.g:12327:1: rule__StatementSequence__Group__0 : rule__StatementSequence__Group__0__Impl rule__StatementSequence__Group__1 ;
    public final void rule__StatementSequence__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12331:1: ( rule__StatementSequence__Group__0__Impl rule__StatementSequence__Group__1 )
            // InternalFiacre.g:12332:2: rule__StatementSequence__Group__0__Impl rule__StatementSequence__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_58);
            rule__StatementSequence__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group__0"


    // $ANTLR start "rule__StatementSequence__Group__0__Impl"
    // InternalFiacre.g:12339:1: rule__StatementSequence__Group__0__Impl : ( ruleStatement ) ;
    public final void rule__StatementSequence__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12343:1: ( ( ruleStatement ) )
            // InternalFiacre.g:12344:1: ( ruleStatement )
            {
            // InternalFiacre.g:12344:1: ( ruleStatement )
            // InternalFiacre.g:12345:2: ruleStatement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getStatementParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getStatementParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group__0__Impl"


    // $ANTLR start "rule__StatementSequence__Group__1"
    // InternalFiacre.g:12354:1: rule__StatementSequence__Group__1 : rule__StatementSequence__Group__1__Impl ;
    public final void rule__StatementSequence__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12358:1: ( rule__StatementSequence__Group__1__Impl )
            // InternalFiacre.g:12359:2: rule__StatementSequence__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group__1"


    // $ANTLR start "rule__StatementSequence__Group__1__Impl"
    // InternalFiacre.g:12365:1: rule__StatementSequence__Group__1__Impl : ( ( rule__StatementSequence__Group_1__0 )* ) ;
    public final void rule__StatementSequence__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12369:1: ( ( ( rule__StatementSequence__Group_1__0 )* ) )
            // InternalFiacre.g:12370:1: ( ( rule__StatementSequence__Group_1__0 )* )
            {
            // InternalFiacre.g:12370:1: ( ( rule__StatementSequence__Group_1__0 )* )
            // InternalFiacre.g:12371:2: ( rule__StatementSequence__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getGroup_1()); 
            }
            // InternalFiacre.g:12372:2: ( rule__StatementSequence__Group_1__0 )*
            loop121:
            do {
                int alt121=2;
                int LA121_0 = input.LA(1);

                if ( (LA121_0==53) ) {
                    alt121=1;
                }


                switch (alt121) {
            	case 1 :
            	    // InternalFiacre.g:12372:3: rule__StatementSequence__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_59);
            	    rule__StatementSequence__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop121;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group__1__Impl"


    // $ANTLR start "rule__StatementSequence__Group_1__0"
    // InternalFiacre.g:12381:1: rule__StatementSequence__Group_1__0 : rule__StatementSequence__Group_1__0__Impl rule__StatementSequence__Group_1__1 ;
    public final void rule__StatementSequence__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12385:1: ( rule__StatementSequence__Group_1__0__Impl rule__StatementSequence__Group_1__1 )
            // InternalFiacre.g:12386:2: rule__StatementSequence__Group_1__0__Impl rule__StatementSequence__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_58);
            rule__StatementSequence__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__0"


    // $ANTLR start "rule__StatementSequence__Group_1__0__Impl"
    // InternalFiacre.g:12393:1: rule__StatementSequence__Group_1__0__Impl : ( () ) ;
    public final void rule__StatementSequence__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12397:1: ( ( () ) )
            // InternalFiacre.g:12398:1: ( () )
            {
            // InternalFiacre.g:12398:1: ( () )
            // InternalFiacre.g:12399:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getStatementSequenceStatementsAction_1_0()); 
            }
            // InternalFiacre.g:12400:2: ()
            // InternalFiacre.g:12400:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getStatementSequenceStatementsAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__0__Impl"


    // $ANTLR start "rule__StatementSequence__Group_1__1"
    // InternalFiacre.g:12408:1: rule__StatementSequence__Group_1__1 : rule__StatementSequence__Group_1__1__Impl rule__StatementSequence__Group_1__2 ;
    public final void rule__StatementSequence__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12412:1: ( rule__StatementSequence__Group_1__1__Impl rule__StatementSequence__Group_1__2 )
            // InternalFiacre.g:12413:2: rule__StatementSequence__Group_1__1__Impl rule__StatementSequence__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__StatementSequence__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__1"


    // $ANTLR start "rule__StatementSequence__Group_1__1__Impl"
    // InternalFiacre.g:12420:1: rule__StatementSequence__Group_1__1__Impl : ( ';' ) ;
    public final void rule__StatementSequence__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12424:1: ( ( ';' ) )
            // InternalFiacre.g:12425:1: ( ';' )
            {
            // InternalFiacre.g:12425:1: ( ';' )
            // InternalFiacre.g:12426:2: ';'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getSemicolonKeyword_1_1()); 
            }
            match(input,53,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getSemicolonKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__1__Impl"


    // $ANTLR start "rule__StatementSequence__Group_1__2"
    // InternalFiacre.g:12435:1: rule__StatementSequence__Group_1__2 : rule__StatementSequence__Group_1__2__Impl ;
    public final void rule__StatementSequence__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12439:1: ( rule__StatementSequence__Group_1__2__Impl )
            // InternalFiacre.g:12440:2: rule__StatementSequence__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__2"


    // $ANTLR start "rule__StatementSequence__Group_1__2__Impl"
    // InternalFiacre.g:12446:1: rule__StatementSequence__Group_1__2__Impl : ( ( rule__StatementSequence__StatementsAssignment_1_2 ) ) ;
    public final void rule__StatementSequence__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12450:1: ( ( ( rule__StatementSequence__StatementsAssignment_1_2 ) ) )
            // InternalFiacre.g:12451:1: ( ( rule__StatementSequence__StatementsAssignment_1_2 ) )
            {
            // InternalFiacre.g:12451:1: ( ( rule__StatementSequence__StatementsAssignment_1_2 ) )
            // InternalFiacre.g:12452:2: ( rule__StatementSequence__StatementsAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getStatementsAssignment_1_2()); 
            }
            // InternalFiacre.g:12453:2: ( rule__StatementSequence__StatementsAssignment_1_2 )
            // InternalFiacre.g:12453:3: rule__StatementSequence__StatementsAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StatementSequence__StatementsAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getStatementsAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__Group_1__2__Impl"


    // $ANTLR start "rule__BlockStatement__Group__0"
    // InternalFiacre.g:12462:1: rule__BlockStatement__Group__0 : rule__BlockStatement__Group__0__Impl rule__BlockStatement__Group__1 ;
    public final void rule__BlockStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12466:1: ( rule__BlockStatement__Group__0__Impl rule__BlockStatement__Group__1 )
            // InternalFiacre.g:12467:2: rule__BlockStatement__Group__0__Impl rule__BlockStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__BlockStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BlockStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__0"


    // $ANTLR start "rule__BlockStatement__Group__0__Impl"
    // InternalFiacre.g:12474:1: rule__BlockStatement__Group__0__Impl : ( 'begin' ) ;
    public final void rule__BlockStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12478:1: ( ( 'begin' ) )
            // InternalFiacre.g:12479:1: ( 'begin' )
            {
            // InternalFiacre.g:12479:1: ( 'begin' )
            // InternalFiacre.g:12480:2: 'begin'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementAccess().getBeginKeyword_0()); 
            }
            match(input,54,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementAccess().getBeginKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__0__Impl"


    // $ANTLR start "rule__BlockStatement__Group__1"
    // InternalFiacre.g:12489:1: rule__BlockStatement__Group__1 : rule__BlockStatement__Group__1__Impl rule__BlockStatement__Group__2 ;
    public final void rule__BlockStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12493:1: ( rule__BlockStatement__Group__1__Impl rule__BlockStatement__Group__2 )
            // InternalFiacre.g:12494:2: rule__BlockStatement__Group__1__Impl rule__BlockStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_60);
            rule__BlockStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BlockStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__1"


    // $ANTLR start "rule__BlockStatement__Group__1__Impl"
    // InternalFiacre.g:12501:1: rule__BlockStatement__Group__1__Impl : ( ( rule__BlockStatement__BodyAssignment_1 ) ) ;
    public final void rule__BlockStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12505:1: ( ( ( rule__BlockStatement__BodyAssignment_1 ) ) )
            // InternalFiacre.g:12506:1: ( ( rule__BlockStatement__BodyAssignment_1 ) )
            {
            // InternalFiacre.g:12506:1: ( ( rule__BlockStatement__BodyAssignment_1 ) )
            // InternalFiacre.g:12507:2: ( rule__BlockStatement__BodyAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementAccess().getBodyAssignment_1()); 
            }
            // InternalFiacre.g:12508:2: ( rule__BlockStatement__BodyAssignment_1 )
            // InternalFiacre.g:12508:3: rule__BlockStatement__BodyAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BlockStatement__BodyAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementAccess().getBodyAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__1__Impl"


    // $ANTLR start "rule__BlockStatement__Group__2"
    // InternalFiacre.g:12516:1: rule__BlockStatement__Group__2 : rule__BlockStatement__Group__2__Impl ;
    public final void rule__BlockStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12520:1: ( rule__BlockStatement__Group__2__Impl )
            // InternalFiacre.g:12521:2: rule__BlockStatement__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BlockStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__2"


    // $ANTLR start "rule__BlockStatement__Group__2__Impl"
    // InternalFiacre.g:12527:1: rule__BlockStatement__Group__2__Impl : ( 'end' ) ;
    public final void rule__BlockStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12531:1: ( ( 'end' ) )
            // InternalFiacre.g:12532:1: ( 'end' )
            {
            // InternalFiacre.g:12532:1: ( 'end' )
            // InternalFiacre.g:12533:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementAccess().getEndKeyword_2()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementAccess().getEndKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__Group__2__Impl"


    // $ANTLR start "rule__ReturnStatement__Group__0"
    // InternalFiacre.g:12543:1: rule__ReturnStatement__Group__0 : rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1 ;
    public final void rule__ReturnStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12547:1: ( rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1 )
            // InternalFiacre.g:12548:2: rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ReturnStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReturnStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReturnStatement__Group__0"


    // $ANTLR start "rule__ReturnStatement__Group__0__Impl"
    // InternalFiacre.g:12555:1: rule__ReturnStatement__Group__0__Impl : ( 'return' ) ;
    public final void rule__ReturnStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12559:1: ( ( 'return' ) )
            // InternalFiacre.g:12560:1: ( 'return' )
            {
            // InternalFiacre.g:12560:1: ( 'return' )
            // InternalFiacre.g:12561:2: 'return'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReturnStatementAccess().getReturnKeyword_0()); 
            }
            match(input,55,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReturnStatementAccess().getReturnKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReturnStatement__Group__0__Impl"


    // $ANTLR start "rule__ReturnStatement__Group__1"
    // InternalFiacre.g:12570:1: rule__ReturnStatement__Group__1 : rule__ReturnStatement__Group__1__Impl ;
    public final void rule__ReturnStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12574:1: ( rule__ReturnStatement__Group__1__Impl )
            // InternalFiacre.g:12575:2: rule__ReturnStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReturnStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReturnStatement__Group__1"


    // $ANTLR start "rule__ReturnStatement__Group__1__Impl"
    // InternalFiacre.g:12581:1: rule__ReturnStatement__Group__1__Impl : ( ( rule__ReturnStatement__ExpressionAssignment_1 ) ) ;
    public final void rule__ReturnStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12585:1: ( ( ( rule__ReturnStatement__ExpressionAssignment_1 ) ) )
            // InternalFiacre.g:12586:1: ( ( rule__ReturnStatement__ExpressionAssignment_1 ) )
            {
            // InternalFiacre.g:12586:1: ( ( rule__ReturnStatement__ExpressionAssignment_1 ) )
            // InternalFiacre.g:12587:2: ( rule__ReturnStatement__ExpressionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReturnStatementAccess().getExpressionAssignment_1()); 
            }
            // InternalFiacre.g:12588:2: ( rule__ReturnStatement__ExpressionAssignment_1 )
            // InternalFiacre.g:12588:3: rule__ReturnStatement__ExpressionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReturnStatement__ExpressionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReturnStatementAccess().getExpressionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReturnStatement__Group__1__Impl"


    // $ANTLR start "rule__NullStatement__Group__0"
    // InternalFiacre.g:12597:1: rule__NullStatement__Group__0 : rule__NullStatement__Group__0__Impl rule__NullStatement__Group__1 ;
    public final void rule__NullStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12601:1: ( rule__NullStatement__Group__0__Impl rule__NullStatement__Group__1 )
            // InternalFiacre.g:12602:2: rule__NullStatement__Group__0__Impl rule__NullStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_61);
            rule__NullStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NullStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NullStatement__Group__0"


    // $ANTLR start "rule__NullStatement__Group__0__Impl"
    // InternalFiacre.g:12609:1: rule__NullStatement__Group__0__Impl : ( () ) ;
    public final void rule__NullStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12613:1: ( ( () ) )
            // InternalFiacre.g:12614:1: ( () )
            {
            // InternalFiacre.g:12614:1: ( () )
            // InternalFiacre.g:12615:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNullStatementAccess().getNullStatementAction_0()); 
            }
            // InternalFiacre.g:12616:2: ()
            // InternalFiacre.g:12616:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNullStatementAccess().getNullStatementAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NullStatement__Group__0__Impl"


    // $ANTLR start "rule__NullStatement__Group__1"
    // InternalFiacre.g:12624:1: rule__NullStatement__Group__1 : rule__NullStatement__Group__1__Impl ;
    public final void rule__NullStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12628:1: ( rule__NullStatement__Group__1__Impl )
            // InternalFiacre.g:12629:2: rule__NullStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NullStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NullStatement__Group__1"


    // $ANTLR start "rule__NullStatement__Group__1__Impl"
    // InternalFiacre.g:12635:1: rule__NullStatement__Group__1__Impl : ( 'null' ) ;
    public final void rule__NullStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12639:1: ( ( 'null' ) )
            // InternalFiacre.g:12640:1: ( 'null' )
            {
            // InternalFiacre.g:12640:1: ( 'null' )
            // InternalFiacre.g:12641:2: 'null'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNullStatementAccess().getNullKeyword_1()); 
            }
            match(input,56,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNullStatementAccess().getNullKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NullStatement__Group__1__Impl"


    // $ANTLR start "rule__TaggedStatement__Group__0"
    // InternalFiacre.g:12651:1: rule__TaggedStatement__Group__0 : rule__TaggedStatement__Group__0__Impl rule__TaggedStatement__Group__1 ;
    public final void rule__TaggedStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12655:1: ( rule__TaggedStatement__Group__0__Impl rule__TaggedStatement__Group__1 )
            // InternalFiacre.g:12656:2: rule__TaggedStatement__Group__0__Impl rule__TaggedStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__TaggedStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TaggedStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TaggedStatement__Group__0"


    // $ANTLR start "rule__TaggedStatement__Group__0__Impl"
    // InternalFiacre.g:12663:1: rule__TaggedStatement__Group__0__Impl : ( '#' ) ;
    public final void rule__TaggedStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12667:1: ( ( '#' ) )
            // InternalFiacre.g:12668:1: ( '#' )
            {
            // InternalFiacre.g:12668:1: ( '#' )
            // InternalFiacre.g:12669:2: '#'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTaggedStatementAccess().getNumberSignKeyword_0()); 
            }
            match(input,30,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTaggedStatementAccess().getNumberSignKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TaggedStatement__Group__0__Impl"


    // $ANTLR start "rule__TaggedStatement__Group__1"
    // InternalFiacre.g:12678:1: rule__TaggedStatement__Group__1 : rule__TaggedStatement__Group__1__Impl ;
    public final void rule__TaggedStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12682:1: ( rule__TaggedStatement__Group__1__Impl )
            // InternalFiacre.g:12683:2: rule__TaggedStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TaggedStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TaggedStatement__Group__1"


    // $ANTLR start "rule__TaggedStatement__Group__1__Impl"
    // InternalFiacre.g:12689:1: rule__TaggedStatement__Group__1__Impl : ( ( rule__TaggedStatement__NameAssignment_1 ) ) ;
    public final void rule__TaggedStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12693:1: ( ( ( rule__TaggedStatement__NameAssignment_1 ) ) )
            // InternalFiacre.g:12694:1: ( ( rule__TaggedStatement__NameAssignment_1 ) )
            {
            // InternalFiacre.g:12694:1: ( ( rule__TaggedStatement__NameAssignment_1 ) )
            // InternalFiacre.g:12695:2: ( rule__TaggedStatement__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTaggedStatementAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:12696:2: ( rule__TaggedStatement__NameAssignment_1 )
            // InternalFiacre.g:12696:3: rule__TaggedStatement__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TaggedStatement__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTaggedStatementAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TaggedStatement__Group__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group__0"
    // InternalFiacre.g:12705:1: rule__PatternStatement__Group__0 : rule__PatternStatement__Group__0__Impl rule__PatternStatement__Group__1 ;
    public final void rule__PatternStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12709:1: ( rule__PatternStatement__Group__0__Impl rule__PatternStatement__Group__1 )
            // InternalFiacre.g:12710:2: rule__PatternStatement__Group__0__Impl rule__PatternStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_62);
            rule__PatternStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group__0"


    // $ANTLR start "rule__PatternStatement__Group__0__Impl"
    // InternalFiacre.g:12717:1: rule__PatternStatement__Group__0__Impl : ( rulePattern ) ;
    public final void rule__PatternStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12721:1: ( ( rulePattern ) )
            // InternalFiacre.g:12722:1: ( rulePattern )
            {
            // InternalFiacre.g:12722:1: ( rulePattern )
            // InternalFiacre.g:12723:2: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group__1"
    // InternalFiacre.g:12732:1: rule__PatternStatement__Group__1 : rule__PatternStatement__Group__1__Impl ;
    public final void rule__PatternStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12736:1: ( rule__PatternStatement__Group__1__Impl )
            // InternalFiacre.g:12737:2: rule__PatternStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group__1"


    // $ANTLR start "rule__PatternStatement__Group__1__Impl"
    // InternalFiacre.g:12743:1: rule__PatternStatement__Group__1__Impl : ( ( rule__PatternStatement__Alternatives_1 )? ) ;
    public final void rule__PatternStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12747:1: ( ( ( rule__PatternStatement__Alternatives_1 )? ) )
            // InternalFiacre.g:12748:1: ( ( rule__PatternStatement__Alternatives_1 )? )
            {
            // InternalFiacre.g:12748:1: ( ( rule__PatternStatement__Alternatives_1 )? )
            // InternalFiacre.g:12749:2: ( rule__PatternStatement__Alternatives_1 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:12750:2: ( rule__PatternStatement__Alternatives_1 )?
            int alt122=2;
            int LA122_0 = input.LA(1);

            if ( (LA122_0==24||LA122_0==50||(LA122_0>=59 && LA122_0<=60)) ) {
                alt122=1;
            }
            switch (alt122) {
                case 1 :
                    // InternalFiacre.g:12750:3: rule__PatternStatement__Alternatives_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Alternatives_1();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__0"
    // InternalFiacre.g:12759:1: rule__PatternStatement__Group_1_0__0 : rule__PatternStatement__Group_1_0__0__Impl rule__PatternStatement__Group_1_0__1 ;
    public final void rule__PatternStatement__Group_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12763:1: ( rule__PatternStatement__Group_1_0__0__Impl rule__PatternStatement__Group_1_0__1 )
            // InternalFiacre.g:12764:2: rule__PatternStatement__Group_1_0__0__Impl rule__PatternStatement__Group_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__0"


    // $ANTLR start "rule__PatternStatement__Group_1_0__0__Impl"
    // InternalFiacre.g:12771:1: rule__PatternStatement__Group_1_0__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12775:1: ( ( ',' ) )
            // InternalFiacre.g:12776:1: ( ',' )
            {
            // InternalFiacre.g:12776:1: ( ',' )
            // InternalFiacre.g:12777:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__1"
    // InternalFiacre.g:12786:1: rule__PatternStatement__Group_1_0__1 : rule__PatternStatement__Group_1_0__1__Impl rule__PatternStatement__Group_1_0__2 ;
    public final void rule__PatternStatement__Group_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12790:1: ( rule__PatternStatement__Group_1_0__1__Impl rule__PatternStatement__Group_1_0__2 )
            // InternalFiacre.g:12791:2: rule__PatternStatement__Group_1_0__1__Impl rule__PatternStatement__Group_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__1"


    // $ANTLR start "rule__PatternStatement__Group_1_0__1__Impl"
    // InternalFiacre.g:12798:1: rule__PatternStatement__Group_1_0__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12802:1: ( ( () ) )
            // InternalFiacre.g:12803:1: ( () )
            {
            // InternalFiacre.g:12803:1: ( () )
            // InternalFiacre.g:12804:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAssignStatementPatternsAction_1_0_1()); 
            }
            // InternalFiacre.g:12805:2: ()
            // InternalFiacre.g:12805:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAssignStatementPatternsAction_1_0_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__2"
    // InternalFiacre.g:12813:1: rule__PatternStatement__Group_1_0__2 : rule__PatternStatement__Group_1_0__2__Impl rule__PatternStatement__Group_1_0__3 ;
    public final void rule__PatternStatement__Group_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12817:1: ( rule__PatternStatement__Group_1_0__2__Impl rule__PatternStatement__Group_1_0__3 )
            // InternalFiacre.g:12818:2: rule__PatternStatement__Group_1_0__2__Impl rule__PatternStatement__Group_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_64);
            rule__PatternStatement__Group_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__2"


    // $ANTLR start "rule__PatternStatement__Group_1_0__2__Impl"
    // InternalFiacre.g:12825:1: rule__PatternStatement__Group_1_0__2__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_0_2 ) ) ;
    public final void rule__PatternStatement__Group_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12829:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_0_2 ) ) )
            // InternalFiacre.g:12830:1: ( ( rule__PatternStatement__PatternsAssignment_1_0_2 ) )
            {
            // InternalFiacre.g:12830:1: ( ( rule__PatternStatement__PatternsAssignment_1_0_2 ) )
            // InternalFiacre.g:12831:2: ( rule__PatternStatement__PatternsAssignment_1_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_0_2()); 
            }
            // InternalFiacre.g:12832:2: ( rule__PatternStatement__PatternsAssignment_1_0_2 )
            // InternalFiacre.g:12832:3: rule__PatternStatement__PatternsAssignment_1_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__3"
    // InternalFiacre.g:12840:1: rule__PatternStatement__Group_1_0__3 : rule__PatternStatement__Group_1_0__3__Impl rule__PatternStatement__Group_1_0__4 ;
    public final void rule__PatternStatement__Group_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12844:1: ( rule__PatternStatement__Group_1_0__3__Impl rule__PatternStatement__Group_1_0__4 )
            // InternalFiacre.g:12845:2: rule__PatternStatement__Group_1_0__3__Impl rule__PatternStatement__Group_1_0__4
            {
            pushFollow(FollowSets000.FOLLOW_64);
            rule__PatternStatement__Group_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__3"


    // $ANTLR start "rule__PatternStatement__Group_1_0__3__Impl"
    // InternalFiacre.g:12852:1: rule__PatternStatement__Group_1_0__3__Impl : ( ( rule__PatternStatement__Group_1_0_3__0 )* ) ;
    public final void rule__PatternStatement__Group_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12856:1: ( ( ( rule__PatternStatement__Group_1_0_3__0 )* ) )
            // InternalFiacre.g:12857:1: ( ( rule__PatternStatement__Group_1_0_3__0 )* )
            {
            // InternalFiacre.g:12857:1: ( ( rule__PatternStatement__Group_1_0_3__0 )* )
            // InternalFiacre.g:12858:2: ( rule__PatternStatement__Group_1_0_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_0_3()); 
            }
            // InternalFiacre.g:12859:2: ( rule__PatternStatement__Group_1_0_3__0 )*
            loop123:
            do {
                int alt123=2;
                int LA123_0 = input.LA(1);

                if ( (LA123_0==24) ) {
                    alt123=1;
                }


                switch (alt123) {
            	case 1 :
            	    // InternalFiacre.g:12859:3: rule__PatternStatement__Group_1_0_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_0_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop123;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__3__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__4"
    // InternalFiacre.g:12867:1: rule__PatternStatement__Group_1_0__4 : rule__PatternStatement__Group_1_0__4__Impl rule__PatternStatement__Group_1_0__5 ;
    public final void rule__PatternStatement__Group_1_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12871:1: ( rule__PatternStatement__Group_1_0__4__Impl rule__PatternStatement__Group_1_0__5 )
            // InternalFiacre.g:12872:2: rule__PatternStatement__Group_1_0__4__Impl rule__PatternStatement__Group_1_0__5
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__4"


    // $ANTLR start "rule__PatternStatement__Group_1_0__4__Impl"
    // InternalFiacre.g:12879:1: rule__PatternStatement__Group_1_0__4__Impl : ( ':=' ) ;
    public final void rule__PatternStatement__Group_1_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12883:1: ( ( ':=' ) )
            // InternalFiacre.g:12884:1: ( ':=' )
            {
            // InternalFiacre.g:12884:1: ( ':=' )
            // InternalFiacre.g:12885:2: ':='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_0_4()); 
            }
            match(input,50,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__4__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__5"
    // InternalFiacre.g:12894:1: rule__PatternStatement__Group_1_0__5 : rule__PatternStatement__Group_1_0__5__Impl rule__PatternStatement__Group_1_0__6 ;
    public final void rule__PatternStatement__Group_1_0__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12898:1: ( rule__PatternStatement__Group_1_0__5__Impl rule__PatternStatement__Group_1_0__6 )
            // InternalFiacre.g:12899:2: rule__PatternStatement__Group_1_0__5__Impl rule__PatternStatement__Group_1_0__6
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PatternStatement__Group_1_0__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__5"


    // $ANTLR start "rule__PatternStatement__Group_1_0__5__Impl"
    // InternalFiacre.g:12906:1: rule__PatternStatement__Group_1_0__5__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_0_5 ) ) ;
    public final void rule__PatternStatement__Group_1_0__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12910:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_0_5 ) ) )
            // InternalFiacre.g:12911:1: ( ( rule__PatternStatement__ValuesAssignment_1_0_5 ) )
            {
            // InternalFiacre.g:12911:1: ( ( rule__PatternStatement__ValuesAssignment_1_0_5 ) )
            // InternalFiacre.g:12912:2: ( rule__PatternStatement__ValuesAssignment_1_0_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_0_5()); 
            }
            // InternalFiacre.g:12913:2: ( rule__PatternStatement__ValuesAssignment_1_0_5 )
            // InternalFiacre.g:12913:3: rule__PatternStatement__ValuesAssignment_1_0_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_0_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_0_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__5__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0__6"
    // InternalFiacre.g:12921:1: rule__PatternStatement__Group_1_0__6 : rule__PatternStatement__Group_1_0__6__Impl ;
    public final void rule__PatternStatement__Group_1_0__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12925:1: ( rule__PatternStatement__Group_1_0__6__Impl )
            // InternalFiacre.g:12926:2: rule__PatternStatement__Group_1_0__6__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0__6__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__6"


    // $ANTLR start "rule__PatternStatement__Group_1_0__6__Impl"
    // InternalFiacre.g:12932:1: rule__PatternStatement__Group_1_0__6__Impl : ( ( rule__PatternStatement__Group_1_0_6__0 )* ) ;
    public final void rule__PatternStatement__Group_1_0__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12936:1: ( ( ( rule__PatternStatement__Group_1_0_6__0 )* ) )
            // InternalFiacre.g:12937:1: ( ( rule__PatternStatement__Group_1_0_6__0 )* )
            {
            // InternalFiacre.g:12937:1: ( ( rule__PatternStatement__Group_1_0_6__0 )* )
            // InternalFiacre.g:12938:2: ( rule__PatternStatement__Group_1_0_6__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_0_6()); 
            }
            // InternalFiacre.g:12939:2: ( rule__PatternStatement__Group_1_0_6__0 )*
            loop124:
            do {
                int alt124=2;
                int LA124_0 = input.LA(1);

                if ( (LA124_0==24) ) {
                    alt124=1;
                }


                switch (alt124) {
            	case 1 :
            	    // InternalFiacre.g:12939:3: rule__PatternStatement__Group_1_0_6__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_0_6__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop124;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_0_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0__6__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0_3__0"
    // InternalFiacre.g:12948:1: rule__PatternStatement__Group_1_0_3__0 : rule__PatternStatement__Group_1_0_3__0__Impl rule__PatternStatement__Group_1_0_3__1 ;
    public final void rule__PatternStatement__Group_1_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12952:1: ( rule__PatternStatement__Group_1_0_3__0__Impl rule__PatternStatement__Group_1_0_3__1 )
            // InternalFiacre.g:12953:2: rule__PatternStatement__Group_1_0_3__0__Impl rule__PatternStatement__Group_1_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_0_3__0__Impl"
    // InternalFiacre.g:12960:1: rule__PatternStatement__Group_1_0_3__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12964:1: ( ( ',' ) )
            // InternalFiacre.g:12965:1: ( ',' )
            {
            // InternalFiacre.g:12965:1: ( ',' )
            // InternalFiacre.g:12966:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_3_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0_3__1"
    // InternalFiacre.g:12975:1: rule__PatternStatement__Group_1_0_3__1 : rule__PatternStatement__Group_1_0_3__1__Impl ;
    public final void rule__PatternStatement__Group_1_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12979:1: ( rule__PatternStatement__Group_1_0_3__1__Impl )
            // InternalFiacre.g:12980:2: rule__PatternStatement__Group_1_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_0_3__1__Impl"
    // InternalFiacre.g:12986:1: rule__PatternStatement__Group_1_0_3__1__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_0_3_1 ) ) ;
    public final void rule__PatternStatement__Group_1_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:12990:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_0_3_1 ) ) )
            // InternalFiacre.g:12991:1: ( ( rule__PatternStatement__PatternsAssignment_1_0_3_1 ) )
            {
            // InternalFiacre.g:12991:1: ( ( rule__PatternStatement__PatternsAssignment_1_0_3_1 ) )
            // InternalFiacre.g:12992:2: ( rule__PatternStatement__PatternsAssignment_1_0_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_0_3_1()); 
            }
            // InternalFiacre.g:12993:2: ( rule__PatternStatement__PatternsAssignment_1_0_3_1 )
            // InternalFiacre.g:12993:3: rule__PatternStatement__PatternsAssignment_1_0_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_0_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0_6__0"
    // InternalFiacre.g:13002:1: rule__PatternStatement__Group_1_0_6__0 : rule__PatternStatement__Group_1_0_6__0__Impl rule__PatternStatement__Group_1_0_6__1 ;
    public final void rule__PatternStatement__Group_1_0_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13006:1: ( rule__PatternStatement__Group_1_0_6__0__Impl rule__PatternStatement__Group_1_0_6__1 )
            // InternalFiacre.g:13007:2: rule__PatternStatement__Group_1_0_6__0__Impl rule__PatternStatement__Group_1_0_6__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_0_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_6__0"


    // $ANTLR start "rule__PatternStatement__Group_1_0_6__0__Impl"
    // InternalFiacre.g:13014:1: rule__PatternStatement__Group_1_0_6__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_0_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13018:1: ( ( ',' ) )
            // InternalFiacre.g:13019:1: ( ',' )
            {
            // InternalFiacre.g:13019:1: ( ',' )
            // InternalFiacre.g:13020:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_6_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_0_6_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_6__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_0_6__1"
    // InternalFiacre.g:13029:1: rule__PatternStatement__Group_1_0_6__1 : rule__PatternStatement__Group_1_0_6__1__Impl ;
    public final void rule__PatternStatement__Group_1_0_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13033:1: ( rule__PatternStatement__Group_1_0_6__1__Impl )
            // InternalFiacre.g:13034:2: rule__PatternStatement__Group_1_0_6__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_0_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_6__1"


    // $ANTLR start "rule__PatternStatement__Group_1_0_6__1__Impl"
    // InternalFiacre.g:13040:1: rule__PatternStatement__Group_1_0_6__1__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_0_6_1 ) ) ;
    public final void rule__PatternStatement__Group_1_0_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13044:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_0_6_1 ) ) )
            // InternalFiacre.g:13045:1: ( ( rule__PatternStatement__ValuesAssignment_1_0_6_1 ) )
            {
            // InternalFiacre.g:13045:1: ( ( rule__PatternStatement__ValuesAssignment_1_0_6_1 ) )
            // InternalFiacre.g:13046:2: ( rule__PatternStatement__ValuesAssignment_1_0_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_0_6_1()); 
            }
            // InternalFiacre.g:13047:2: ( rule__PatternStatement__ValuesAssignment_1_0_6_1 )
            // InternalFiacre.g:13047:3: rule__PatternStatement__ValuesAssignment_1_0_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_0_6_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_0_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_0_6__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1__0"
    // InternalFiacre.g:13056:1: rule__PatternStatement__Group_1_1__0 : rule__PatternStatement__Group_1_1__0__Impl rule__PatternStatement__Group_1_1__1 ;
    public final void rule__PatternStatement__Group_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13060:1: ( rule__PatternStatement__Group_1_1__0__Impl rule__PatternStatement__Group_1_1__1 )
            // InternalFiacre.g:13061:2: rule__PatternStatement__Group_1_1__0__Impl rule__PatternStatement__Group_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__0"


    // $ANTLR start "rule__PatternStatement__Group_1_1__0__Impl"
    // InternalFiacre.g:13068:1: rule__PatternStatement__Group_1_1__0__Impl : ( ':=' ) ;
    public final void rule__PatternStatement__Group_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13072:1: ( ( ':=' ) )
            // InternalFiacre.g:13073:1: ( ':=' )
            {
            // InternalFiacre.g:13073:1: ( ':=' )
            // InternalFiacre.g:13074:2: ':='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_1_0()); 
            }
            match(input,50,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1__1"
    // InternalFiacre.g:13083:1: rule__PatternStatement__Group_1_1__1 : rule__PatternStatement__Group_1_1__1__Impl rule__PatternStatement__Group_1_1__2 ;
    public final void rule__PatternStatement__Group_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13087:1: ( rule__PatternStatement__Group_1_1__1__Impl rule__PatternStatement__Group_1_1__2 )
            // InternalFiacre.g:13088:2: rule__PatternStatement__Group_1_1__1__Impl rule__PatternStatement__Group_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__1"


    // $ANTLR start "rule__PatternStatement__Group_1_1__1__Impl"
    // InternalFiacre.g:13095:1: rule__PatternStatement__Group_1_1__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13099:1: ( ( () ) )
            // InternalFiacre.g:13100:1: ( () )
            {
            // InternalFiacre.g:13100:1: ( () )
            // InternalFiacre.g:13101:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAssignStatementPatternsAction_1_1_1()); 
            }
            // InternalFiacre.g:13102:2: ()
            // InternalFiacre.g:13102:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAssignStatementPatternsAction_1_1_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1__2"
    // InternalFiacre.g:13110:1: rule__PatternStatement__Group_1_1__2 : rule__PatternStatement__Group_1_1__2__Impl ;
    public final void rule__PatternStatement__Group_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13114:1: ( rule__PatternStatement__Group_1_1__2__Impl )
            // InternalFiacre.g:13115:2: rule__PatternStatement__Group_1_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__2"


    // $ANTLR start "rule__PatternStatement__Group_1_1__2__Impl"
    // InternalFiacre.g:13121:1: rule__PatternStatement__Group_1_1__2__Impl : ( ( rule__PatternStatement__Group_1_1_2__0 ) ) ;
    public final void rule__PatternStatement__Group_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13125:1: ( ( ( rule__PatternStatement__Group_1_1_2__0 ) ) )
            // InternalFiacre.g:13126:1: ( ( rule__PatternStatement__Group_1_1_2__0 ) )
            {
            // InternalFiacre.g:13126:1: ( ( rule__PatternStatement__Group_1_1_2__0 ) )
            // InternalFiacre.g:13127:2: ( rule__PatternStatement__Group_1_1_2__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_1_2()); 
            }
            // InternalFiacre.g:13128:2: ( rule__PatternStatement__Group_1_1_2__0 )
            // InternalFiacre.g:13128:3: rule__PatternStatement__Group_1_1_2__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1_2__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2__0"
    // InternalFiacre.g:13137:1: rule__PatternStatement__Group_1_1_2__0 : rule__PatternStatement__Group_1_1_2__0__Impl rule__PatternStatement__Group_1_1_2__1 ;
    public final void rule__PatternStatement__Group_1_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13141:1: ( rule__PatternStatement__Group_1_1_2__0__Impl rule__PatternStatement__Group_1_1_2__1 )
            // InternalFiacre.g:13142:2: rule__PatternStatement__Group_1_1_2__0__Impl rule__PatternStatement__Group_1_1_2__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PatternStatement__Group_1_1_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2__0"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2__0__Impl"
    // InternalFiacre.g:13149:1: rule__PatternStatement__Group_1_1_2__0__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_1_2_0 ) ) ;
    public final void rule__PatternStatement__Group_1_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13153:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_1_2_0 ) ) )
            // InternalFiacre.g:13154:1: ( ( rule__PatternStatement__ValuesAssignment_1_1_2_0 ) )
            {
            // InternalFiacre.g:13154:1: ( ( rule__PatternStatement__ValuesAssignment_1_1_2_0 ) )
            // InternalFiacre.g:13155:2: ( rule__PatternStatement__ValuesAssignment_1_1_2_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_1_2_0()); 
            }
            // InternalFiacre.g:13156:2: ( rule__PatternStatement__ValuesAssignment_1_1_2_0 )
            // InternalFiacre.g:13156:3: rule__PatternStatement__ValuesAssignment_1_1_2_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_1_2_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2__1"
    // InternalFiacre.g:13164:1: rule__PatternStatement__Group_1_1_2__1 : rule__PatternStatement__Group_1_1_2__1__Impl ;
    public final void rule__PatternStatement__Group_1_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13168:1: ( rule__PatternStatement__Group_1_1_2__1__Impl )
            // InternalFiacre.g:13169:2: rule__PatternStatement__Group_1_1_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2__1"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2__1__Impl"
    // InternalFiacre.g:13175:1: rule__PatternStatement__Group_1_1_2__1__Impl : ( ( rule__PatternStatement__Group_1_1_2_1__0 )* ) ;
    public final void rule__PatternStatement__Group_1_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13179:1: ( ( ( rule__PatternStatement__Group_1_1_2_1__0 )* ) )
            // InternalFiacre.g:13180:1: ( ( rule__PatternStatement__Group_1_1_2_1__0 )* )
            {
            // InternalFiacre.g:13180:1: ( ( rule__PatternStatement__Group_1_1_2_1__0 )* )
            // InternalFiacre.g:13181:2: ( rule__PatternStatement__Group_1_1_2_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_1_2_1()); 
            }
            // InternalFiacre.g:13182:2: ( rule__PatternStatement__Group_1_1_2_1__0 )*
            loop125:
            do {
                int alt125=2;
                int LA125_0 = input.LA(1);

                if ( (LA125_0==24) ) {
                    alt125=1;
                }


                switch (alt125) {
            	case 1 :
            	    // InternalFiacre.g:13182:3: rule__PatternStatement__Group_1_1_2_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_1_2_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop125;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_1_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2_1__0"
    // InternalFiacre.g:13191:1: rule__PatternStatement__Group_1_1_2_1__0 : rule__PatternStatement__Group_1_1_2_1__0__Impl rule__PatternStatement__Group_1_1_2_1__1 ;
    public final void rule__PatternStatement__Group_1_1_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13195:1: ( rule__PatternStatement__Group_1_1_2_1__0__Impl rule__PatternStatement__Group_1_1_2_1__1 )
            // InternalFiacre.g:13196:2: rule__PatternStatement__Group_1_1_2_1__0__Impl rule__PatternStatement__Group_1_1_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_1_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2_1__0"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2_1__0__Impl"
    // InternalFiacre.g:13203:1: rule__PatternStatement__Group_1_1_2_1__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_1_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13207:1: ( ( ',' ) )
            // InternalFiacre.g:13208:1: ( ',' )
            {
            // InternalFiacre.g:13208:1: ( ',' )
            // InternalFiacre.g:13209:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_1_2_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_1_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2_1__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2_1__1"
    // InternalFiacre.g:13218:1: rule__PatternStatement__Group_1_1_2_1__1 : rule__PatternStatement__Group_1_1_2_1__1__Impl ;
    public final void rule__PatternStatement__Group_1_1_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13222:1: ( rule__PatternStatement__Group_1_1_2_1__1__Impl )
            // InternalFiacre.g:13223:2: rule__PatternStatement__Group_1_1_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_1_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2_1__1"


    // $ANTLR start "rule__PatternStatement__Group_1_1_2_1__1__Impl"
    // InternalFiacre.g:13229:1: rule__PatternStatement__Group_1_1_2_1__1__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 ) ) ;
    public final void rule__PatternStatement__Group_1_1_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13233:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 ) ) )
            // InternalFiacre.g:13234:1: ( ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 ) )
            {
            // InternalFiacre.g:13234:1: ( ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 ) )
            // InternalFiacre.g:13235:2: ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_1_2_1_1()); 
            }
            // InternalFiacre.g:13236:2: ( rule__PatternStatement__ValuesAssignment_1_1_2_1_1 )
            // InternalFiacre.g:13236:3: rule__PatternStatement__ValuesAssignment_1_1_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_1_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_1_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_1_2_1__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__0"
    // InternalFiacre.g:13245:1: rule__PatternStatement__Group_1_2__0 : rule__PatternStatement__Group_1_2__0__Impl rule__PatternStatement__Group_1_2__1 ;
    public final void rule__PatternStatement__Group_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13249:1: ( rule__PatternStatement__Group_1_2__0__Impl rule__PatternStatement__Group_1_2__1 )
            // InternalFiacre.g:13250:2: rule__PatternStatement__Group_1_2__0__Impl rule__PatternStatement__Group_1_2__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__0"


    // $ANTLR start "rule__PatternStatement__Group_1_2__0__Impl"
    // InternalFiacre.g:13257:1: rule__PatternStatement__Group_1_2__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13261:1: ( ( ',' ) )
            // InternalFiacre.g:13262:1: ( ',' )
            {
            // InternalFiacre.g:13262:1: ( ',' )
            // InternalFiacre.g:13263:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__1"
    // InternalFiacre.g:13272:1: rule__PatternStatement__Group_1_2__1 : rule__PatternStatement__Group_1_2__1__Impl rule__PatternStatement__Group_1_2__2 ;
    public final void rule__PatternStatement__Group_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13276:1: ( rule__PatternStatement__Group_1_2__1__Impl rule__PatternStatement__Group_1_2__2 )
            // InternalFiacre.g:13277:2: rule__PatternStatement__Group_1_2__1__Impl rule__PatternStatement__Group_1_2__2
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__1"


    // $ANTLR start "rule__PatternStatement__Group_1_2__1__Impl"
    // InternalFiacre.g:13284:1: rule__PatternStatement__Group_1_2__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13288:1: ( ( () ) )
            // InternalFiacre.g:13289:1: ( () )
            {
            // InternalFiacre.g:13289:1: ( () )
            // InternalFiacre.g:13290:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAssignAnyStatementPatternsAction_1_2_1()); 
            }
            // InternalFiacre.g:13291:2: ()
            // InternalFiacre.g:13291:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAssignAnyStatementPatternsAction_1_2_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__2"
    // InternalFiacre.g:13299:1: rule__PatternStatement__Group_1_2__2 : rule__PatternStatement__Group_1_2__2__Impl rule__PatternStatement__Group_1_2__3 ;
    public final void rule__PatternStatement__Group_1_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13303:1: ( rule__PatternStatement__Group_1_2__2__Impl rule__PatternStatement__Group_1_2__3 )
            // InternalFiacre.g:13304:2: rule__PatternStatement__Group_1_2__2__Impl rule__PatternStatement__Group_1_2__3
            {
            pushFollow(FollowSets000.FOLLOW_64);
            rule__PatternStatement__Group_1_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__2"


    // $ANTLR start "rule__PatternStatement__Group_1_2__2__Impl"
    // InternalFiacre.g:13311:1: rule__PatternStatement__Group_1_2__2__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_2_2 ) ) ;
    public final void rule__PatternStatement__Group_1_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13315:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_2_2 ) ) )
            // InternalFiacre.g:13316:1: ( ( rule__PatternStatement__PatternsAssignment_1_2_2 ) )
            {
            // InternalFiacre.g:13316:1: ( ( rule__PatternStatement__PatternsAssignment_1_2_2 ) )
            // InternalFiacre.g:13317:2: ( rule__PatternStatement__PatternsAssignment_1_2_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_2_2()); 
            }
            // InternalFiacre.g:13318:2: ( rule__PatternStatement__PatternsAssignment_1_2_2 )
            // InternalFiacre.g:13318:3: rule__PatternStatement__PatternsAssignment_1_2_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_2_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__3"
    // InternalFiacre.g:13326:1: rule__PatternStatement__Group_1_2__3 : rule__PatternStatement__Group_1_2__3__Impl rule__PatternStatement__Group_1_2__4 ;
    public final void rule__PatternStatement__Group_1_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13330:1: ( rule__PatternStatement__Group_1_2__3__Impl rule__PatternStatement__Group_1_2__4 )
            // InternalFiacre.g:13331:2: rule__PatternStatement__Group_1_2__3__Impl rule__PatternStatement__Group_1_2__4
            {
            pushFollow(FollowSets000.FOLLOW_64);
            rule__PatternStatement__Group_1_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__3"


    // $ANTLR start "rule__PatternStatement__Group_1_2__3__Impl"
    // InternalFiacre.g:13338:1: rule__PatternStatement__Group_1_2__3__Impl : ( ( rule__PatternStatement__Group_1_2_3__0 )* ) ;
    public final void rule__PatternStatement__Group_1_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13342:1: ( ( ( rule__PatternStatement__Group_1_2_3__0 )* ) )
            // InternalFiacre.g:13343:1: ( ( rule__PatternStatement__Group_1_2_3__0 )* )
            {
            // InternalFiacre.g:13343:1: ( ( rule__PatternStatement__Group_1_2_3__0 )* )
            // InternalFiacre.g:13344:2: ( rule__PatternStatement__Group_1_2_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_2_3()); 
            }
            // InternalFiacre.g:13345:2: ( rule__PatternStatement__Group_1_2_3__0 )*
            loop126:
            do {
                int alt126=2;
                int LA126_0 = input.LA(1);

                if ( (LA126_0==24) ) {
                    alt126=1;
                }


                switch (alt126) {
            	case 1 :
            	    // InternalFiacre.g:13345:3: rule__PatternStatement__Group_1_2_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_2_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop126;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__3__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__4"
    // InternalFiacre.g:13353:1: rule__PatternStatement__Group_1_2__4 : rule__PatternStatement__Group_1_2__4__Impl rule__PatternStatement__Group_1_2__5 ;
    public final void rule__PatternStatement__Group_1_2__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13357:1: ( rule__PatternStatement__Group_1_2__4__Impl rule__PatternStatement__Group_1_2__5 )
            // InternalFiacre.g:13358:2: rule__PatternStatement__Group_1_2__4__Impl rule__PatternStatement__Group_1_2__5
            {
            pushFollow(FollowSets000.FOLLOW_65);
            rule__PatternStatement__Group_1_2__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__4"


    // $ANTLR start "rule__PatternStatement__Group_1_2__4__Impl"
    // InternalFiacre.g:13365:1: rule__PatternStatement__Group_1_2__4__Impl : ( ':=' ) ;
    public final void rule__PatternStatement__Group_1_2__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13369:1: ( ( ':=' ) )
            // InternalFiacre.g:13370:1: ( ':=' )
            {
            // InternalFiacre.g:13370:1: ( ':=' )
            // InternalFiacre.g:13371:2: ':='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_2_4()); 
            }
            match(input,50,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_2_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__4__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__5"
    // InternalFiacre.g:13380:1: rule__PatternStatement__Group_1_2__5 : rule__PatternStatement__Group_1_2__5__Impl rule__PatternStatement__Group_1_2__6 ;
    public final void rule__PatternStatement__Group_1_2__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13384:1: ( rule__PatternStatement__Group_1_2__5__Impl rule__PatternStatement__Group_1_2__6 )
            // InternalFiacre.g:13385:2: rule__PatternStatement__Group_1_2__5__Impl rule__PatternStatement__Group_1_2__6
            {
            pushFollow(FollowSets000.FOLLOW_66);
            rule__PatternStatement__Group_1_2__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__5"


    // $ANTLR start "rule__PatternStatement__Group_1_2__5__Impl"
    // InternalFiacre.g:13392:1: rule__PatternStatement__Group_1_2__5__Impl : ( 'any' ) ;
    public final void rule__PatternStatement__Group_1_2__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13396:1: ( ( 'any' ) )
            // InternalFiacre.g:13397:1: ( 'any' )
            {
            // InternalFiacre.g:13397:1: ( 'any' )
            // InternalFiacre.g:13398:2: 'any'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAnyKeyword_1_2_5()); 
            }
            match(input,57,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAnyKeyword_1_2_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__5__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2__6"
    // InternalFiacre.g:13407:1: rule__PatternStatement__Group_1_2__6 : rule__PatternStatement__Group_1_2__6__Impl ;
    public final void rule__PatternStatement__Group_1_2__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13411:1: ( rule__PatternStatement__Group_1_2__6__Impl )
            // InternalFiacre.g:13412:2: rule__PatternStatement__Group_1_2__6__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2__6__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__6"


    // $ANTLR start "rule__PatternStatement__Group_1_2__6__Impl"
    // InternalFiacre.g:13418:1: rule__PatternStatement__Group_1_2__6__Impl : ( ( rule__PatternStatement__Group_1_2_6__0 )? ) ;
    public final void rule__PatternStatement__Group_1_2__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13422:1: ( ( ( rule__PatternStatement__Group_1_2_6__0 )? ) )
            // InternalFiacre.g:13423:1: ( ( rule__PatternStatement__Group_1_2_6__0 )? )
            {
            // InternalFiacre.g:13423:1: ( ( rule__PatternStatement__Group_1_2_6__0 )? )
            // InternalFiacre.g:13424:2: ( rule__PatternStatement__Group_1_2_6__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_2_6()); 
            }
            // InternalFiacre.g:13425:2: ( rule__PatternStatement__Group_1_2_6__0 )?
            int alt127=2;
            int LA127_0 = input.LA(1);

            if ( (LA127_0==58) ) {
                alt127=1;
            }
            switch (alt127) {
                case 1 :
                    // InternalFiacre.g:13425:3: rule__PatternStatement__Group_1_2_6__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_2_6__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_2_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2__6__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2_3__0"
    // InternalFiacre.g:13434:1: rule__PatternStatement__Group_1_2_3__0 : rule__PatternStatement__Group_1_2_3__0__Impl rule__PatternStatement__Group_1_2_3__1 ;
    public final void rule__PatternStatement__Group_1_2_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13438:1: ( rule__PatternStatement__Group_1_2_3__0__Impl rule__PatternStatement__Group_1_2_3__1 )
            // InternalFiacre.g:13439:2: rule__PatternStatement__Group_1_2_3__0__Impl rule__PatternStatement__Group_1_2_3__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_2_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_2_3__0__Impl"
    // InternalFiacre.g:13446:1: rule__PatternStatement__Group_1_2_3__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_2_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13450:1: ( ( ',' ) )
            // InternalFiacre.g:13451:1: ( ',' )
            {
            // InternalFiacre.g:13451:1: ( ',' )
            // InternalFiacre.g:13452:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_2_3_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2_3__1"
    // InternalFiacre.g:13461:1: rule__PatternStatement__Group_1_2_3__1 : rule__PatternStatement__Group_1_2_3__1__Impl ;
    public final void rule__PatternStatement__Group_1_2_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13465:1: ( rule__PatternStatement__Group_1_2_3__1__Impl )
            // InternalFiacre.g:13466:2: rule__PatternStatement__Group_1_2_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_2_3__1__Impl"
    // InternalFiacre.g:13472:1: rule__PatternStatement__Group_1_2_3__1__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_2_3_1 ) ) ;
    public final void rule__PatternStatement__Group_1_2_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13476:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_2_3_1 ) ) )
            // InternalFiacre.g:13477:1: ( ( rule__PatternStatement__PatternsAssignment_1_2_3_1 ) )
            {
            // InternalFiacre.g:13477:1: ( ( rule__PatternStatement__PatternsAssignment_1_2_3_1 ) )
            // InternalFiacre.g:13478:2: ( rule__PatternStatement__PatternsAssignment_1_2_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_2_3_1()); 
            }
            // InternalFiacre.g:13479:2: ( rule__PatternStatement__PatternsAssignment_1_2_3_1 )
            // InternalFiacre.g:13479:3: rule__PatternStatement__PatternsAssignment_1_2_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_2_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_2_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2_6__0"
    // InternalFiacre.g:13488:1: rule__PatternStatement__Group_1_2_6__0 : rule__PatternStatement__Group_1_2_6__0__Impl rule__PatternStatement__Group_1_2_6__1 ;
    public final void rule__PatternStatement__Group_1_2_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13492:1: ( rule__PatternStatement__Group_1_2_6__0__Impl rule__PatternStatement__Group_1_2_6__1 )
            // InternalFiacre.g:13493:2: rule__PatternStatement__Group_1_2_6__0__Impl rule__PatternStatement__Group_1_2_6__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_2_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_6__0"


    // $ANTLR start "rule__PatternStatement__Group_1_2_6__0__Impl"
    // InternalFiacre.g:13500:1: rule__PatternStatement__Group_1_2_6__0__Impl : ( 'where' ) ;
    public final void rule__PatternStatement__Group_1_2_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13504:1: ( ( 'where' ) )
            // InternalFiacre.g:13505:1: ( 'where' )
            {
            // InternalFiacre.g:13505:1: ( 'where' )
            // InternalFiacre.g:13506:2: 'where'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_2_6_0()); 
            }
            match(input,58,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_2_6_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_6__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_2_6__1"
    // InternalFiacre.g:13515:1: rule__PatternStatement__Group_1_2_6__1 : rule__PatternStatement__Group_1_2_6__1__Impl ;
    public final void rule__PatternStatement__Group_1_2_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13519:1: ( rule__PatternStatement__Group_1_2_6__1__Impl )
            // InternalFiacre.g:13520:2: rule__PatternStatement__Group_1_2_6__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_2_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_6__1"


    // $ANTLR start "rule__PatternStatement__Group_1_2_6__1__Impl"
    // InternalFiacre.g:13526:1: rule__PatternStatement__Group_1_2_6__1__Impl : ( ( rule__PatternStatement__ExpAssignment_1_2_6_1 ) ) ;
    public final void rule__PatternStatement__Group_1_2_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13530:1: ( ( ( rule__PatternStatement__ExpAssignment_1_2_6_1 ) ) )
            // InternalFiacre.g:13531:1: ( ( rule__PatternStatement__ExpAssignment_1_2_6_1 ) )
            {
            // InternalFiacre.g:13531:1: ( ( rule__PatternStatement__ExpAssignment_1_2_6_1 ) )
            // InternalFiacre.g:13532:2: ( rule__PatternStatement__ExpAssignment_1_2_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpAssignment_1_2_6_1()); 
            }
            // InternalFiacre.g:13533:2: ( rule__PatternStatement__ExpAssignment_1_2_6_1 )
            // InternalFiacre.g:13533:3: rule__PatternStatement__ExpAssignment_1_2_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ExpAssignment_1_2_6_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpAssignment_1_2_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_2_6__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3__0"
    // InternalFiacre.g:13542:1: rule__PatternStatement__Group_1_3__0 : rule__PatternStatement__Group_1_3__0__Impl rule__PatternStatement__Group_1_3__1 ;
    public final void rule__PatternStatement__Group_1_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13546:1: ( rule__PatternStatement__Group_1_3__0__Impl rule__PatternStatement__Group_1_3__1 )
            // InternalFiacre.g:13547:2: rule__PatternStatement__Group_1_3__0__Impl rule__PatternStatement__Group_1_3__1
            {
            pushFollow(FollowSets000.FOLLOW_65);
            rule__PatternStatement__Group_1_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_3__0__Impl"
    // InternalFiacre.g:13554:1: rule__PatternStatement__Group_1_3__0__Impl : ( ':=' ) ;
    public final void rule__PatternStatement__Group_1_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13558:1: ( ( ':=' ) )
            // InternalFiacre.g:13559:1: ( ':=' )
            {
            // InternalFiacre.g:13559:1: ( ':=' )
            // InternalFiacre.g:13560:2: ':='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_3_0()); 
            }
            match(input,50,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getColonEqualsSignKeyword_1_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3__1"
    // InternalFiacre.g:13569:1: rule__PatternStatement__Group_1_3__1 : rule__PatternStatement__Group_1_3__1__Impl rule__PatternStatement__Group_1_3__2 ;
    public final void rule__PatternStatement__Group_1_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13573:1: ( rule__PatternStatement__Group_1_3__1__Impl rule__PatternStatement__Group_1_3__2 )
            // InternalFiacre.g:13574:2: rule__PatternStatement__Group_1_3__1__Impl rule__PatternStatement__Group_1_3__2
            {
            pushFollow(FollowSets000.FOLLOW_65);
            rule__PatternStatement__Group_1_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_3__1__Impl"
    // InternalFiacre.g:13581:1: rule__PatternStatement__Group_1_3__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13585:1: ( ( () ) )
            // InternalFiacre.g:13586:1: ( () )
            {
            // InternalFiacre.g:13586:1: ( () )
            // InternalFiacre.g:13587:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAssignAnyStatementPatternsAction_1_3_1()); 
            }
            // InternalFiacre.g:13588:2: ()
            // InternalFiacre.g:13588:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAssignAnyStatementPatternsAction_1_3_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3__2"
    // InternalFiacre.g:13596:1: rule__PatternStatement__Group_1_3__2 : rule__PatternStatement__Group_1_3__2__Impl rule__PatternStatement__Group_1_3__3 ;
    public final void rule__PatternStatement__Group_1_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13600:1: ( rule__PatternStatement__Group_1_3__2__Impl rule__PatternStatement__Group_1_3__3 )
            // InternalFiacre.g:13601:2: rule__PatternStatement__Group_1_3__2__Impl rule__PatternStatement__Group_1_3__3
            {
            pushFollow(FollowSets000.FOLLOW_66);
            rule__PatternStatement__Group_1_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__2"


    // $ANTLR start "rule__PatternStatement__Group_1_3__2__Impl"
    // InternalFiacre.g:13608:1: rule__PatternStatement__Group_1_3__2__Impl : ( 'any' ) ;
    public final void rule__PatternStatement__Group_1_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13612:1: ( ( 'any' ) )
            // InternalFiacre.g:13613:1: ( 'any' )
            {
            // InternalFiacre.g:13613:1: ( 'any' )
            // InternalFiacre.g:13614:2: 'any'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getAnyKeyword_1_3_2()); 
            }
            match(input,57,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getAnyKeyword_1_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3__3"
    // InternalFiacre.g:13623:1: rule__PatternStatement__Group_1_3__3 : rule__PatternStatement__Group_1_3__3__Impl ;
    public final void rule__PatternStatement__Group_1_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13627:1: ( rule__PatternStatement__Group_1_3__3__Impl )
            // InternalFiacre.g:13628:2: rule__PatternStatement__Group_1_3__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__3"


    // $ANTLR start "rule__PatternStatement__Group_1_3__3__Impl"
    // InternalFiacre.g:13634:1: rule__PatternStatement__Group_1_3__3__Impl : ( ( rule__PatternStatement__Group_1_3_3__0 )? ) ;
    public final void rule__PatternStatement__Group_1_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13638:1: ( ( ( rule__PatternStatement__Group_1_3_3__0 )? ) )
            // InternalFiacre.g:13639:1: ( ( rule__PatternStatement__Group_1_3_3__0 )? )
            {
            // InternalFiacre.g:13639:1: ( ( rule__PatternStatement__Group_1_3_3__0 )? )
            // InternalFiacre.g:13640:2: ( rule__PatternStatement__Group_1_3_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_3_3()); 
            }
            // InternalFiacre.g:13641:2: ( rule__PatternStatement__Group_1_3_3__0 )?
            int alt128=2;
            int LA128_0 = input.LA(1);

            if ( (LA128_0==58) ) {
                alt128=1;
            }
            switch (alt128) {
                case 1 :
                    // InternalFiacre.g:13641:3: rule__PatternStatement__Group_1_3_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_3_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_3_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3__3__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3_3__0"
    // InternalFiacre.g:13650:1: rule__PatternStatement__Group_1_3_3__0 : rule__PatternStatement__Group_1_3_3__0__Impl rule__PatternStatement__Group_1_3_3__1 ;
    public final void rule__PatternStatement__Group_1_3_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13654:1: ( rule__PatternStatement__Group_1_3_3__0__Impl rule__PatternStatement__Group_1_3_3__1 )
            // InternalFiacre.g:13655:2: rule__PatternStatement__Group_1_3_3__0__Impl rule__PatternStatement__Group_1_3_3__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_3_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_3_3__0__Impl"
    // InternalFiacre.g:13662:1: rule__PatternStatement__Group_1_3_3__0__Impl : ( 'where' ) ;
    public final void rule__PatternStatement__Group_1_3_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13666:1: ( ( 'where' ) )
            // InternalFiacre.g:13667:1: ( 'where' )
            {
            // InternalFiacre.g:13667:1: ( 'where' )
            // InternalFiacre.g:13668:2: 'where'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_3_3_0()); 
            }
            match(input,58,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_3_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_3_3__1"
    // InternalFiacre.g:13677:1: rule__PatternStatement__Group_1_3_3__1 : rule__PatternStatement__Group_1_3_3__1__Impl ;
    public final void rule__PatternStatement__Group_1_3_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13681:1: ( rule__PatternStatement__Group_1_3_3__1__Impl )
            // InternalFiacre.g:13682:2: rule__PatternStatement__Group_1_3_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_3_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_3_3__1__Impl"
    // InternalFiacre.g:13688:1: rule__PatternStatement__Group_1_3_3__1__Impl : ( ( rule__PatternStatement__ExpAssignment_1_3_3_1 ) ) ;
    public final void rule__PatternStatement__Group_1_3_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13692:1: ( ( ( rule__PatternStatement__ExpAssignment_1_3_3_1 ) ) )
            // InternalFiacre.g:13693:1: ( ( rule__PatternStatement__ExpAssignment_1_3_3_1 ) )
            {
            // InternalFiacre.g:13693:1: ( ( rule__PatternStatement__ExpAssignment_1_3_3_1 ) )
            // InternalFiacre.g:13694:2: ( rule__PatternStatement__ExpAssignment_1_3_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpAssignment_1_3_3_1()); 
            }
            // InternalFiacre.g:13695:2: ( rule__PatternStatement__ExpAssignment_1_3_3_1 )
            // InternalFiacre.g:13695:3: rule__PatternStatement__ExpAssignment_1_3_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ExpAssignment_1_3_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpAssignment_1_3_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_3_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4__0"
    // InternalFiacre.g:13704:1: rule__PatternStatement__Group_1_4__0 : rule__PatternStatement__Group_1_4__0__Impl rule__PatternStatement__Group_1_4__1 ;
    public final void rule__PatternStatement__Group_1_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13708:1: ( rule__PatternStatement__Group_1_4__0__Impl rule__PatternStatement__Group_1_4__1 )
            // InternalFiacre.g:13709:2: rule__PatternStatement__Group_1_4__0__Impl rule__PatternStatement__Group_1_4__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__0"


    // $ANTLR start "rule__PatternStatement__Group_1_4__0__Impl"
    // InternalFiacre.g:13716:1: rule__PatternStatement__Group_1_4__0__Impl : ( '!' ) ;
    public final void rule__PatternStatement__Group_1_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13720:1: ( ( '!' ) )
            // InternalFiacre.g:13721:1: ( '!' )
            {
            // InternalFiacre.g:13721:1: ( '!' )
            // InternalFiacre.g:13722:2: '!'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExclamationMarkKeyword_1_4_0()); 
            }
            match(input,59,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExclamationMarkKeyword_1_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4__1"
    // InternalFiacre.g:13731:1: rule__PatternStatement__Group_1_4__1 : rule__PatternStatement__Group_1_4__1__Impl rule__PatternStatement__Group_1_4__2 ;
    public final void rule__PatternStatement__Group_1_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13735:1: ( rule__PatternStatement__Group_1_4__1__Impl rule__PatternStatement__Group_1_4__2 )
            // InternalFiacre.g:13736:2: rule__PatternStatement__Group_1_4__1__Impl rule__PatternStatement__Group_1_4__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__1"


    // $ANTLR start "rule__PatternStatement__Group_1_4__1__Impl"
    // InternalFiacre.g:13743:1: rule__PatternStatement__Group_1_4__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13747:1: ( ( () ) )
            // InternalFiacre.g:13748:1: ( () )
            {
            // InternalFiacre.g:13748:1: ( () )
            // InternalFiacre.g:13749:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getSendStatementPortAction_1_4_1()); 
            }
            // InternalFiacre.g:13750:2: ()
            // InternalFiacre.g:13750:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getSendStatementPortAction_1_4_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4__2"
    // InternalFiacre.g:13758:1: rule__PatternStatement__Group_1_4__2 : rule__PatternStatement__Group_1_4__2__Impl rule__PatternStatement__Group_1_4__3 ;
    public final void rule__PatternStatement__Group_1_4__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13762:1: ( rule__PatternStatement__Group_1_4__2__Impl rule__PatternStatement__Group_1_4__3 )
            // InternalFiacre.g:13763:2: rule__PatternStatement__Group_1_4__2__Impl rule__PatternStatement__Group_1_4__3
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PatternStatement__Group_1_4__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__2"


    // $ANTLR start "rule__PatternStatement__Group_1_4__2__Impl"
    // InternalFiacre.g:13770:1: rule__PatternStatement__Group_1_4__2__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_4_2 ) ) ;
    public final void rule__PatternStatement__Group_1_4__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13774:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_4_2 ) ) )
            // InternalFiacre.g:13775:1: ( ( rule__PatternStatement__ValuesAssignment_1_4_2 ) )
            {
            // InternalFiacre.g:13775:1: ( ( rule__PatternStatement__ValuesAssignment_1_4_2 ) )
            // InternalFiacre.g:13776:2: ( rule__PatternStatement__ValuesAssignment_1_4_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_4_2()); 
            }
            // InternalFiacre.g:13777:2: ( rule__PatternStatement__ValuesAssignment_1_4_2 )
            // InternalFiacre.g:13777:3: rule__PatternStatement__ValuesAssignment_1_4_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_4_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_4_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4__3"
    // InternalFiacre.g:13785:1: rule__PatternStatement__Group_1_4__3 : rule__PatternStatement__Group_1_4__3__Impl ;
    public final void rule__PatternStatement__Group_1_4__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13789:1: ( rule__PatternStatement__Group_1_4__3__Impl )
            // InternalFiacre.g:13790:2: rule__PatternStatement__Group_1_4__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__3"


    // $ANTLR start "rule__PatternStatement__Group_1_4__3__Impl"
    // InternalFiacre.g:13796:1: rule__PatternStatement__Group_1_4__3__Impl : ( ( rule__PatternStatement__Group_1_4_3__0 )* ) ;
    public final void rule__PatternStatement__Group_1_4__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13800:1: ( ( ( rule__PatternStatement__Group_1_4_3__0 )* ) )
            // InternalFiacre.g:13801:1: ( ( rule__PatternStatement__Group_1_4_3__0 )* )
            {
            // InternalFiacre.g:13801:1: ( ( rule__PatternStatement__Group_1_4_3__0 )* )
            // InternalFiacre.g:13802:2: ( rule__PatternStatement__Group_1_4_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_4_3()); 
            }
            // InternalFiacre.g:13803:2: ( rule__PatternStatement__Group_1_4_3__0 )*
            loop129:
            do {
                int alt129=2;
                int LA129_0 = input.LA(1);

                if ( (LA129_0==24) ) {
                    alt129=1;
                }


                switch (alt129) {
            	case 1 :
            	    // InternalFiacre.g:13803:3: rule__PatternStatement__Group_1_4_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_4_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop129;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_4_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4__3__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4_3__0"
    // InternalFiacre.g:13812:1: rule__PatternStatement__Group_1_4_3__0 : rule__PatternStatement__Group_1_4_3__0__Impl rule__PatternStatement__Group_1_4_3__1 ;
    public final void rule__PatternStatement__Group_1_4_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13816:1: ( rule__PatternStatement__Group_1_4_3__0__Impl rule__PatternStatement__Group_1_4_3__1 )
            // InternalFiacre.g:13817:2: rule__PatternStatement__Group_1_4_3__0__Impl rule__PatternStatement__Group_1_4_3__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_4_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_4_3__0__Impl"
    // InternalFiacre.g:13824:1: rule__PatternStatement__Group_1_4_3__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_4_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13828:1: ( ( ',' ) )
            // InternalFiacre.g:13829:1: ( ',' )
            {
            // InternalFiacre.g:13829:1: ( ',' )
            // InternalFiacre.g:13830:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_4_3_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_4_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_4_3__1"
    // InternalFiacre.g:13839:1: rule__PatternStatement__Group_1_4_3__1 : rule__PatternStatement__Group_1_4_3__1__Impl ;
    public final void rule__PatternStatement__Group_1_4_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13843:1: ( rule__PatternStatement__Group_1_4_3__1__Impl )
            // InternalFiacre.g:13844:2: rule__PatternStatement__Group_1_4_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_4_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_4_3__1__Impl"
    // InternalFiacre.g:13850:1: rule__PatternStatement__Group_1_4_3__1__Impl : ( ( rule__PatternStatement__ValuesAssignment_1_4_3_1 ) ) ;
    public final void rule__PatternStatement__Group_1_4_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13854:1: ( ( ( rule__PatternStatement__ValuesAssignment_1_4_3_1 ) ) )
            // InternalFiacre.g:13855:1: ( ( rule__PatternStatement__ValuesAssignment_1_4_3_1 ) )
            {
            // InternalFiacre.g:13855:1: ( ( rule__PatternStatement__ValuesAssignment_1_4_3_1 ) )
            // InternalFiacre.g:13856:2: ( rule__PatternStatement__ValuesAssignment_1_4_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_4_3_1()); 
            }
            // InternalFiacre.g:13857:2: ( rule__PatternStatement__ValuesAssignment_1_4_3_1 )
            // InternalFiacre.g:13857:3: rule__PatternStatement__ValuesAssignment_1_4_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ValuesAssignment_1_4_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesAssignment_1_4_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_4_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5__0"
    // InternalFiacre.g:13866:1: rule__PatternStatement__Group_1_5__0 : rule__PatternStatement__Group_1_5__0__Impl rule__PatternStatement__Group_1_5__1 ;
    public final void rule__PatternStatement__Group_1_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13870:1: ( rule__PatternStatement__Group_1_5__0__Impl rule__PatternStatement__Group_1_5__1 )
            // InternalFiacre.g:13871:2: rule__PatternStatement__Group_1_5__0__Impl rule__PatternStatement__Group_1_5__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__0"


    // $ANTLR start "rule__PatternStatement__Group_1_5__0__Impl"
    // InternalFiacre.g:13878:1: rule__PatternStatement__Group_1_5__0__Impl : ( '?' ) ;
    public final void rule__PatternStatement__Group_1_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13882:1: ( ( '?' ) )
            // InternalFiacre.g:13883:1: ( '?' )
            {
            // InternalFiacre.g:13883:1: ( '?' )
            // InternalFiacre.g:13884:2: '?'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getQuestionMarkKeyword_1_5_0()); 
            }
            match(input,60,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getQuestionMarkKeyword_1_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5__1"
    // InternalFiacre.g:13893:1: rule__PatternStatement__Group_1_5__1 : rule__PatternStatement__Group_1_5__1__Impl rule__PatternStatement__Group_1_5__2 ;
    public final void rule__PatternStatement__Group_1_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13897:1: ( rule__PatternStatement__Group_1_5__1__Impl rule__PatternStatement__Group_1_5__2 )
            // InternalFiacre.g:13898:2: rule__PatternStatement__Group_1_5__1__Impl rule__PatternStatement__Group_1_5__2
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__1"


    // $ANTLR start "rule__PatternStatement__Group_1_5__1__Impl"
    // InternalFiacre.g:13905:1: rule__PatternStatement__Group_1_5__1__Impl : ( () ) ;
    public final void rule__PatternStatement__Group_1_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13909:1: ( ( () ) )
            // InternalFiacre.g:13910:1: ( () )
            {
            // InternalFiacre.g:13910:1: ( () )
            // InternalFiacre.g:13911:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getReceiveStatementPortAction_1_5_1()); 
            }
            // InternalFiacre.g:13912:2: ()
            // InternalFiacre.g:13912:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getReceiveStatementPortAction_1_5_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5__2"
    // InternalFiacre.g:13920:1: rule__PatternStatement__Group_1_5__2 : rule__PatternStatement__Group_1_5__2__Impl rule__PatternStatement__Group_1_5__3 ;
    public final void rule__PatternStatement__Group_1_5__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13924:1: ( rule__PatternStatement__Group_1_5__2__Impl rule__PatternStatement__Group_1_5__3 )
            // InternalFiacre.g:13925:2: rule__PatternStatement__Group_1_5__2__Impl rule__PatternStatement__Group_1_5__3
            {
            pushFollow(FollowSets000.FOLLOW_67);
            rule__PatternStatement__Group_1_5__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__2"


    // $ANTLR start "rule__PatternStatement__Group_1_5__2__Impl"
    // InternalFiacre.g:13932:1: rule__PatternStatement__Group_1_5__2__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_5_2 ) ) ;
    public final void rule__PatternStatement__Group_1_5__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13936:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_5_2 ) ) )
            // InternalFiacre.g:13937:1: ( ( rule__PatternStatement__PatternsAssignment_1_5_2 ) )
            {
            // InternalFiacre.g:13937:1: ( ( rule__PatternStatement__PatternsAssignment_1_5_2 ) )
            // InternalFiacre.g:13938:2: ( rule__PatternStatement__PatternsAssignment_1_5_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_5_2()); 
            }
            // InternalFiacre.g:13939:2: ( rule__PatternStatement__PatternsAssignment_1_5_2 )
            // InternalFiacre.g:13939:3: rule__PatternStatement__PatternsAssignment_1_5_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_5_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_5_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__2__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5__3"
    // InternalFiacre.g:13947:1: rule__PatternStatement__Group_1_5__3 : rule__PatternStatement__Group_1_5__3__Impl rule__PatternStatement__Group_1_5__4 ;
    public final void rule__PatternStatement__Group_1_5__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13951:1: ( rule__PatternStatement__Group_1_5__3__Impl rule__PatternStatement__Group_1_5__4 )
            // InternalFiacre.g:13952:2: rule__PatternStatement__Group_1_5__3__Impl rule__PatternStatement__Group_1_5__4
            {
            pushFollow(FollowSets000.FOLLOW_67);
            rule__PatternStatement__Group_1_5__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__3"


    // $ANTLR start "rule__PatternStatement__Group_1_5__3__Impl"
    // InternalFiacre.g:13959:1: rule__PatternStatement__Group_1_5__3__Impl : ( ( rule__PatternStatement__Group_1_5_3__0 )* ) ;
    public final void rule__PatternStatement__Group_1_5__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13963:1: ( ( ( rule__PatternStatement__Group_1_5_3__0 )* ) )
            // InternalFiacre.g:13964:1: ( ( rule__PatternStatement__Group_1_5_3__0 )* )
            {
            // InternalFiacre.g:13964:1: ( ( rule__PatternStatement__Group_1_5_3__0 )* )
            // InternalFiacre.g:13965:2: ( rule__PatternStatement__Group_1_5_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_5_3()); 
            }
            // InternalFiacre.g:13966:2: ( rule__PatternStatement__Group_1_5_3__0 )*
            loop130:
            do {
                int alt130=2;
                int LA130_0 = input.LA(1);

                if ( (LA130_0==24) ) {
                    alt130=1;
                }


                switch (alt130) {
            	case 1 :
            	    // InternalFiacre.g:13966:3: rule__PatternStatement__Group_1_5_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PatternStatement__Group_1_5_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop130;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_5_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__3__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5__4"
    // InternalFiacre.g:13974:1: rule__PatternStatement__Group_1_5__4 : rule__PatternStatement__Group_1_5__4__Impl ;
    public final void rule__PatternStatement__Group_1_5__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13978:1: ( rule__PatternStatement__Group_1_5__4__Impl )
            // InternalFiacre.g:13979:2: rule__PatternStatement__Group_1_5__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__4"


    // $ANTLR start "rule__PatternStatement__Group_1_5__4__Impl"
    // InternalFiacre.g:13985:1: rule__PatternStatement__Group_1_5__4__Impl : ( ( rule__PatternStatement__Group_1_5_4__0 )? ) ;
    public final void rule__PatternStatement__Group_1_5__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:13989:1: ( ( ( rule__PatternStatement__Group_1_5_4__0 )? ) )
            // InternalFiacre.g:13990:1: ( ( rule__PatternStatement__Group_1_5_4__0 )? )
            {
            // InternalFiacre.g:13990:1: ( ( rule__PatternStatement__Group_1_5_4__0 )? )
            // InternalFiacre.g:13991:2: ( rule__PatternStatement__Group_1_5_4__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getGroup_1_5_4()); 
            }
            // InternalFiacre.g:13992:2: ( rule__PatternStatement__Group_1_5_4__0 )?
            int alt131=2;
            int LA131_0 = input.LA(1);

            if ( (LA131_0==58) ) {
                alt131=1;
            }
            switch (alt131) {
                case 1 :
                    // InternalFiacre.g:13992:3: rule__PatternStatement__Group_1_5_4__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PatternStatement__Group_1_5_4__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getGroup_1_5_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5__4__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5_3__0"
    // InternalFiacre.g:14001:1: rule__PatternStatement__Group_1_5_3__0 : rule__PatternStatement__Group_1_5_3__0__Impl rule__PatternStatement__Group_1_5_3__1 ;
    public final void rule__PatternStatement__Group_1_5_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14005:1: ( rule__PatternStatement__Group_1_5_3__0__Impl rule__PatternStatement__Group_1_5_3__1 )
            // InternalFiacre.g:14006:2: rule__PatternStatement__Group_1_5_3__0__Impl rule__PatternStatement__Group_1_5_3__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__PatternStatement__Group_1_5_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_3__0"


    // $ANTLR start "rule__PatternStatement__Group_1_5_3__0__Impl"
    // InternalFiacre.g:14013:1: rule__PatternStatement__Group_1_5_3__0__Impl : ( ',' ) ;
    public final void rule__PatternStatement__Group_1_5_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14017:1: ( ( ',' ) )
            // InternalFiacre.g:14018:1: ( ',' )
            {
            // InternalFiacre.g:14018:1: ( ',' )
            // InternalFiacre.g:14019:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_5_3_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getCommaKeyword_1_5_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_3__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5_3__1"
    // InternalFiacre.g:14028:1: rule__PatternStatement__Group_1_5_3__1 : rule__PatternStatement__Group_1_5_3__1__Impl ;
    public final void rule__PatternStatement__Group_1_5_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14032:1: ( rule__PatternStatement__Group_1_5_3__1__Impl )
            // InternalFiacre.g:14033:2: rule__PatternStatement__Group_1_5_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_3__1"


    // $ANTLR start "rule__PatternStatement__Group_1_5_3__1__Impl"
    // InternalFiacre.g:14039:1: rule__PatternStatement__Group_1_5_3__1__Impl : ( ( rule__PatternStatement__PatternsAssignment_1_5_3_1 ) ) ;
    public final void rule__PatternStatement__Group_1_5_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14043:1: ( ( ( rule__PatternStatement__PatternsAssignment_1_5_3_1 ) ) )
            // InternalFiacre.g:14044:1: ( ( rule__PatternStatement__PatternsAssignment_1_5_3_1 ) )
            {
            // InternalFiacre.g:14044:1: ( ( rule__PatternStatement__PatternsAssignment_1_5_3_1 ) )
            // InternalFiacre.g:14045:2: ( rule__PatternStatement__PatternsAssignment_1_5_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_5_3_1()); 
            }
            // InternalFiacre.g:14046:2: ( rule__PatternStatement__PatternsAssignment_1_5_3_1 )
            // InternalFiacre.g:14046:3: rule__PatternStatement__PatternsAssignment_1_5_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__PatternsAssignment_1_5_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsAssignment_1_5_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_3__1__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5_4__0"
    // InternalFiacre.g:14055:1: rule__PatternStatement__Group_1_5_4__0 : rule__PatternStatement__Group_1_5_4__0__Impl rule__PatternStatement__Group_1_5_4__1 ;
    public final void rule__PatternStatement__Group_1_5_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14059:1: ( rule__PatternStatement__Group_1_5_4__0__Impl rule__PatternStatement__Group_1_5_4__1 )
            // InternalFiacre.g:14060:2: rule__PatternStatement__Group_1_5_4__0__Impl rule__PatternStatement__Group_1_5_4__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PatternStatement__Group_1_5_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_4__0"


    // $ANTLR start "rule__PatternStatement__Group_1_5_4__0__Impl"
    // InternalFiacre.g:14067:1: rule__PatternStatement__Group_1_5_4__0__Impl : ( 'where' ) ;
    public final void rule__PatternStatement__Group_1_5_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14071:1: ( ( 'where' ) )
            // InternalFiacre.g:14072:1: ( 'where' )
            {
            // InternalFiacre.g:14072:1: ( 'where' )
            // InternalFiacre.g:14073:2: 'where'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_5_4_0()); 
            }
            match(input,58,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getWhereKeyword_1_5_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_4__0__Impl"


    // $ANTLR start "rule__PatternStatement__Group_1_5_4__1"
    // InternalFiacre.g:14082:1: rule__PatternStatement__Group_1_5_4__1 : rule__PatternStatement__Group_1_5_4__1__Impl ;
    public final void rule__PatternStatement__Group_1_5_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14086:1: ( rule__PatternStatement__Group_1_5_4__1__Impl )
            // InternalFiacre.g:14087:2: rule__PatternStatement__Group_1_5_4__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__Group_1_5_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_4__1"


    // $ANTLR start "rule__PatternStatement__Group_1_5_4__1__Impl"
    // InternalFiacre.g:14093:1: rule__PatternStatement__Group_1_5_4__1__Impl : ( ( rule__PatternStatement__ExpAssignment_1_5_4_1 ) ) ;
    public final void rule__PatternStatement__Group_1_5_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14097:1: ( ( ( rule__PatternStatement__ExpAssignment_1_5_4_1 ) ) )
            // InternalFiacre.g:14098:1: ( ( rule__PatternStatement__ExpAssignment_1_5_4_1 ) )
            {
            // InternalFiacre.g:14098:1: ( ( rule__PatternStatement__ExpAssignment_1_5_4_1 ) )
            // InternalFiacre.g:14099:2: ( rule__PatternStatement__ExpAssignment_1_5_4_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpAssignment_1_5_4_1()); 
            }
            // InternalFiacre.g:14100:2: ( rule__PatternStatement__ExpAssignment_1_5_4_1 )
            // InternalFiacre.g:14100:3: rule__PatternStatement__ExpAssignment_1_5_4_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PatternStatement__ExpAssignment_1_5_4_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpAssignment_1_5_4_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__Group_1_5_4__1__Impl"


    // $ANTLR start "rule__Pattern__Group_3__0"
    // InternalFiacre.g:14109:1: rule__Pattern__Group_3__0 : rule__Pattern__Group_3__0__Impl rule__Pattern__Group_3__1 ;
    public final void rule__Pattern__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14113:1: ( rule__Pattern__Group_3__0__Impl rule__Pattern__Group_3__1 )
            // InternalFiacre.g:14114:2: rule__Pattern__Group_3__0__Impl rule__Pattern__Group_3__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__Pattern__Group_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Pattern__Group_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__0"


    // $ANTLR start "rule__Pattern__Group_3__0__Impl"
    // InternalFiacre.g:14121:1: rule__Pattern__Group_3__0__Impl : ( '(' ) ;
    public final void rule__Pattern__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14125:1: ( ( '(' ) )
            // InternalFiacre.g:14126:1: ( '(' )
            {
            // InternalFiacre.g:14126:1: ( '(' )
            // InternalFiacre.g:14127:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternAccess().getLeftParenthesisKeyword_3_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternAccess().getLeftParenthesisKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__0__Impl"


    // $ANTLR start "rule__Pattern__Group_3__1"
    // InternalFiacre.g:14136:1: rule__Pattern__Group_3__1 : rule__Pattern__Group_3__1__Impl rule__Pattern__Group_3__2 ;
    public final void rule__Pattern__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14140:1: ( rule__Pattern__Group_3__1__Impl rule__Pattern__Group_3__2 )
            // InternalFiacre.g:14141:2: rule__Pattern__Group_3__1__Impl rule__Pattern__Group_3__2
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__Pattern__Group_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Pattern__Group_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__1"


    // $ANTLR start "rule__Pattern__Group_3__1__Impl"
    // InternalFiacre.g:14148:1: rule__Pattern__Group_3__1__Impl : ( rulePattern ) ;
    public final void rule__Pattern__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14152:1: ( ( rulePattern ) )
            // InternalFiacre.g:14153:1: ( rulePattern )
            {
            // InternalFiacre.g:14153:1: ( rulePattern )
            // InternalFiacre.g:14154:2: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternAccess().getPatternParserRuleCall_3_1()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternAccess().getPatternParserRuleCall_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__1__Impl"


    // $ANTLR start "rule__Pattern__Group_3__2"
    // InternalFiacre.g:14163:1: rule__Pattern__Group_3__2 : rule__Pattern__Group_3__2__Impl ;
    public final void rule__Pattern__Group_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14167:1: ( rule__Pattern__Group_3__2__Impl )
            // InternalFiacre.g:14168:2: rule__Pattern__Group_3__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Pattern__Group_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__2"


    // $ANTLR start "rule__Pattern__Group_3__2__Impl"
    // InternalFiacre.g:14174:1: rule__Pattern__Group_3__2__Impl : ( ')' ) ;
    public final void rule__Pattern__Group_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14178:1: ( ( ')' ) )
            // InternalFiacre.g:14179:1: ( ')' )
            {
            // InternalFiacre.g:14179:1: ( ')' )
            // InternalFiacre.g:14180:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternAccess().getRightParenthesisKeyword_3_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternAccess().getRightParenthesisKeyword_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Pattern__Group_3__2__Impl"


    // $ANTLR start "rule__AnyPattern__Group__0"
    // InternalFiacre.g:14190:1: rule__AnyPattern__Group__0 : rule__AnyPattern__Group__0__Impl rule__AnyPattern__Group__1 ;
    public final void rule__AnyPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14194:1: ( rule__AnyPattern__Group__0__Impl rule__AnyPattern__Group__1 )
            // InternalFiacre.g:14195:2: rule__AnyPattern__Group__0__Impl rule__AnyPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_65);
            rule__AnyPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AnyPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AnyPattern__Group__0"


    // $ANTLR start "rule__AnyPattern__Group__0__Impl"
    // InternalFiacre.g:14202:1: rule__AnyPattern__Group__0__Impl : ( () ) ;
    public final void rule__AnyPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14206:1: ( ( () ) )
            // InternalFiacre.g:14207:1: ( () )
            {
            // InternalFiacre.g:14207:1: ( () )
            // InternalFiacre.g:14208:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAnyPatternAccess().getAnyPatternAction_0()); 
            }
            // InternalFiacre.g:14209:2: ()
            // InternalFiacre.g:14209:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAnyPatternAccess().getAnyPatternAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AnyPattern__Group__0__Impl"


    // $ANTLR start "rule__AnyPattern__Group__1"
    // InternalFiacre.g:14217:1: rule__AnyPattern__Group__1 : rule__AnyPattern__Group__1__Impl ;
    public final void rule__AnyPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14221:1: ( rule__AnyPattern__Group__1__Impl )
            // InternalFiacre.g:14222:2: rule__AnyPattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AnyPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AnyPattern__Group__1"


    // $ANTLR start "rule__AnyPattern__Group__1__Impl"
    // InternalFiacre.g:14228:1: rule__AnyPattern__Group__1__Impl : ( 'any' ) ;
    public final void rule__AnyPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14232:1: ( ( 'any' ) )
            // InternalFiacre.g:14233:1: ( 'any' )
            {
            // InternalFiacre.g:14233:1: ( 'any' )
            // InternalFiacre.g:14234:2: 'any'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAnyPatternAccess().getAnyKeyword_1()); 
            }
            match(input,57,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAnyPatternAccess().getAnyKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AnyPattern__Group__1__Impl"


    // $ANTLR start "rule__IntegerPattern__Group__0"
    // InternalFiacre.g:14244:1: rule__IntegerPattern__Group__0 : rule__IntegerPattern__Group__0__Impl rule__IntegerPattern__Group__1 ;
    public final void rule__IntegerPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14248:1: ( rule__IntegerPattern__Group__0__Impl rule__IntegerPattern__Group__1 )
            // InternalFiacre.g:14249:2: rule__IntegerPattern__Group__0__Impl rule__IntegerPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_69);
            rule__IntegerPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IntegerPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__Group__0"


    // $ANTLR start "rule__IntegerPattern__Group__0__Impl"
    // InternalFiacre.g:14256:1: rule__IntegerPattern__Group__0__Impl : ( ( rule__IntegerPattern__Alternatives_0 ) ) ;
    public final void rule__IntegerPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14260:1: ( ( ( rule__IntegerPattern__Alternatives_0 ) ) )
            // InternalFiacre.g:14261:1: ( ( rule__IntegerPattern__Alternatives_0 ) )
            {
            // InternalFiacre.g:14261:1: ( ( rule__IntegerPattern__Alternatives_0 ) )
            // InternalFiacre.g:14262:2: ( rule__IntegerPattern__Alternatives_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:14263:2: ( rule__IntegerPattern__Alternatives_0 )
            // InternalFiacre.g:14263:3: rule__IntegerPattern__Alternatives_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IntegerPattern__Alternatives_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__Group__0__Impl"


    // $ANTLR start "rule__IntegerPattern__Group__1"
    // InternalFiacre.g:14271:1: rule__IntegerPattern__Group__1 : rule__IntegerPattern__Group__1__Impl ;
    public final void rule__IntegerPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14275:1: ( rule__IntegerPattern__Group__1__Impl )
            // InternalFiacre.g:14276:2: rule__IntegerPattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IntegerPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__Group__1"


    // $ANTLR start "rule__IntegerPattern__Group__1__Impl"
    // InternalFiacre.g:14282:1: rule__IntegerPattern__Group__1__Impl : ( ( rule__IntegerPattern__ValueAssignment_1 ) ) ;
    public final void rule__IntegerPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14286:1: ( ( ( rule__IntegerPattern__ValueAssignment_1 ) ) )
            // InternalFiacre.g:14287:1: ( ( rule__IntegerPattern__ValueAssignment_1 ) )
            {
            // InternalFiacre.g:14287:1: ( ( rule__IntegerPattern__ValueAssignment_1 ) )
            // InternalFiacre.g:14288:2: ( rule__IntegerPattern__ValueAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getValueAssignment_1()); 
            }
            // InternalFiacre.g:14289:2: ( rule__IntegerPattern__ValueAssignment_1 )
            // InternalFiacre.g:14289:3: rule__IntegerPattern__ValueAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IntegerPattern__ValueAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getValueAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__Group__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0__0"
    // InternalFiacre.g:14298:1: rule__IdentifierPattern__Group_0__0 : rule__IdentifierPattern__Group_0__0__Impl rule__IdentifierPattern__Group_0__1 ;
    public final void rule__IdentifierPattern__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14302:1: ( rule__IdentifierPattern__Group_0__0__Impl rule__IdentifierPattern__Group_0__1 )
            // InternalFiacre.g:14303:2: rule__IdentifierPattern__Group_0__0__Impl rule__IdentifierPattern__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierPattern__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__0"


    // $ANTLR start "rule__IdentifierPattern__Group_0__0__Impl"
    // InternalFiacre.g:14310:1: rule__IdentifierPattern__Group_0__0__Impl : ( () ) ;
    public final void rule__IdentifierPattern__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14314:1: ( ( () ) )
            // InternalFiacre.g:14315:1: ( () )
            {
            // InternalFiacre.g:14315:1: ( () )
            // InternalFiacre.g:14316:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getConstructorPatternAction_0_0()); 
            }
            // InternalFiacre.g:14317:2: ()
            // InternalFiacre.g:14317:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getConstructorPatternAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0__1"
    // InternalFiacre.g:14325:1: rule__IdentifierPattern__Group_0__1 : rule__IdentifierPattern__Group_0__1__Impl rule__IdentifierPattern__Group_0__2 ;
    public final void rule__IdentifierPattern__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14329:1: ( rule__IdentifierPattern__Group_0__1__Impl rule__IdentifierPattern__Group_0__2 )
            // InternalFiacre.g:14330:2: rule__IdentifierPattern__Group_0__1__Impl rule__IdentifierPattern__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_13);
            rule__IdentifierPattern__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__1"


    // $ANTLR start "rule__IdentifierPattern__Group_0__1__Impl"
    // InternalFiacre.g:14337:1: rule__IdentifierPattern__Group_0__1__Impl : ( ( rule__IdentifierPattern__DeclarationAssignment_0_1 ) ) ;
    public final void rule__IdentifierPattern__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14341:1: ( ( ( rule__IdentifierPattern__DeclarationAssignment_0_1 ) ) )
            // InternalFiacre.g:14342:1: ( ( rule__IdentifierPattern__DeclarationAssignment_0_1 ) )
            {
            // InternalFiacre.g:14342:1: ( ( rule__IdentifierPattern__DeclarationAssignment_0_1 ) )
            // InternalFiacre.g:14343:2: ( rule__IdentifierPattern__DeclarationAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationAssignment_0_1()); 
            }
            // InternalFiacre.g:14344:2: ( rule__IdentifierPattern__DeclarationAssignment_0_1 )
            // InternalFiacre.g:14344:3: rule__IdentifierPattern__DeclarationAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__DeclarationAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0__2"
    // InternalFiacre.g:14352:1: rule__IdentifierPattern__Group_0__2 : rule__IdentifierPattern__Group_0__2__Impl rule__IdentifierPattern__Group_0__3 ;
    public final void rule__IdentifierPattern__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14356:1: ( rule__IdentifierPattern__Group_0__2__Impl rule__IdentifierPattern__Group_0__3 )
            // InternalFiacre.g:14357:2: rule__IdentifierPattern__Group_0__2__Impl rule__IdentifierPattern__Group_0__3
            {
            pushFollow(FollowSets000.FOLLOW_70);
            rule__IdentifierPattern__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__2"


    // $ANTLR start "rule__IdentifierPattern__Group_0__2__Impl"
    // InternalFiacre.g:14364:1: rule__IdentifierPattern__Group_0__2__Impl : ( '(' ) ;
    public final void rule__IdentifierPattern__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14368:1: ( ( '(' ) )
            // InternalFiacre.g:14369:1: ( '(' )
            {
            // InternalFiacre.g:14369:1: ( '(' )
            // InternalFiacre.g:14370:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getLeftParenthesisKeyword_0_2()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getLeftParenthesisKeyword_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__2__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0__3"
    // InternalFiacre.g:14379:1: rule__IdentifierPattern__Group_0__3 : rule__IdentifierPattern__Group_0__3__Impl rule__IdentifierPattern__Group_0__4 ;
    public final void rule__IdentifierPattern__Group_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14383:1: ( rule__IdentifierPattern__Group_0__3__Impl rule__IdentifierPattern__Group_0__4 )
            // InternalFiacre.g:14384:2: rule__IdentifierPattern__Group_0__3__Impl rule__IdentifierPattern__Group_0__4
            {
            pushFollow(FollowSets000.FOLLOW_70);
            rule__IdentifierPattern__Group_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__3"


    // $ANTLR start "rule__IdentifierPattern__Group_0__3__Impl"
    // InternalFiacre.g:14391:1: rule__IdentifierPattern__Group_0__3__Impl : ( ( rule__IdentifierPattern__Group_0_3__0 )? ) ;
    public final void rule__IdentifierPattern__Group_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14395:1: ( ( ( rule__IdentifierPattern__Group_0_3__0 )? ) )
            // InternalFiacre.g:14396:1: ( ( rule__IdentifierPattern__Group_0_3__0 )? )
            {
            // InternalFiacre.g:14396:1: ( ( rule__IdentifierPattern__Group_0_3__0 )? )
            // InternalFiacre.g:14397:2: ( rule__IdentifierPattern__Group_0_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getGroup_0_3()); 
            }
            // InternalFiacre.g:14398:2: ( rule__IdentifierPattern__Group_0_3__0 )?
            int alt132=2;
            int LA132_0 = input.LA(1);

            if ( (LA132_0==RULE_ID||LA132_0==RULE_INT||LA132_0==14||LA132_0==22||LA132_0==57||LA132_0==87||(LA132_0>=106 && LA132_0<=107)) ) {
                alt132=1;
            }
            switch (alt132) {
                case 1 :
                    // InternalFiacre.g:14398:3: rule__IdentifierPattern__Group_0_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierPattern__Group_0_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getGroup_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__3__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0__4"
    // InternalFiacre.g:14406:1: rule__IdentifierPattern__Group_0__4 : rule__IdentifierPattern__Group_0__4__Impl ;
    public final void rule__IdentifierPattern__Group_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14410:1: ( rule__IdentifierPattern__Group_0__4__Impl )
            // InternalFiacre.g:14411:2: rule__IdentifierPattern__Group_0__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__4"


    // $ANTLR start "rule__IdentifierPattern__Group_0__4__Impl"
    // InternalFiacre.g:14417:1: rule__IdentifierPattern__Group_0__4__Impl : ( ')' ) ;
    public final void rule__IdentifierPattern__Group_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14421:1: ( ( ')' ) )
            // InternalFiacre.g:14422:1: ( ')' )
            {
            // InternalFiacre.g:14422:1: ( ')' )
            // InternalFiacre.g:14423:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getRightParenthesisKeyword_0_4()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getRightParenthesisKeyword_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0__4__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3__0"
    // InternalFiacre.g:14433:1: rule__IdentifierPattern__Group_0_3__0 : rule__IdentifierPattern__Group_0_3__0__Impl rule__IdentifierPattern__Group_0_3__1 ;
    public final void rule__IdentifierPattern__Group_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14437:1: ( rule__IdentifierPattern__Group_0_3__0__Impl rule__IdentifierPattern__Group_0_3__1 )
            // InternalFiacre.g:14438:2: rule__IdentifierPattern__Group_0_3__0__Impl rule__IdentifierPattern__Group_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__IdentifierPattern__Group_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3__0"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3__0__Impl"
    // InternalFiacre.g:14445:1: rule__IdentifierPattern__Group_0_3__0__Impl : ( ( rule__IdentifierPattern__ParametersAssignment_0_3_0 ) ) ;
    public final void rule__IdentifierPattern__Group_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14449:1: ( ( ( rule__IdentifierPattern__ParametersAssignment_0_3_0 ) ) )
            // InternalFiacre.g:14450:1: ( ( rule__IdentifierPattern__ParametersAssignment_0_3_0 ) )
            {
            // InternalFiacre.g:14450:1: ( ( rule__IdentifierPattern__ParametersAssignment_0_3_0 ) )
            // InternalFiacre.g:14451:2: ( rule__IdentifierPattern__ParametersAssignment_0_3_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getParametersAssignment_0_3_0()); 
            }
            // InternalFiacre.g:14452:2: ( rule__IdentifierPattern__ParametersAssignment_0_3_0 )
            // InternalFiacre.g:14452:3: rule__IdentifierPattern__ParametersAssignment_0_3_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__ParametersAssignment_0_3_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getParametersAssignment_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3__1"
    // InternalFiacre.g:14460:1: rule__IdentifierPattern__Group_0_3__1 : rule__IdentifierPattern__Group_0_3__1__Impl ;
    public final void rule__IdentifierPattern__Group_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14464:1: ( rule__IdentifierPattern__Group_0_3__1__Impl )
            // InternalFiacre.g:14465:2: rule__IdentifierPattern__Group_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3__1"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3__1__Impl"
    // InternalFiacre.g:14471:1: rule__IdentifierPattern__Group_0_3__1__Impl : ( ( rule__IdentifierPattern__Group_0_3_1__0 )* ) ;
    public final void rule__IdentifierPattern__Group_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14475:1: ( ( ( rule__IdentifierPattern__Group_0_3_1__0 )* ) )
            // InternalFiacre.g:14476:1: ( ( rule__IdentifierPattern__Group_0_3_1__0 )* )
            {
            // InternalFiacre.g:14476:1: ( ( rule__IdentifierPattern__Group_0_3_1__0 )* )
            // InternalFiacre.g:14477:2: ( rule__IdentifierPattern__Group_0_3_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getGroup_0_3_1()); 
            }
            // InternalFiacre.g:14478:2: ( rule__IdentifierPattern__Group_0_3_1__0 )*
            loop133:
            do {
                int alt133=2;
                int LA133_0 = input.LA(1);

                if ( (LA133_0==24) ) {
                    alt133=1;
                }


                switch (alt133) {
            	case 1 :
            	    // InternalFiacre.g:14478:3: rule__IdentifierPattern__Group_0_3_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__IdentifierPattern__Group_0_3_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop133;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getGroup_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3_1__0"
    // InternalFiacre.g:14487:1: rule__IdentifierPattern__Group_0_3_1__0 : rule__IdentifierPattern__Group_0_3_1__0__Impl rule__IdentifierPattern__Group_0_3_1__1 ;
    public final void rule__IdentifierPattern__Group_0_3_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14491:1: ( rule__IdentifierPattern__Group_0_3_1__0__Impl rule__IdentifierPattern__Group_0_3_1__1 )
            // InternalFiacre.g:14492:2: rule__IdentifierPattern__Group_0_3_1__0__Impl rule__IdentifierPattern__Group_0_3_1__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__IdentifierPattern__Group_0_3_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0_3_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3_1__0"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3_1__0__Impl"
    // InternalFiacre.g:14499:1: rule__IdentifierPattern__Group_0_3_1__0__Impl : ( ',' ) ;
    public final void rule__IdentifierPattern__Group_0_3_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14503:1: ( ( ',' ) )
            // InternalFiacre.g:14504:1: ( ',' )
            {
            // InternalFiacre.g:14504:1: ( ',' )
            // InternalFiacre.g:14505:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getCommaKeyword_0_3_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getCommaKeyword_0_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3_1__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3_1__1"
    // InternalFiacre.g:14514:1: rule__IdentifierPattern__Group_0_3_1__1 : rule__IdentifierPattern__Group_0_3_1__1__Impl ;
    public final void rule__IdentifierPattern__Group_0_3_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14518:1: ( rule__IdentifierPattern__Group_0_3_1__1__Impl )
            // InternalFiacre.g:14519:2: rule__IdentifierPattern__Group_0_3_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_0_3_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3_1__1"


    // $ANTLR start "rule__IdentifierPattern__Group_0_3_1__1__Impl"
    // InternalFiacre.g:14525:1: rule__IdentifierPattern__Group_0_3_1__1__Impl : ( ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 ) ) ;
    public final void rule__IdentifierPattern__Group_0_3_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14529:1: ( ( ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 ) ) )
            // InternalFiacre.g:14530:1: ( ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 ) )
            {
            // InternalFiacre.g:14530:1: ( ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 ) )
            // InternalFiacre.g:14531:2: ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getParametersAssignment_0_3_1_1()); 
            }
            // InternalFiacre.g:14532:2: ( rule__IdentifierPattern__ParametersAssignment_0_3_1_1 )
            // InternalFiacre.g:14532:3: rule__IdentifierPattern__ParametersAssignment_0_3_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__ParametersAssignment_0_3_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getParametersAssignment_0_3_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_0_3_1__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1__0"
    // InternalFiacre.g:14541:1: rule__IdentifierPattern__Group_1__0 : rule__IdentifierPattern__Group_1__0__Impl rule__IdentifierPattern__Group_1__1 ;
    public final void rule__IdentifierPattern__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14545:1: ( rule__IdentifierPattern__Group_1__0__Impl rule__IdentifierPattern__Group_1__1 )
            // InternalFiacre.g:14546:2: rule__IdentifierPattern__Group_1__0__Impl rule__IdentifierPattern__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_71);
            rule__IdentifierPattern__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1__0"


    // $ANTLR start "rule__IdentifierPattern__Group_1__0__Impl"
    // InternalFiacre.g:14553:1: rule__IdentifierPattern__Group_1__0__Impl : ( ( rule__IdentifierPattern__DeclarationAssignment_1_0 ) ) ;
    public final void rule__IdentifierPattern__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14557:1: ( ( ( rule__IdentifierPattern__DeclarationAssignment_1_0 ) ) )
            // InternalFiacre.g:14558:1: ( ( rule__IdentifierPattern__DeclarationAssignment_1_0 ) )
            {
            // InternalFiacre.g:14558:1: ( ( rule__IdentifierPattern__DeclarationAssignment_1_0 ) )
            // InternalFiacre.g:14559:2: ( rule__IdentifierPattern__DeclarationAssignment_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationAssignment_1_0()); 
            }
            // InternalFiacre.g:14560:2: ( rule__IdentifierPattern__DeclarationAssignment_1_0 )
            // InternalFiacre.g:14560:3: rule__IdentifierPattern__DeclarationAssignment_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__DeclarationAssignment_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationAssignment_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1__1"
    // InternalFiacre.g:14568:1: rule__IdentifierPattern__Group_1__1 : rule__IdentifierPattern__Group_1__1__Impl ;
    public final void rule__IdentifierPattern__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14572:1: ( rule__IdentifierPattern__Group_1__1__Impl )
            // InternalFiacre.g:14573:2: rule__IdentifierPattern__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1__1"


    // $ANTLR start "rule__IdentifierPattern__Group_1__1__Impl"
    // InternalFiacre.g:14579:1: rule__IdentifierPattern__Group_1__1__Impl : ( ( rule__IdentifierPattern__Alternatives_1_1 )* ) ;
    public final void rule__IdentifierPattern__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14583:1: ( ( ( rule__IdentifierPattern__Alternatives_1_1 )* ) )
            // InternalFiacre.g:14584:1: ( ( rule__IdentifierPattern__Alternatives_1_1 )* )
            {
            // InternalFiacre.g:14584:1: ( ( rule__IdentifierPattern__Alternatives_1_1 )* )
            // InternalFiacre.g:14585:2: ( rule__IdentifierPattern__Alternatives_1_1 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getAlternatives_1_1()); 
            }
            // InternalFiacre.g:14586:2: ( rule__IdentifierPattern__Alternatives_1_1 )*
            loop134:
            do {
                int alt134=2;
                int LA134_0 = input.LA(1);

                if ( (LA134_0==42||LA134_0==61) ) {
                    alt134=1;
                }


                switch (alt134) {
            	case 1 :
            	    // InternalFiacre.g:14586:3: rule__IdentifierPattern__Alternatives_1_1
            	    {
            	    pushFollow(FollowSets000.FOLLOW_72);
            	    rule__IdentifierPattern__Alternatives_1_1();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop134;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getAlternatives_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__0"
    // InternalFiacre.g:14595:1: rule__IdentifierPattern__Group_1_1_0__0 : rule__IdentifierPattern__Group_1_1_0__0__Impl rule__IdentifierPattern__Group_1_1_0__1 ;
    public final void rule__IdentifierPattern__Group_1_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14599:1: ( rule__IdentifierPattern__Group_1_1_0__0__Impl rule__IdentifierPattern__Group_1_1_0__1 )
            // InternalFiacre.g:14600:2: rule__IdentifierPattern__Group_1_1_0__0__Impl rule__IdentifierPattern__Group_1_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierPattern__Group_1_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__0"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__0__Impl"
    // InternalFiacre.g:14607:1: rule__IdentifierPattern__Group_1_1_0__0__Impl : ( '[' ) ;
    public final void rule__IdentifierPattern__Group_1_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14611:1: ( ( '[' ) )
            // InternalFiacre.g:14612:1: ( '[' )
            {
            // InternalFiacre.g:14612:1: ( '[' )
            // InternalFiacre.g:14613:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getLeftSquareBracketKeyword_1_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getLeftSquareBracketKeyword_1_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__1"
    // InternalFiacre.g:14622:1: rule__IdentifierPattern__Group_1_1_0__1 : rule__IdentifierPattern__Group_1_1_0__1__Impl rule__IdentifierPattern__Group_1_1_0__2 ;
    public final void rule__IdentifierPattern__Group_1_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14626:1: ( rule__IdentifierPattern__Group_1_1_0__1__Impl rule__IdentifierPattern__Group_1_1_0__2 )
            // InternalFiacre.g:14627:2: rule__IdentifierPattern__Group_1_1_0__1__Impl rule__IdentifierPattern__Group_1_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierPattern__Group_1_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__1"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__1__Impl"
    // InternalFiacre.g:14634:1: rule__IdentifierPattern__Group_1_1_0__1__Impl : ( () ) ;
    public final void rule__IdentifierPattern__Group_1_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14638:1: ( ( () ) )
            // InternalFiacre.g:14639:1: ( () )
            {
            // InternalFiacre.g:14639:1: ( () )
            // InternalFiacre.g:14640:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getArrayAccessPatternSourceAction_1_1_0_1()); 
            }
            // InternalFiacre.g:14641:2: ()
            // InternalFiacre.g:14641:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getArrayAccessPatternSourceAction_1_1_0_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__2"
    // InternalFiacre.g:14649:1: rule__IdentifierPattern__Group_1_1_0__2 : rule__IdentifierPattern__Group_1_1_0__2__Impl rule__IdentifierPattern__Group_1_1_0__3 ;
    public final void rule__IdentifierPattern__Group_1_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14653:1: ( rule__IdentifierPattern__Group_1_1_0__2__Impl rule__IdentifierPattern__Group_1_1_0__3 )
            // InternalFiacre.g:14654:2: rule__IdentifierPattern__Group_1_1_0__2__Impl rule__IdentifierPattern__Group_1_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_51);
            rule__IdentifierPattern__Group_1_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__2"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__2__Impl"
    // InternalFiacre.g:14661:1: rule__IdentifierPattern__Group_1_1_0__2__Impl : ( ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 ) ) ;
    public final void rule__IdentifierPattern__Group_1_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14665:1: ( ( ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 ) ) )
            // InternalFiacre.g:14666:1: ( ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 ) )
            {
            // InternalFiacre.g:14666:1: ( ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 ) )
            // InternalFiacre.g:14667:2: ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getIndexAssignment_1_1_0_2()); 
            }
            // InternalFiacre.g:14668:2: ( rule__IdentifierPattern__IndexAssignment_1_1_0_2 )
            // InternalFiacre.g:14668:3: rule__IdentifierPattern__IndexAssignment_1_1_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__IndexAssignment_1_1_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getIndexAssignment_1_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__2__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__3"
    // InternalFiacre.g:14676:1: rule__IdentifierPattern__Group_1_1_0__3 : rule__IdentifierPattern__Group_1_1_0__3__Impl ;
    public final void rule__IdentifierPattern__Group_1_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14680:1: ( rule__IdentifierPattern__Group_1_1_0__3__Impl )
            // InternalFiacre.g:14681:2: rule__IdentifierPattern__Group_1_1_0__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__3"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_0__3__Impl"
    // InternalFiacre.g:14687:1: rule__IdentifierPattern__Group_1_1_0__3__Impl : ( ']' ) ;
    public final void rule__IdentifierPattern__Group_1_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14691:1: ( ( ']' ) )
            // InternalFiacre.g:14692:1: ( ']' )
            {
            // InternalFiacre.g:14692:1: ( ']' )
            // InternalFiacre.g:14693:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getRightSquareBracketKeyword_1_1_0_3()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getRightSquareBracketKeyword_1_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_0__3__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__0"
    // InternalFiacre.g:14703:1: rule__IdentifierPattern__Group_1_1_1__0 : rule__IdentifierPattern__Group_1_1_1__0__Impl rule__IdentifierPattern__Group_1_1_1__1 ;
    public final void rule__IdentifierPattern__Group_1_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14707:1: ( rule__IdentifierPattern__Group_1_1_1__0__Impl rule__IdentifierPattern__Group_1_1_1__1 )
            // InternalFiacre.g:14708:2: rule__IdentifierPattern__Group_1_1_1__0__Impl rule__IdentifierPattern__Group_1_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierPattern__Group_1_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__0"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__0__Impl"
    // InternalFiacre.g:14715:1: rule__IdentifierPattern__Group_1_1_1__0__Impl : ( '.' ) ;
    public final void rule__IdentifierPattern__Group_1_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14719:1: ( ( '.' ) )
            // InternalFiacre.g:14720:1: ( '.' )
            {
            // InternalFiacre.g:14720:1: ( '.' )
            // InternalFiacre.g:14721:2: '.'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getFullStopKeyword_1_1_1_0()); 
            }
            match(input,61,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getFullStopKeyword_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__0__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__1"
    // InternalFiacre.g:14730:1: rule__IdentifierPattern__Group_1_1_1__1 : rule__IdentifierPattern__Group_1_1_1__1__Impl rule__IdentifierPattern__Group_1_1_1__2 ;
    public final void rule__IdentifierPattern__Group_1_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14734:1: ( rule__IdentifierPattern__Group_1_1_1__1__Impl rule__IdentifierPattern__Group_1_1_1__2 )
            // InternalFiacre.g:14735:2: rule__IdentifierPattern__Group_1_1_1__1__Impl rule__IdentifierPattern__Group_1_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierPattern__Group_1_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__1"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__1__Impl"
    // InternalFiacre.g:14742:1: rule__IdentifierPattern__Group_1_1_1__1__Impl : ( () ) ;
    public final void rule__IdentifierPattern__Group_1_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14746:1: ( ( () ) )
            // InternalFiacre.g:14747:1: ( () )
            {
            // InternalFiacre.g:14747:1: ( () )
            // InternalFiacre.g:14748:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getRecordAccessPatternSourceAction_1_1_1_1()); 
            }
            // InternalFiacre.g:14749:2: ()
            // InternalFiacre.g:14749:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getRecordAccessPatternSourceAction_1_1_1_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__1__Impl"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__2"
    // InternalFiacre.g:14757:1: rule__IdentifierPattern__Group_1_1_1__2 : rule__IdentifierPattern__Group_1_1_1__2__Impl ;
    public final void rule__IdentifierPattern__Group_1_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14761:1: ( rule__IdentifierPattern__Group_1_1_1__2__Impl )
            // InternalFiacre.g:14762:2: rule__IdentifierPattern__Group_1_1_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__Group_1_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__2"


    // $ANTLR start "rule__IdentifierPattern__Group_1_1_1__2__Impl"
    // InternalFiacre.g:14768:1: rule__IdentifierPattern__Group_1_1_1__2__Impl : ( ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 ) ) ;
    public final void rule__IdentifierPattern__Group_1_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14772:1: ( ( ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 ) ) )
            // InternalFiacre.g:14773:1: ( ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 ) )
            {
            // InternalFiacre.g:14773:1: ( ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 ) )
            // InternalFiacre.g:14774:2: ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getFieldAssignment_1_1_1_2()); 
            }
            // InternalFiacre.g:14775:2: ( rule__IdentifierPattern__FieldAssignment_1_1_1_2 )
            // InternalFiacre.g:14775:3: rule__IdentifierPattern__FieldAssignment_1_1_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierPattern__FieldAssignment_1_1_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getFieldAssignment_1_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__Group_1_1_1__2__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__0"
    // InternalFiacre.g:14784:1: rule__ConditionalStatement__Group__0 : rule__ConditionalStatement__Group__0__Impl rule__ConditionalStatement__Group__1 ;
    public final void rule__ConditionalStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14788:1: ( rule__ConditionalStatement__Group__0__Impl rule__ConditionalStatement__Group__1 )
            // InternalFiacre.g:14789:2: rule__ConditionalStatement__Group__0__Impl rule__ConditionalStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ConditionalStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__0"


    // $ANTLR start "rule__ConditionalStatement__Group__0__Impl"
    // InternalFiacre.g:14796:1: rule__ConditionalStatement__Group__0__Impl : ( 'if' ) ;
    public final void rule__ConditionalStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14800:1: ( ( 'if' ) )
            // InternalFiacre.g:14801:1: ( 'if' )
            {
            // InternalFiacre.g:14801:1: ( 'if' )
            // InternalFiacre.g:14802:2: 'if'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getIfKeyword_0()); 
            }
            match(input,62,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getIfKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__0__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__1"
    // InternalFiacre.g:14811:1: rule__ConditionalStatement__Group__1 : rule__ConditionalStatement__Group__1__Impl rule__ConditionalStatement__Group__2 ;
    public final void rule__ConditionalStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14815:1: ( rule__ConditionalStatement__Group__1__Impl rule__ConditionalStatement__Group__2 )
            // InternalFiacre.g:14816:2: rule__ConditionalStatement__Group__1__Impl rule__ConditionalStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_73);
            rule__ConditionalStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__1"


    // $ANTLR start "rule__ConditionalStatement__Group__1__Impl"
    // InternalFiacre.g:14823:1: rule__ConditionalStatement__Group__1__Impl : ( ( rule__ConditionalStatement__ConditionAssignment_1 ) ) ;
    public final void rule__ConditionalStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14827:1: ( ( ( rule__ConditionalStatement__ConditionAssignment_1 ) ) )
            // InternalFiacre.g:14828:1: ( ( rule__ConditionalStatement__ConditionAssignment_1 ) )
            {
            // InternalFiacre.g:14828:1: ( ( rule__ConditionalStatement__ConditionAssignment_1 ) )
            // InternalFiacre.g:14829:2: ( rule__ConditionalStatement__ConditionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getConditionAssignment_1()); 
            }
            // InternalFiacre.g:14830:2: ( rule__ConditionalStatement__ConditionAssignment_1 )
            // InternalFiacre.g:14830:3: rule__ConditionalStatement__ConditionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__ConditionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getConditionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__1__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__2"
    // InternalFiacre.g:14838:1: rule__ConditionalStatement__Group__2 : rule__ConditionalStatement__Group__2__Impl rule__ConditionalStatement__Group__3 ;
    public final void rule__ConditionalStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14842:1: ( rule__ConditionalStatement__Group__2__Impl rule__ConditionalStatement__Group__3 )
            // InternalFiacre.g:14843:2: rule__ConditionalStatement__Group__2__Impl rule__ConditionalStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ConditionalStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__2"


    // $ANTLR start "rule__ConditionalStatement__Group__2__Impl"
    // InternalFiacre.g:14850:1: rule__ConditionalStatement__Group__2__Impl : ( 'then' ) ;
    public final void rule__ConditionalStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14854:1: ( ( 'then' ) )
            // InternalFiacre.g:14855:1: ( 'then' )
            {
            // InternalFiacre.g:14855:1: ( 'then' )
            // InternalFiacre.g:14856:2: 'then'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getThenKeyword_2()); 
            }
            match(input,63,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getThenKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__2__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__3"
    // InternalFiacre.g:14865:1: rule__ConditionalStatement__Group__3 : rule__ConditionalStatement__Group__3__Impl rule__ConditionalStatement__Group__4 ;
    public final void rule__ConditionalStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14869:1: ( rule__ConditionalStatement__Group__3__Impl rule__ConditionalStatement__Group__4 )
            // InternalFiacre.g:14870:2: rule__ConditionalStatement__Group__3__Impl rule__ConditionalStatement__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_74);
            rule__ConditionalStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__3"


    // $ANTLR start "rule__ConditionalStatement__Group__3__Impl"
    // InternalFiacre.g:14877:1: rule__ConditionalStatement__Group__3__Impl : ( ( rule__ConditionalStatement__ThenAssignment_3 ) ) ;
    public final void rule__ConditionalStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14881:1: ( ( ( rule__ConditionalStatement__ThenAssignment_3 ) ) )
            // InternalFiacre.g:14882:1: ( ( rule__ConditionalStatement__ThenAssignment_3 ) )
            {
            // InternalFiacre.g:14882:1: ( ( rule__ConditionalStatement__ThenAssignment_3 ) )
            // InternalFiacre.g:14883:2: ( rule__ConditionalStatement__ThenAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getThenAssignment_3()); 
            }
            // InternalFiacre.g:14884:2: ( rule__ConditionalStatement__ThenAssignment_3 )
            // InternalFiacre.g:14884:3: rule__ConditionalStatement__ThenAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__ThenAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getThenAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__3__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__4"
    // InternalFiacre.g:14892:1: rule__ConditionalStatement__Group__4 : rule__ConditionalStatement__Group__4__Impl rule__ConditionalStatement__Group__5 ;
    public final void rule__ConditionalStatement__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14896:1: ( rule__ConditionalStatement__Group__4__Impl rule__ConditionalStatement__Group__5 )
            // InternalFiacre.g:14897:2: rule__ConditionalStatement__Group__4__Impl rule__ConditionalStatement__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_74);
            rule__ConditionalStatement__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__4"


    // $ANTLR start "rule__ConditionalStatement__Group__4__Impl"
    // InternalFiacre.g:14904:1: rule__ConditionalStatement__Group__4__Impl : ( ( rule__ConditionalStatement__ElseifAssignment_4 )* ) ;
    public final void rule__ConditionalStatement__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14908:1: ( ( ( rule__ConditionalStatement__ElseifAssignment_4 )* ) )
            // InternalFiacre.g:14909:1: ( ( rule__ConditionalStatement__ElseifAssignment_4 )* )
            {
            // InternalFiacre.g:14909:1: ( ( rule__ConditionalStatement__ElseifAssignment_4 )* )
            // InternalFiacre.g:14910:2: ( rule__ConditionalStatement__ElseifAssignment_4 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getElseifAssignment_4()); 
            }
            // InternalFiacre.g:14911:2: ( rule__ConditionalStatement__ElseifAssignment_4 )*
            loop135:
            do {
                int alt135=2;
                int LA135_0 = input.LA(1);

                if ( (LA135_0==65) ) {
                    alt135=1;
                }


                switch (alt135) {
            	case 1 :
            	    // InternalFiacre.g:14911:3: rule__ConditionalStatement__ElseifAssignment_4
            	    {
            	    pushFollow(FollowSets000.FOLLOW_75);
            	    rule__ConditionalStatement__ElseifAssignment_4();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop135;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getElseifAssignment_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__4__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__5"
    // InternalFiacre.g:14919:1: rule__ConditionalStatement__Group__5 : rule__ConditionalStatement__Group__5__Impl rule__ConditionalStatement__Group__6 ;
    public final void rule__ConditionalStatement__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14923:1: ( rule__ConditionalStatement__Group__5__Impl rule__ConditionalStatement__Group__6 )
            // InternalFiacre.g:14924:2: rule__ConditionalStatement__Group__5__Impl rule__ConditionalStatement__Group__6
            {
            pushFollow(FollowSets000.FOLLOW_74);
            rule__ConditionalStatement__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__5"


    // $ANTLR start "rule__ConditionalStatement__Group__5__Impl"
    // InternalFiacre.g:14931:1: rule__ConditionalStatement__Group__5__Impl : ( ( rule__ConditionalStatement__Group_5__0 )? ) ;
    public final void rule__ConditionalStatement__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14935:1: ( ( ( rule__ConditionalStatement__Group_5__0 )? ) )
            // InternalFiacre.g:14936:1: ( ( rule__ConditionalStatement__Group_5__0 )? )
            {
            // InternalFiacre.g:14936:1: ( ( rule__ConditionalStatement__Group_5__0 )? )
            // InternalFiacre.g:14937:2: ( rule__ConditionalStatement__Group_5__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getGroup_5()); 
            }
            // InternalFiacre.g:14938:2: ( rule__ConditionalStatement__Group_5__0 )?
            int alt136=2;
            int LA136_0 = input.LA(1);

            if ( (LA136_0==64) ) {
                alt136=1;
            }
            switch (alt136) {
                case 1 :
                    // InternalFiacre.g:14938:3: rule__ConditionalStatement__Group_5__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ConditionalStatement__Group_5__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getGroup_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__5__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__6"
    // InternalFiacre.g:14946:1: rule__ConditionalStatement__Group__6 : rule__ConditionalStatement__Group__6__Impl rule__ConditionalStatement__Group__7 ;
    public final void rule__ConditionalStatement__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14950:1: ( rule__ConditionalStatement__Group__6__Impl rule__ConditionalStatement__Group__7 )
            // InternalFiacre.g:14951:2: rule__ConditionalStatement__Group__6__Impl rule__ConditionalStatement__Group__7
            {
            pushFollow(FollowSets000.FOLLOW_76);
            rule__ConditionalStatement__Group__6__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__7();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__6"


    // $ANTLR start "rule__ConditionalStatement__Group__6__Impl"
    // InternalFiacre.g:14958:1: rule__ConditionalStatement__Group__6__Impl : ( 'end' ) ;
    public final void rule__ConditionalStatement__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14962:1: ( ( 'end' ) )
            // InternalFiacre.g:14963:1: ( 'end' )
            {
            // InternalFiacre.g:14963:1: ( 'end' )
            // InternalFiacre.g:14964:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getEndKeyword_6()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getEndKeyword_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__6__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group__7"
    // InternalFiacre.g:14973:1: rule__ConditionalStatement__Group__7 : rule__ConditionalStatement__Group__7__Impl ;
    public final void rule__ConditionalStatement__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14977:1: ( rule__ConditionalStatement__Group__7__Impl )
            // InternalFiacre.g:14978:2: rule__ConditionalStatement__Group__7__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group__7__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__7"


    // $ANTLR start "rule__ConditionalStatement__Group__7__Impl"
    // InternalFiacre.g:14984:1: rule__ConditionalStatement__Group__7__Impl : ( ( 'if' )? ) ;
    public final void rule__ConditionalStatement__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:14988:1: ( ( ( 'if' )? ) )
            // InternalFiacre.g:14989:1: ( ( 'if' )? )
            {
            // InternalFiacre.g:14989:1: ( ( 'if' )? )
            // InternalFiacre.g:14990:2: ( 'if' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getIfKeyword_7()); 
            }
            // InternalFiacre.g:14991:2: ( 'if' )?
            int alt137=2;
            int LA137_0 = input.LA(1);

            if ( (LA137_0==62) ) {
                alt137=1;
            }
            switch (alt137) {
                case 1 :
                    // InternalFiacre.g:14991:3: 'if'
                    {
                    match(input,62,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getIfKeyword_7()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group__7__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group_5__0"
    // InternalFiacre.g:15000:1: rule__ConditionalStatement__Group_5__0 : rule__ConditionalStatement__Group_5__0__Impl rule__ConditionalStatement__Group_5__1 ;
    public final void rule__ConditionalStatement__Group_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15004:1: ( rule__ConditionalStatement__Group_5__0__Impl rule__ConditionalStatement__Group_5__1 )
            // InternalFiacre.g:15005:2: rule__ConditionalStatement__Group_5__0__Impl rule__ConditionalStatement__Group_5__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ConditionalStatement__Group_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group_5__0"


    // $ANTLR start "rule__ConditionalStatement__Group_5__0__Impl"
    // InternalFiacre.g:15012:1: rule__ConditionalStatement__Group_5__0__Impl : ( 'else' ) ;
    public final void rule__ConditionalStatement__Group_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15016:1: ( ( 'else' ) )
            // InternalFiacre.g:15017:1: ( 'else' )
            {
            // InternalFiacre.g:15017:1: ( 'else' )
            // InternalFiacre.g:15018:2: 'else'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getElseKeyword_5_0()); 
            }
            match(input,64,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getElseKeyword_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group_5__0__Impl"


    // $ANTLR start "rule__ConditionalStatement__Group_5__1"
    // InternalFiacre.g:15027:1: rule__ConditionalStatement__Group_5__1 : rule__ConditionalStatement__Group_5__1__Impl ;
    public final void rule__ConditionalStatement__Group_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15031:1: ( rule__ConditionalStatement__Group_5__1__Impl )
            // InternalFiacre.g:15032:2: rule__ConditionalStatement__Group_5__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__Group_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group_5__1"


    // $ANTLR start "rule__ConditionalStatement__Group_5__1__Impl"
    // InternalFiacre.g:15038:1: rule__ConditionalStatement__Group_5__1__Impl : ( ( rule__ConditionalStatement__ElseAssignment_5_1 ) ) ;
    public final void rule__ConditionalStatement__Group_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15042:1: ( ( ( rule__ConditionalStatement__ElseAssignment_5_1 ) ) )
            // InternalFiacre.g:15043:1: ( ( rule__ConditionalStatement__ElseAssignment_5_1 ) )
            {
            // InternalFiacre.g:15043:1: ( ( rule__ConditionalStatement__ElseAssignment_5_1 ) )
            // InternalFiacre.g:15044:2: ( rule__ConditionalStatement__ElseAssignment_5_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getElseAssignment_5_1()); 
            }
            // InternalFiacre.g:15045:2: ( rule__ConditionalStatement__ElseAssignment_5_1 )
            // InternalFiacre.g:15045:3: rule__ConditionalStatement__ElseAssignment_5_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ConditionalStatement__ElseAssignment_5_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getElseAssignment_5_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__Group_5__1__Impl"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__0"
    // InternalFiacre.g:15054:1: rule__ExtendedConditionalStatement__Group__0 : rule__ExtendedConditionalStatement__Group__0__Impl rule__ExtendedConditionalStatement__Group__1 ;
    public final void rule__ExtendedConditionalStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15058:1: ( rule__ExtendedConditionalStatement__Group__0__Impl rule__ExtendedConditionalStatement__Group__1 )
            // InternalFiacre.g:15059:2: rule__ExtendedConditionalStatement__Group__0__Impl rule__ExtendedConditionalStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ExtendedConditionalStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__0"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__0__Impl"
    // InternalFiacre.g:15066:1: rule__ExtendedConditionalStatement__Group__0__Impl : ( 'elsif' ) ;
    public final void rule__ExtendedConditionalStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15070:1: ( ( 'elsif' ) )
            // InternalFiacre.g:15071:1: ( 'elsif' )
            {
            // InternalFiacre.g:15071:1: ( 'elsif' )
            // InternalFiacre.g:15072:2: 'elsif'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getElsifKeyword_0()); 
            }
            match(input,65,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getElsifKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__0__Impl"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__1"
    // InternalFiacre.g:15081:1: rule__ExtendedConditionalStatement__Group__1 : rule__ExtendedConditionalStatement__Group__1__Impl rule__ExtendedConditionalStatement__Group__2 ;
    public final void rule__ExtendedConditionalStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15085:1: ( rule__ExtendedConditionalStatement__Group__1__Impl rule__ExtendedConditionalStatement__Group__2 )
            // InternalFiacre.g:15086:2: rule__ExtendedConditionalStatement__Group__1__Impl rule__ExtendedConditionalStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_73);
            rule__ExtendedConditionalStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__1"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__1__Impl"
    // InternalFiacre.g:15093:1: rule__ExtendedConditionalStatement__Group__1__Impl : ( ( rule__ExtendedConditionalStatement__ConditionAssignment_1 ) ) ;
    public final void rule__ExtendedConditionalStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15097:1: ( ( ( rule__ExtendedConditionalStatement__ConditionAssignment_1 ) ) )
            // InternalFiacre.g:15098:1: ( ( rule__ExtendedConditionalStatement__ConditionAssignment_1 ) )
            {
            // InternalFiacre.g:15098:1: ( ( rule__ExtendedConditionalStatement__ConditionAssignment_1 ) )
            // InternalFiacre.g:15099:2: ( rule__ExtendedConditionalStatement__ConditionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getConditionAssignment_1()); 
            }
            // InternalFiacre.g:15100:2: ( rule__ExtendedConditionalStatement__ConditionAssignment_1 )
            // InternalFiacre.g:15100:3: rule__ExtendedConditionalStatement__ConditionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__ConditionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getConditionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__1__Impl"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__2"
    // InternalFiacre.g:15108:1: rule__ExtendedConditionalStatement__Group__2 : rule__ExtendedConditionalStatement__Group__2__Impl rule__ExtendedConditionalStatement__Group__3 ;
    public final void rule__ExtendedConditionalStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15112:1: ( rule__ExtendedConditionalStatement__Group__2__Impl rule__ExtendedConditionalStatement__Group__3 )
            // InternalFiacre.g:15113:2: rule__ExtendedConditionalStatement__Group__2__Impl rule__ExtendedConditionalStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ExtendedConditionalStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__2"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__2__Impl"
    // InternalFiacre.g:15120:1: rule__ExtendedConditionalStatement__Group__2__Impl : ( 'then' ) ;
    public final void rule__ExtendedConditionalStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15124:1: ( ( 'then' ) )
            // InternalFiacre.g:15125:1: ( 'then' )
            {
            // InternalFiacre.g:15125:1: ( 'then' )
            // InternalFiacre.g:15126:2: 'then'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getThenKeyword_2()); 
            }
            match(input,63,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getThenKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__2__Impl"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__3"
    // InternalFiacre.g:15135:1: rule__ExtendedConditionalStatement__Group__3 : rule__ExtendedConditionalStatement__Group__3__Impl ;
    public final void rule__ExtendedConditionalStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15139:1: ( rule__ExtendedConditionalStatement__Group__3__Impl )
            // InternalFiacre.g:15140:2: rule__ExtendedConditionalStatement__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__3"


    // $ANTLR start "rule__ExtendedConditionalStatement__Group__3__Impl"
    // InternalFiacre.g:15146:1: rule__ExtendedConditionalStatement__Group__3__Impl : ( ( rule__ExtendedConditionalStatement__ThenAssignment_3 ) ) ;
    public final void rule__ExtendedConditionalStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15150:1: ( ( ( rule__ExtendedConditionalStatement__ThenAssignment_3 ) ) )
            // InternalFiacre.g:15151:1: ( ( rule__ExtendedConditionalStatement__ThenAssignment_3 ) )
            {
            // InternalFiacre.g:15151:1: ( ( rule__ExtendedConditionalStatement__ThenAssignment_3 ) )
            // InternalFiacre.g:15152:2: ( rule__ExtendedConditionalStatement__ThenAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getThenAssignment_3()); 
            }
            // InternalFiacre.g:15153:2: ( rule__ExtendedConditionalStatement__ThenAssignment_3 )
            // InternalFiacre.g:15153:3: rule__ExtendedConditionalStatement__ThenAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ExtendedConditionalStatement__ThenAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getThenAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__Group__3__Impl"


    // $ANTLR start "rule__SelectStatement__Group__0"
    // InternalFiacre.g:15162:1: rule__SelectStatement__Group__0 : rule__SelectStatement__Group__0__Impl rule__SelectStatement__Group__1 ;
    public final void rule__SelectStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15166:1: ( rule__SelectStatement__Group__0__Impl rule__SelectStatement__Group__1 )
            // InternalFiacre.g:15167:2: rule__SelectStatement__Group__0__Impl rule__SelectStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__SelectStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__0"


    // $ANTLR start "rule__SelectStatement__Group__0__Impl"
    // InternalFiacre.g:15174:1: rule__SelectStatement__Group__0__Impl : ( 'select' ) ;
    public final void rule__SelectStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15178:1: ( ( 'select' ) )
            // InternalFiacre.g:15179:1: ( 'select' )
            {
            // InternalFiacre.g:15179:1: ( 'select' )
            // InternalFiacre.g:15180:2: 'select'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getSelectKeyword_0()); 
            }
            match(input,66,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getSelectKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__0__Impl"


    // $ANTLR start "rule__SelectStatement__Group__1"
    // InternalFiacre.g:15189:1: rule__SelectStatement__Group__1 : rule__SelectStatement__Group__1__Impl rule__SelectStatement__Group__2 ;
    public final void rule__SelectStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15193:1: ( rule__SelectStatement__Group__1__Impl rule__SelectStatement__Group__2 )
            // InternalFiacre.g:15194:2: rule__SelectStatement__Group__1__Impl rule__SelectStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__SelectStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__1"


    // $ANTLR start "rule__SelectStatement__Group__1__Impl"
    // InternalFiacre.g:15201:1: rule__SelectStatement__Group__1__Impl : ( ( rule__SelectStatement__BodyAssignment_1 ) ) ;
    public final void rule__SelectStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15205:1: ( ( ( rule__SelectStatement__BodyAssignment_1 ) ) )
            // InternalFiacre.g:15206:1: ( ( rule__SelectStatement__BodyAssignment_1 ) )
            {
            // InternalFiacre.g:15206:1: ( ( rule__SelectStatement__BodyAssignment_1 ) )
            // InternalFiacre.g:15207:2: ( rule__SelectStatement__BodyAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getBodyAssignment_1()); 
            }
            // InternalFiacre.g:15208:2: ( rule__SelectStatement__BodyAssignment_1 )
            // InternalFiacre.g:15208:3: rule__SelectStatement__BodyAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__BodyAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getBodyAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__1__Impl"


    // $ANTLR start "rule__SelectStatement__Group__2"
    // InternalFiacre.g:15216:1: rule__SelectStatement__Group__2 : rule__SelectStatement__Group__2__Impl rule__SelectStatement__Group__3 ;
    public final void rule__SelectStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15220:1: ( rule__SelectStatement__Group__2__Impl rule__SelectStatement__Group__3 )
            // InternalFiacre.g:15221:2: rule__SelectStatement__Group__2__Impl rule__SelectStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__SelectStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__2"


    // $ANTLR start "rule__SelectStatement__Group__2__Impl"
    // InternalFiacre.g:15228:1: rule__SelectStatement__Group__2__Impl : ( ( rule__SelectStatement__Group_2__0 )? ) ;
    public final void rule__SelectStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15232:1: ( ( ( rule__SelectStatement__Group_2__0 )? ) )
            // InternalFiacre.g:15233:1: ( ( rule__SelectStatement__Group_2__0 )? )
            {
            // InternalFiacre.g:15233:1: ( ( rule__SelectStatement__Group_2__0 )? )
            // InternalFiacre.g:15234:2: ( rule__SelectStatement__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getGroup_2()); 
            }
            // InternalFiacre.g:15235:2: ( rule__SelectStatement__Group_2__0 )?
            int alt138=2;
            int LA138_0 = input.LA(1);

            if ( (LA138_0==17) ) {
                alt138=1;
            }
            switch (alt138) {
                case 1 :
                    // InternalFiacre.g:15235:3: rule__SelectStatement__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SelectStatement__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__2__Impl"


    // $ANTLR start "rule__SelectStatement__Group__3"
    // InternalFiacre.g:15243:1: rule__SelectStatement__Group__3 : rule__SelectStatement__Group__3__Impl rule__SelectStatement__Group__4 ;
    public final void rule__SelectStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15247:1: ( rule__SelectStatement__Group__3__Impl rule__SelectStatement__Group__4 )
            // InternalFiacre.g:15248:2: rule__SelectStatement__Group__3__Impl rule__SelectStatement__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_77);
            rule__SelectStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__3"


    // $ANTLR start "rule__SelectStatement__Group__3__Impl"
    // InternalFiacre.g:15255:1: rule__SelectStatement__Group__3__Impl : ( 'end' ) ;
    public final void rule__SelectStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15259:1: ( ( 'end' ) )
            // InternalFiacre.g:15260:1: ( 'end' )
            {
            // InternalFiacre.g:15260:1: ( 'end' )
            // InternalFiacre.g:15261:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getEndKeyword_3()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getEndKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__3__Impl"


    // $ANTLR start "rule__SelectStatement__Group__4"
    // InternalFiacre.g:15270:1: rule__SelectStatement__Group__4 : rule__SelectStatement__Group__4__Impl ;
    public final void rule__SelectStatement__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15274:1: ( rule__SelectStatement__Group__4__Impl )
            // InternalFiacre.g:15275:2: rule__SelectStatement__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__4"


    // $ANTLR start "rule__SelectStatement__Group__4__Impl"
    // InternalFiacre.g:15281:1: rule__SelectStatement__Group__4__Impl : ( ( 'select' )? ) ;
    public final void rule__SelectStatement__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15285:1: ( ( ( 'select' )? ) )
            // InternalFiacre.g:15286:1: ( ( 'select' )? )
            {
            // InternalFiacre.g:15286:1: ( ( 'select' )? )
            // InternalFiacre.g:15287:2: ( 'select' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getSelectKeyword_4()); 
            }
            // InternalFiacre.g:15288:2: ( 'select' )?
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==66) ) {
                alt139=1;
            }
            switch (alt139) {
                case 1 :
                    // InternalFiacre.g:15288:3: 'select'
                    {
                    match(input,66,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getSelectKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group__4__Impl"


    // $ANTLR start "rule__SelectStatement__Group_2__0"
    // InternalFiacre.g:15297:1: rule__SelectStatement__Group_2__0 : rule__SelectStatement__Group_2__0__Impl rule__SelectStatement__Group_2__1 ;
    public final void rule__SelectStatement__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15301:1: ( rule__SelectStatement__Group_2__0__Impl rule__SelectStatement__Group_2__1 )
            // InternalFiacre.g:15302:2: rule__SelectStatement__Group_2__0__Impl rule__SelectStatement__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__SelectStatement__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__0"


    // $ANTLR start "rule__SelectStatement__Group_2__0__Impl"
    // InternalFiacre.g:15309:1: rule__SelectStatement__Group_2__0__Impl : ( '|' ) ;
    public final void rule__SelectStatement__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15313:1: ( ( '|' ) )
            // InternalFiacre.g:15314:1: ( '|' )
            {
            // InternalFiacre.g:15314:1: ( '|' )
            // InternalFiacre.g:15315:2: '|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getVerticalLineKeyword_2_0()); 
            }
            match(input,17,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getVerticalLineKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__0__Impl"


    // $ANTLR start "rule__SelectStatement__Group_2__1"
    // InternalFiacre.g:15324:1: rule__SelectStatement__Group_2__1 : rule__SelectStatement__Group_2__1__Impl rule__SelectStatement__Group_2__2 ;
    public final void rule__SelectStatement__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15328:1: ( rule__SelectStatement__Group_2__1__Impl rule__SelectStatement__Group_2__2 )
            // InternalFiacre.g:15329:2: rule__SelectStatement__Group_2__1__Impl rule__SelectStatement__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_46);
            rule__SelectStatement__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__1"


    // $ANTLR start "rule__SelectStatement__Group_2__1__Impl"
    // InternalFiacre.g:15336:1: rule__SelectStatement__Group_2__1__Impl : ( ( rule__SelectStatement__IndexAssignment_2_1 ) ) ;
    public final void rule__SelectStatement__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15340:1: ( ( ( rule__SelectStatement__IndexAssignment_2_1 ) ) )
            // InternalFiacre.g:15341:1: ( ( rule__SelectStatement__IndexAssignment_2_1 ) )
            {
            // InternalFiacre.g:15341:1: ( ( rule__SelectStatement__IndexAssignment_2_1 ) )
            // InternalFiacre.g:15342:2: ( rule__SelectStatement__IndexAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getIndexAssignment_2_1()); 
            }
            // InternalFiacre.g:15343:2: ( rule__SelectStatement__IndexAssignment_2_1 )
            // InternalFiacre.g:15343:3: rule__SelectStatement__IndexAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__IndexAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getIndexAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__1__Impl"


    // $ANTLR start "rule__SelectStatement__Group_2__2"
    // InternalFiacre.g:15351:1: rule__SelectStatement__Group_2__2 : rule__SelectStatement__Group_2__2__Impl rule__SelectStatement__Group_2__3 ;
    public final void rule__SelectStatement__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15355:1: ( rule__SelectStatement__Group_2__2__Impl rule__SelectStatement__Group_2__3 )
            // InternalFiacre.g:15356:2: rule__SelectStatement__Group_2__2__Impl rule__SelectStatement__Group_2__3
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__SelectStatement__Group_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__2"


    // $ANTLR start "rule__SelectStatement__Group_2__2__Impl"
    // InternalFiacre.g:15363:1: rule__SelectStatement__Group_2__2__Impl : ( 'in' ) ;
    public final void rule__SelectStatement__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15367:1: ( ( 'in' ) )
            // InternalFiacre.g:15368:1: ( 'in' )
            {
            // InternalFiacre.g:15368:1: ( 'in' )
            // InternalFiacre.g:15369:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getInKeyword_2_2()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getInKeyword_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__2__Impl"


    // $ANTLR start "rule__SelectStatement__Group_2__3"
    // InternalFiacre.g:15378:1: rule__SelectStatement__Group_2__3 : rule__SelectStatement__Group_2__3__Impl ;
    public final void rule__SelectStatement__Group_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15382:1: ( rule__SelectStatement__Group_2__3__Impl )
            // InternalFiacre.g:15383:2: rule__SelectStatement__Group_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__Group_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__3"


    // $ANTLR start "rule__SelectStatement__Group_2__3__Impl"
    // InternalFiacre.g:15389:1: rule__SelectStatement__Group_2__3__Impl : ( ( rule__SelectStatement__TypeAssignment_2_3 ) ) ;
    public final void rule__SelectStatement__Group_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15393:1: ( ( ( rule__SelectStatement__TypeAssignment_2_3 ) ) )
            // InternalFiacre.g:15394:1: ( ( rule__SelectStatement__TypeAssignment_2_3 ) )
            {
            // InternalFiacre.g:15394:1: ( ( rule__SelectStatement__TypeAssignment_2_3 ) )
            // InternalFiacre.g:15395:2: ( rule__SelectStatement__TypeAssignment_2_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getTypeAssignment_2_3()); 
            }
            // InternalFiacre.g:15396:2: ( rule__SelectStatement__TypeAssignment_2_3 )
            // InternalFiacre.g:15396:3: rule__SelectStatement__TypeAssignment_2_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SelectStatement__TypeAssignment_2_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getTypeAssignment_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__Group_2__3__Impl"


    // $ANTLR start "rule__WhileStatement__Group__0"
    // InternalFiacre.g:15405:1: rule__WhileStatement__Group__0 : rule__WhileStatement__Group__0__Impl rule__WhileStatement__Group__1 ;
    public final void rule__WhileStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15409:1: ( rule__WhileStatement__Group__0__Impl rule__WhileStatement__Group__1 )
            // InternalFiacre.g:15410:2: rule__WhileStatement__Group__0__Impl rule__WhileStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__WhileStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__0"


    // $ANTLR start "rule__WhileStatement__Group__0__Impl"
    // InternalFiacre.g:15417:1: rule__WhileStatement__Group__0__Impl : ( 'while' ) ;
    public final void rule__WhileStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15421:1: ( ( 'while' ) )
            // InternalFiacre.g:15422:1: ( 'while' )
            {
            // InternalFiacre.g:15422:1: ( 'while' )
            // InternalFiacre.g:15423:2: 'while'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getWhileKeyword_0()); 
            }
            match(input,67,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getWhileKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__0__Impl"


    // $ANTLR start "rule__WhileStatement__Group__1"
    // InternalFiacre.g:15432:1: rule__WhileStatement__Group__1 : rule__WhileStatement__Group__1__Impl rule__WhileStatement__Group__2 ;
    public final void rule__WhileStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15436:1: ( rule__WhileStatement__Group__1__Impl rule__WhileStatement__Group__2 )
            // InternalFiacre.g:15437:2: rule__WhileStatement__Group__1__Impl rule__WhileStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_78);
            rule__WhileStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__1"


    // $ANTLR start "rule__WhileStatement__Group__1__Impl"
    // InternalFiacre.g:15444:1: rule__WhileStatement__Group__1__Impl : ( ( rule__WhileStatement__ConditionAssignment_1 ) ) ;
    public final void rule__WhileStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15448:1: ( ( ( rule__WhileStatement__ConditionAssignment_1 ) ) )
            // InternalFiacre.g:15449:1: ( ( rule__WhileStatement__ConditionAssignment_1 ) )
            {
            // InternalFiacre.g:15449:1: ( ( rule__WhileStatement__ConditionAssignment_1 ) )
            // InternalFiacre.g:15450:2: ( rule__WhileStatement__ConditionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getConditionAssignment_1()); 
            }
            // InternalFiacre.g:15451:2: ( rule__WhileStatement__ConditionAssignment_1 )
            // InternalFiacre.g:15451:3: rule__WhileStatement__ConditionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__ConditionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getConditionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__1__Impl"


    // $ANTLR start "rule__WhileStatement__Group__2"
    // InternalFiacre.g:15459:1: rule__WhileStatement__Group__2 : rule__WhileStatement__Group__2__Impl rule__WhileStatement__Group__3 ;
    public final void rule__WhileStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15463:1: ( rule__WhileStatement__Group__2__Impl rule__WhileStatement__Group__3 )
            // InternalFiacre.g:15464:2: rule__WhileStatement__Group__2__Impl rule__WhileStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__WhileStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__2"


    // $ANTLR start "rule__WhileStatement__Group__2__Impl"
    // InternalFiacre.g:15471:1: rule__WhileStatement__Group__2__Impl : ( 'do' ) ;
    public final void rule__WhileStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15475:1: ( ( 'do' ) )
            // InternalFiacre.g:15476:1: ( 'do' )
            {
            // InternalFiacre.g:15476:1: ( 'do' )
            // InternalFiacre.g:15477:2: 'do'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getDoKeyword_2()); 
            }
            match(input,68,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getDoKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__2__Impl"


    // $ANTLR start "rule__WhileStatement__Group__3"
    // InternalFiacre.g:15486:1: rule__WhileStatement__Group__3 : rule__WhileStatement__Group__3__Impl rule__WhileStatement__Group__4 ;
    public final void rule__WhileStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15490:1: ( rule__WhileStatement__Group__3__Impl rule__WhileStatement__Group__4 )
            // InternalFiacre.g:15491:2: rule__WhileStatement__Group__3__Impl rule__WhileStatement__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_60);
            rule__WhileStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__3"


    // $ANTLR start "rule__WhileStatement__Group__3__Impl"
    // InternalFiacre.g:15498:1: rule__WhileStatement__Group__3__Impl : ( ( rule__WhileStatement__BodyAssignment_3 ) ) ;
    public final void rule__WhileStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15502:1: ( ( ( rule__WhileStatement__BodyAssignment_3 ) ) )
            // InternalFiacre.g:15503:1: ( ( rule__WhileStatement__BodyAssignment_3 ) )
            {
            // InternalFiacre.g:15503:1: ( ( rule__WhileStatement__BodyAssignment_3 ) )
            // InternalFiacre.g:15504:2: ( rule__WhileStatement__BodyAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getBodyAssignment_3()); 
            }
            // InternalFiacre.g:15505:2: ( rule__WhileStatement__BodyAssignment_3 )
            // InternalFiacre.g:15505:3: rule__WhileStatement__BodyAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__BodyAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getBodyAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__3__Impl"


    // $ANTLR start "rule__WhileStatement__Group__4"
    // InternalFiacre.g:15513:1: rule__WhileStatement__Group__4 : rule__WhileStatement__Group__4__Impl rule__WhileStatement__Group__5 ;
    public final void rule__WhileStatement__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15517:1: ( rule__WhileStatement__Group__4__Impl rule__WhileStatement__Group__5 )
            // InternalFiacre.g:15518:2: rule__WhileStatement__Group__4__Impl rule__WhileStatement__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_79);
            rule__WhileStatement__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__4"


    // $ANTLR start "rule__WhileStatement__Group__4__Impl"
    // InternalFiacre.g:15525:1: rule__WhileStatement__Group__4__Impl : ( 'end' ) ;
    public final void rule__WhileStatement__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15529:1: ( ( 'end' ) )
            // InternalFiacre.g:15530:1: ( 'end' )
            {
            // InternalFiacre.g:15530:1: ( 'end' )
            // InternalFiacre.g:15531:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getEndKeyword_4()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getEndKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__4__Impl"


    // $ANTLR start "rule__WhileStatement__Group__5"
    // InternalFiacre.g:15540:1: rule__WhileStatement__Group__5 : rule__WhileStatement__Group__5__Impl ;
    public final void rule__WhileStatement__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15544:1: ( rule__WhileStatement__Group__5__Impl )
            // InternalFiacre.g:15545:2: rule__WhileStatement__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WhileStatement__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__5"


    // $ANTLR start "rule__WhileStatement__Group__5__Impl"
    // InternalFiacre.g:15551:1: rule__WhileStatement__Group__5__Impl : ( ( 'while' )? ) ;
    public final void rule__WhileStatement__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15555:1: ( ( ( 'while' )? ) )
            // InternalFiacre.g:15556:1: ( ( 'while' )? )
            {
            // InternalFiacre.g:15556:1: ( ( 'while' )? )
            // InternalFiacre.g:15557:2: ( 'while' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getWhileKeyword_5()); 
            }
            // InternalFiacre.g:15558:2: ( 'while' )?
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==67) ) {
                alt140=1;
            }
            switch (alt140) {
                case 1 :
                    // InternalFiacre.g:15558:3: 'while'
                    {
                    match(input,67,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getWhileKeyword_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__Group__5__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__0"
    // InternalFiacre.g:15567:1: rule__ForeachStatement__Group__0 : rule__ForeachStatement__Group__0__Impl rule__ForeachStatement__Group__1 ;
    public final void rule__ForeachStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15571:1: ( rule__ForeachStatement__Group__0__Impl rule__ForeachStatement__Group__1 )
            // InternalFiacre.g:15572:2: rule__ForeachStatement__Group__0__Impl rule__ForeachStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ForeachStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__0"


    // $ANTLR start "rule__ForeachStatement__Group__0__Impl"
    // InternalFiacre.g:15579:1: rule__ForeachStatement__Group__0__Impl : ( 'foreach' ) ;
    public final void rule__ForeachStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15583:1: ( ( 'foreach' ) )
            // InternalFiacre.g:15584:1: ( 'foreach' )
            {
            // InternalFiacre.g:15584:1: ( 'foreach' )
            // InternalFiacre.g:15585:2: 'foreach'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getForeachKeyword_0()); 
            }
            match(input,69,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getForeachKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__0__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__1"
    // InternalFiacre.g:15594:1: rule__ForeachStatement__Group__1 : rule__ForeachStatement__Group__1__Impl rule__ForeachStatement__Group__2 ;
    public final void rule__ForeachStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15598:1: ( rule__ForeachStatement__Group__1__Impl rule__ForeachStatement__Group__2 )
            // InternalFiacre.g:15599:2: rule__ForeachStatement__Group__1__Impl rule__ForeachStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_78);
            rule__ForeachStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__1"


    // $ANTLR start "rule__ForeachStatement__Group__1__Impl"
    // InternalFiacre.g:15606:1: rule__ForeachStatement__Group__1__Impl : ( ( rule__ForeachStatement__VariableAssignment_1 ) ) ;
    public final void rule__ForeachStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15610:1: ( ( ( rule__ForeachStatement__VariableAssignment_1 ) ) )
            // InternalFiacre.g:15611:1: ( ( rule__ForeachStatement__VariableAssignment_1 ) )
            {
            // InternalFiacre.g:15611:1: ( ( rule__ForeachStatement__VariableAssignment_1 ) )
            // InternalFiacre.g:15612:2: ( rule__ForeachStatement__VariableAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getVariableAssignment_1()); 
            }
            // InternalFiacre.g:15613:2: ( rule__ForeachStatement__VariableAssignment_1 )
            // InternalFiacre.g:15613:3: rule__ForeachStatement__VariableAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__VariableAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getVariableAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__1__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__2"
    // InternalFiacre.g:15621:1: rule__ForeachStatement__Group__2 : rule__ForeachStatement__Group__2__Impl rule__ForeachStatement__Group__3 ;
    public final void rule__ForeachStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15625:1: ( rule__ForeachStatement__Group__2__Impl rule__ForeachStatement__Group__3 )
            // InternalFiacre.g:15626:2: rule__ForeachStatement__Group__2__Impl rule__ForeachStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__ForeachStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__2"


    // $ANTLR start "rule__ForeachStatement__Group__2__Impl"
    // InternalFiacre.g:15633:1: rule__ForeachStatement__Group__2__Impl : ( 'do' ) ;
    public final void rule__ForeachStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15637:1: ( ( 'do' ) )
            // InternalFiacre.g:15638:1: ( 'do' )
            {
            // InternalFiacre.g:15638:1: ( 'do' )
            // InternalFiacre.g:15639:2: 'do'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getDoKeyword_2()); 
            }
            match(input,68,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getDoKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__2__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__3"
    // InternalFiacre.g:15648:1: rule__ForeachStatement__Group__3 : rule__ForeachStatement__Group__3__Impl rule__ForeachStatement__Group__4 ;
    public final void rule__ForeachStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15652:1: ( rule__ForeachStatement__Group__3__Impl rule__ForeachStatement__Group__4 )
            // InternalFiacre.g:15653:2: rule__ForeachStatement__Group__3__Impl rule__ForeachStatement__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_60);
            rule__ForeachStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__3"


    // $ANTLR start "rule__ForeachStatement__Group__3__Impl"
    // InternalFiacre.g:15660:1: rule__ForeachStatement__Group__3__Impl : ( ( rule__ForeachStatement__BodyAssignment_3 ) ) ;
    public final void rule__ForeachStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15664:1: ( ( ( rule__ForeachStatement__BodyAssignment_3 ) ) )
            // InternalFiacre.g:15665:1: ( ( rule__ForeachStatement__BodyAssignment_3 ) )
            {
            // InternalFiacre.g:15665:1: ( ( rule__ForeachStatement__BodyAssignment_3 ) )
            // InternalFiacre.g:15666:2: ( rule__ForeachStatement__BodyAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getBodyAssignment_3()); 
            }
            // InternalFiacre.g:15667:2: ( rule__ForeachStatement__BodyAssignment_3 )
            // InternalFiacre.g:15667:3: rule__ForeachStatement__BodyAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__BodyAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getBodyAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__3__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__4"
    // InternalFiacre.g:15675:1: rule__ForeachStatement__Group__4 : rule__ForeachStatement__Group__4__Impl rule__ForeachStatement__Group__5 ;
    public final void rule__ForeachStatement__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15679:1: ( rule__ForeachStatement__Group__4__Impl rule__ForeachStatement__Group__5 )
            // InternalFiacre.g:15680:2: rule__ForeachStatement__Group__4__Impl rule__ForeachStatement__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_80);
            rule__ForeachStatement__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__4"


    // $ANTLR start "rule__ForeachStatement__Group__4__Impl"
    // InternalFiacre.g:15687:1: rule__ForeachStatement__Group__4__Impl : ( 'end' ) ;
    public final void rule__ForeachStatement__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15691:1: ( ( 'end' ) )
            // InternalFiacre.g:15692:1: ( 'end' )
            {
            // InternalFiacre.g:15692:1: ( 'end' )
            // InternalFiacre.g:15693:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getEndKeyword_4()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getEndKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__4__Impl"


    // $ANTLR start "rule__ForeachStatement__Group__5"
    // InternalFiacre.g:15702:1: rule__ForeachStatement__Group__5 : rule__ForeachStatement__Group__5__Impl ;
    public final void rule__ForeachStatement__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15706:1: ( rule__ForeachStatement__Group__5__Impl )
            // InternalFiacre.g:15707:2: rule__ForeachStatement__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ForeachStatement__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__5"


    // $ANTLR start "rule__ForeachStatement__Group__5__Impl"
    // InternalFiacre.g:15713:1: rule__ForeachStatement__Group__5__Impl : ( ( 'foreach' )? ) ;
    public final void rule__ForeachStatement__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15717:1: ( ( ( 'foreach' )? ) )
            // InternalFiacre.g:15718:1: ( ( 'foreach' )? )
            {
            // InternalFiacre.g:15718:1: ( ( 'foreach' )? )
            // InternalFiacre.g:15719:2: ( 'foreach' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getForeachKeyword_5()); 
            }
            // InternalFiacre.g:15720:2: ( 'foreach' )?
            int alt141=2;
            int LA141_0 = input.LA(1);

            if ( (LA141_0==69) ) {
                alt141=1;
            }
            switch (alt141) {
                case 1 :
                    // InternalFiacre.g:15720:3: 'foreach'
                    {
                    match(input,69,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getForeachKeyword_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__Group__5__Impl"


    // $ANTLR start "rule__ToStatement__Group__0"
    // InternalFiacre.g:15729:1: rule__ToStatement__Group__0 : rule__ToStatement__Group__0__Impl rule__ToStatement__Group__1 ;
    public final void rule__ToStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15733:1: ( rule__ToStatement__Group__0__Impl rule__ToStatement__Group__1 )
            // InternalFiacre.g:15734:2: rule__ToStatement__Group__0__Impl rule__ToStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ToStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ToStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ToStatement__Group__0"


    // $ANTLR start "rule__ToStatement__Group__0__Impl"
    // InternalFiacre.g:15741:1: rule__ToStatement__Group__0__Impl : ( 'to' ) ;
    public final void rule__ToStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15745:1: ( ( 'to' ) )
            // InternalFiacre.g:15746:1: ( 'to' )
            {
            // InternalFiacre.g:15746:1: ( 'to' )
            // InternalFiacre.g:15747:2: 'to'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementAccess().getToKeyword_0()); 
            }
            match(input,70,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementAccess().getToKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ToStatement__Group__0__Impl"


    // $ANTLR start "rule__ToStatement__Group__1"
    // InternalFiacre.g:15756:1: rule__ToStatement__Group__1 : rule__ToStatement__Group__1__Impl ;
    public final void rule__ToStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15760:1: ( rule__ToStatement__Group__1__Impl )
            // InternalFiacre.g:15761:2: rule__ToStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ToStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ToStatement__Group__1"


    // $ANTLR start "rule__ToStatement__Group__1__Impl"
    // InternalFiacre.g:15767:1: rule__ToStatement__Group__1__Impl : ( ( rule__ToStatement__StateAssignment_1 ) ) ;
    public final void rule__ToStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15771:1: ( ( ( rule__ToStatement__StateAssignment_1 ) ) )
            // InternalFiacre.g:15772:1: ( ( rule__ToStatement__StateAssignment_1 ) )
            {
            // InternalFiacre.g:15772:1: ( ( rule__ToStatement__StateAssignment_1 ) )
            // InternalFiacre.g:15773:2: ( rule__ToStatement__StateAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementAccess().getStateAssignment_1()); 
            }
            // InternalFiacre.g:15774:2: ( rule__ToStatement__StateAssignment_1 )
            // InternalFiacre.g:15774:3: rule__ToStatement__StateAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ToStatement__StateAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementAccess().getStateAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ToStatement__Group__1__Impl"


    // $ANTLR start "rule__CaseStatement__Group__0"
    // InternalFiacre.g:15783:1: rule__CaseStatement__Group__0 : rule__CaseStatement__Group__0__Impl rule__CaseStatement__Group__1 ;
    public final void rule__CaseStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15787:1: ( rule__CaseStatement__Group__0__Impl rule__CaseStatement__Group__1 )
            // InternalFiacre.g:15788:2: rule__CaseStatement__Group__0__Impl rule__CaseStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__CaseStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__0"


    // $ANTLR start "rule__CaseStatement__Group__0__Impl"
    // InternalFiacre.g:15795:1: rule__CaseStatement__Group__0__Impl : ( 'case' ) ;
    public final void rule__CaseStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15799:1: ( ( 'case' ) )
            // InternalFiacre.g:15800:1: ( 'case' )
            {
            // InternalFiacre.g:15800:1: ( 'case' )
            // InternalFiacre.g:15801:2: 'case'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getCaseKeyword_0()); 
            }
            match(input,71,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getCaseKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__0__Impl"


    // $ANTLR start "rule__CaseStatement__Group__1"
    // InternalFiacre.g:15810:1: rule__CaseStatement__Group__1 : rule__CaseStatement__Group__1__Impl rule__CaseStatement__Group__2 ;
    public final void rule__CaseStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15814:1: ( rule__CaseStatement__Group__1__Impl rule__CaseStatement__Group__2 )
            // InternalFiacre.g:15815:2: rule__CaseStatement__Group__1__Impl rule__CaseStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_24);
            rule__CaseStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__1"


    // $ANTLR start "rule__CaseStatement__Group__1__Impl"
    // InternalFiacre.g:15822:1: rule__CaseStatement__Group__1__Impl : ( ( rule__CaseStatement__ValueAssignment_1 ) ) ;
    public final void rule__CaseStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15826:1: ( ( ( rule__CaseStatement__ValueAssignment_1 ) ) )
            // InternalFiacre.g:15827:1: ( ( rule__CaseStatement__ValueAssignment_1 ) )
            {
            // InternalFiacre.g:15827:1: ( ( rule__CaseStatement__ValueAssignment_1 ) )
            // InternalFiacre.g:15828:2: ( rule__CaseStatement__ValueAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getValueAssignment_1()); 
            }
            // InternalFiacre.g:15829:2: ( rule__CaseStatement__ValueAssignment_1 )
            // InternalFiacre.g:15829:3: rule__CaseStatement__ValueAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__ValueAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getValueAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__1__Impl"


    // $ANTLR start "rule__CaseStatement__Group__2"
    // InternalFiacre.g:15837:1: rule__CaseStatement__Group__2 : rule__CaseStatement__Group__2__Impl rule__CaseStatement__Group__3 ;
    public final void rule__CaseStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15841:1: ( rule__CaseStatement__Group__2__Impl rule__CaseStatement__Group__3 )
            // InternalFiacre.g:15842:2: rule__CaseStatement__Group__2__Impl rule__CaseStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__CaseStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__2"


    // $ANTLR start "rule__CaseStatement__Group__2__Impl"
    // InternalFiacre.g:15849:1: rule__CaseStatement__Group__2__Impl : ( 'of' ) ;
    public final void rule__CaseStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15853:1: ( ( 'of' ) )
            // InternalFiacre.g:15854:1: ( 'of' )
            {
            // InternalFiacre.g:15854:1: ( 'of' )
            // InternalFiacre.g:15855:2: 'of'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getOfKeyword_2()); 
            }
            match(input,29,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getOfKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__2__Impl"


    // $ANTLR start "rule__CaseStatement__Group__3"
    // InternalFiacre.g:15864:1: rule__CaseStatement__Group__3 : rule__CaseStatement__Group__3__Impl rule__CaseStatement__Group__4 ;
    public final void rule__CaseStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15868:1: ( rule__CaseStatement__Group__3__Impl rule__CaseStatement__Group__4 )
            // InternalFiacre.g:15869:2: rule__CaseStatement__Group__3__Impl rule__CaseStatement__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_81);
            rule__CaseStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__3"


    // $ANTLR start "rule__CaseStatement__Group__3__Impl"
    // InternalFiacre.g:15876:1: rule__CaseStatement__Group__3__Impl : ( ( rule__CaseStatement__PatternAssignment_3 ) ) ;
    public final void rule__CaseStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15880:1: ( ( ( rule__CaseStatement__PatternAssignment_3 ) ) )
            // InternalFiacre.g:15881:1: ( ( rule__CaseStatement__PatternAssignment_3 ) )
            {
            // InternalFiacre.g:15881:1: ( ( rule__CaseStatement__PatternAssignment_3 ) )
            // InternalFiacre.g:15882:2: ( rule__CaseStatement__PatternAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getPatternAssignment_3()); 
            }
            // InternalFiacre.g:15883:2: ( rule__CaseStatement__PatternAssignment_3 )
            // InternalFiacre.g:15883:3: rule__CaseStatement__PatternAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__PatternAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getPatternAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__3__Impl"


    // $ANTLR start "rule__CaseStatement__Group__4"
    // InternalFiacre.g:15891:1: rule__CaseStatement__Group__4 : rule__CaseStatement__Group__4__Impl rule__CaseStatement__Group__5 ;
    public final void rule__CaseStatement__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15895:1: ( rule__CaseStatement__Group__4__Impl rule__CaseStatement__Group__5 )
            // InternalFiacre.g:15896:2: rule__CaseStatement__Group__4__Impl rule__CaseStatement__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__CaseStatement__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__4"


    // $ANTLR start "rule__CaseStatement__Group__4__Impl"
    // InternalFiacre.g:15903:1: rule__CaseStatement__Group__4__Impl : ( '->' ) ;
    public final void rule__CaseStatement__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15907:1: ( ( '->' ) )
            // InternalFiacre.g:15908:1: ( '->' )
            {
            // InternalFiacre.g:15908:1: ( '->' )
            // InternalFiacre.g:15909:2: '->'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getHyphenMinusGreaterThanSignKeyword_4()); 
            }
            match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getHyphenMinusGreaterThanSignKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__4__Impl"


    // $ANTLR start "rule__CaseStatement__Group__5"
    // InternalFiacre.g:15918:1: rule__CaseStatement__Group__5 : rule__CaseStatement__Group__5__Impl rule__CaseStatement__Group__6 ;
    public final void rule__CaseStatement__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15922:1: ( rule__CaseStatement__Group__5__Impl rule__CaseStatement__Group__6 )
            // InternalFiacre.g:15923:2: rule__CaseStatement__Group__5__Impl rule__CaseStatement__Group__6
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__CaseStatement__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__6();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__5"


    // $ANTLR start "rule__CaseStatement__Group__5__Impl"
    // InternalFiacre.g:15930:1: rule__CaseStatement__Group__5__Impl : ( ( rule__CaseStatement__BodyAssignment_5 ) ) ;
    public final void rule__CaseStatement__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15934:1: ( ( ( rule__CaseStatement__BodyAssignment_5 ) ) )
            // InternalFiacre.g:15935:1: ( ( rule__CaseStatement__BodyAssignment_5 ) )
            {
            // InternalFiacre.g:15935:1: ( ( rule__CaseStatement__BodyAssignment_5 ) )
            // InternalFiacre.g:15936:2: ( rule__CaseStatement__BodyAssignment_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getBodyAssignment_5()); 
            }
            // InternalFiacre.g:15937:2: ( rule__CaseStatement__BodyAssignment_5 )
            // InternalFiacre.g:15937:3: rule__CaseStatement__BodyAssignment_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__BodyAssignment_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getBodyAssignment_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__5__Impl"


    // $ANTLR start "rule__CaseStatement__Group__6"
    // InternalFiacre.g:15945:1: rule__CaseStatement__Group__6 : rule__CaseStatement__Group__6__Impl rule__CaseStatement__Group__7 ;
    public final void rule__CaseStatement__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15949:1: ( rule__CaseStatement__Group__6__Impl rule__CaseStatement__Group__7 )
            // InternalFiacre.g:15950:2: rule__CaseStatement__Group__6__Impl rule__CaseStatement__Group__7
            {
            pushFollow(FollowSets000.FOLLOW_33);
            rule__CaseStatement__Group__6__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__7();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__6"


    // $ANTLR start "rule__CaseStatement__Group__6__Impl"
    // InternalFiacre.g:15957:1: rule__CaseStatement__Group__6__Impl : ( ( rule__CaseStatement__Group_6__0 )* ) ;
    public final void rule__CaseStatement__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15961:1: ( ( ( rule__CaseStatement__Group_6__0 )* ) )
            // InternalFiacre.g:15962:1: ( ( rule__CaseStatement__Group_6__0 )* )
            {
            // InternalFiacre.g:15962:1: ( ( rule__CaseStatement__Group_6__0 )* )
            // InternalFiacre.g:15963:2: ( rule__CaseStatement__Group_6__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getGroup_6()); 
            }
            // InternalFiacre.g:15964:2: ( rule__CaseStatement__Group_6__0 )*
            loop142:
            do {
                int alt142=2;
                int LA142_0 = input.LA(1);

                if ( (LA142_0==17) ) {
                    alt142=1;
                }


                switch (alt142) {
            	case 1 :
            	    // InternalFiacre.g:15964:3: rule__CaseStatement__Group_6__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_11);
            	    rule__CaseStatement__Group_6__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop142;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getGroup_6()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__6__Impl"


    // $ANTLR start "rule__CaseStatement__Group__7"
    // InternalFiacre.g:15972:1: rule__CaseStatement__Group__7 : rule__CaseStatement__Group__7__Impl rule__CaseStatement__Group__8 ;
    public final void rule__CaseStatement__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15976:1: ( rule__CaseStatement__Group__7__Impl rule__CaseStatement__Group__8 )
            // InternalFiacre.g:15977:2: rule__CaseStatement__Group__7__Impl rule__CaseStatement__Group__8
            {
            pushFollow(FollowSets000.FOLLOW_82);
            rule__CaseStatement__Group__7__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__8();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__7"


    // $ANTLR start "rule__CaseStatement__Group__7__Impl"
    // InternalFiacre.g:15984:1: rule__CaseStatement__Group__7__Impl : ( 'end' ) ;
    public final void rule__CaseStatement__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:15988:1: ( ( 'end' ) )
            // InternalFiacre.g:15989:1: ( 'end' )
            {
            // InternalFiacre.g:15989:1: ( 'end' )
            // InternalFiacre.g:15990:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getEndKeyword_7()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getEndKeyword_7()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__7__Impl"


    // $ANTLR start "rule__CaseStatement__Group__8"
    // InternalFiacre.g:15999:1: rule__CaseStatement__Group__8 : rule__CaseStatement__Group__8__Impl ;
    public final void rule__CaseStatement__Group__8() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16003:1: ( rule__CaseStatement__Group__8__Impl )
            // InternalFiacre.g:16004:2: rule__CaseStatement__Group__8__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group__8__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__8"


    // $ANTLR start "rule__CaseStatement__Group__8__Impl"
    // InternalFiacre.g:16010:1: rule__CaseStatement__Group__8__Impl : ( ( 'case' )? ) ;
    public final void rule__CaseStatement__Group__8__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16014:1: ( ( ( 'case' )? ) )
            // InternalFiacre.g:16015:1: ( ( 'case' )? )
            {
            // InternalFiacre.g:16015:1: ( ( 'case' )? )
            // InternalFiacre.g:16016:2: ( 'case' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getCaseKeyword_8()); 
            }
            // InternalFiacre.g:16017:2: ( 'case' )?
            int alt143=2;
            int LA143_0 = input.LA(1);

            if ( (LA143_0==71) ) {
                alt143=1;
            }
            switch (alt143) {
                case 1 :
                    // InternalFiacre.g:16017:3: 'case'
                    {
                    match(input,71,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getCaseKeyword_8()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group__8__Impl"


    // $ANTLR start "rule__CaseStatement__Group_6__0"
    // InternalFiacre.g:16026:1: rule__CaseStatement__Group_6__0 : rule__CaseStatement__Group_6__0__Impl rule__CaseStatement__Group_6__1 ;
    public final void rule__CaseStatement__Group_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16030:1: ( rule__CaseStatement__Group_6__0__Impl rule__CaseStatement__Group_6__1 )
            // InternalFiacre.g:16031:2: rule__CaseStatement__Group_6__0__Impl rule__CaseStatement__Group_6__1
            {
            pushFollow(FollowSets000.FOLLOW_63);
            rule__CaseStatement__Group_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__0"


    // $ANTLR start "rule__CaseStatement__Group_6__0__Impl"
    // InternalFiacre.g:16038:1: rule__CaseStatement__Group_6__0__Impl : ( '|' ) ;
    public final void rule__CaseStatement__Group_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16042:1: ( ( '|' ) )
            // InternalFiacre.g:16043:1: ( '|' )
            {
            // InternalFiacre.g:16043:1: ( '|' )
            // InternalFiacre.g:16044:2: '|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getVerticalLineKeyword_6_0()); 
            }
            match(input,17,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getVerticalLineKeyword_6_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__0__Impl"


    // $ANTLR start "rule__CaseStatement__Group_6__1"
    // InternalFiacre.g:16053:1: rule__CaseStatement__Group_6__1 : rule__CaseStatement__Group_6__1__Impl rule__CaseStatement__Group_6__2 ;
    public final void rule__CaseStatement__Group_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16057:1: ( rule__CaseStatement__Group_6__1__Impl rule__CaseStatement__Group_6__2 )
            // InternalFiacre.g:16058:2: rule__CaseStatement__Group_6__1__Impl rule__CaseStatement__Group_6__2
            {
            pushFollow(FollowSets000.FOLLOW_81);
            rule__CaseStatement__Group_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group_6__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__1"


    // $ANTLR start "rule__CaseStatement__Group_6__1__Impl"
    // InternalFiacre.g:16065:1: rule__CaseStatement__Group_6__1__Impl : ( ( rule__CaseStatement__PatternAssignment_6_1 ) ) ;
    public final void rule__CaseStatement__Group_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16069:1: ( ( ( rule__CaseStatement__PatternAssignment_6_1 ) ) )
            // InternalFiacre.g:16070:1: ( ( rule__CaseStatement__PatternAssignment_6_1 ) )
            {
            // InternalFiacre.g:16070:1: ( ( rule__CaseStatement__PatternAssignment_6_1 ) )
            // InternalFiacre.g:16071:2: ( rule__CaseStatement__PatternAssignment_6_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getPatternAssignment_6_1()); 
            }
            // InternalFiacre.g:16072:2: ( rule__CaseStatement__PatternAssignment_6_1 )
            // InternalFiacre.g:16072:3: rule__CaseStatement__PatternAssignment_6_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__PatternAssignment_6_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getPatternAssignment_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__1__Impl"


    // $ANTLR start "rule__CaseStatement__Group_6__2"
    // InternalFiacre.g:16080:1: rule__CaseStatement__Group_6__2 : rule__CaseStatement__Group_6__2__Impl rule__CaseStatement__Group_6__3 ;
    public final void rule__CaseStatement__Group_6__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16084:1: ( rule__CaseStatement__Group_6__2__Impl rule__CaseStatement__Group_6__3 )
            // InternalFiacre.g:16085:2: rule__CaseStatement__Group_6__2__Impl rule__CaseStatement__Group_6__3
            {
            pushFollow(FollowSets000.FOLLOW_17);
            rule__CaseStatement__Group_6__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group_6__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__2"


    // $ANTLR start "rule__CaseStatement__Group_6__2__Impl"
    // InternalFiacre.g:16092:1: rule__CaseStatement__Group_6__2__Impl : ( '->' ) ;
    public final void rule__CaseStatement__Group_6__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16096:1: ( ( '->' ) )
            // InternalFiacre.g:16097:1: ( '->' )
            {
            // InternalFiacre.g:16097:1: ( '->' )
            // InternalFiacre.g:16098:2: '->'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getHyphenMinusGreaterThanSignKeyword_6_2()); 
            }
            match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getHyphenMinusGreaterThanSignKeyword_6_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__2__Impl"


    // $ANTLR start "rule__CaseStatement__Group_6__3"
    // InternalFiacre.g:16107:1: rule__CaseStatement__Group_6__3 : rule__CaseStatement__Group_6__3__Impl ;
    public final void rule__CaseStatement__Group_6__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16111:1: ( rule__CaseStatement__Group_6__3__Impl )
            // InternalFiacre.g:16112:2: rule__CaseStatement__Group_6__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__Group_6__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__3"


    // $ANTLR start "rule__CaseStatement__Group_6__3__Impl"
    // InternalFiacre.g:16118:1: rule__CaseStatement__Group_6__3__Impl : ( ( rule__CaseStatement__BodyAssignment_6_3 ) ) ;
    public final void rule__CaseStatement__Group_6__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16122:1: ( ( ( rule__CaseStatement__BodyAssignment_6_3 ) ) )
            // InternalFiacre.g:16123:1: ( ( rule__CaseStatement__BodyAssignment_6_3 ) )
            {
            // InternalFiacre.g:16123:1: ( ( rule__CaseStatement__BodyAssignment_6_3 ) )
            // InternalFiacre.g:16124:2: ( rule__CaseStatement__BodyAssignment_6_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getBodyAssignment_6_3()); 
            }
            // InternalFiacre.g:16125:2: ( rule__CaseStatement__BodyAssignment_6_3 )
            // InternalFiacre.g:16125:3: rule__CaseStatement__BodyAssignment_6_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CaseStatement__BodyAssignment_6_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getBodyAssignment_6_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__Group_6__3__Impl"


    // $ANTLR start "rule__LoopStatement__Group__0"
    // InternalFiacre.g:16134:1: rule__LoopStatement__Group__0 : rule__LoopStatement__Group__0__Impl rule__LoopStatement__Group__1 ;
    public final void rule__LoopStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16138:1: ( rule__LoopStatement__Group__0__Impl rule__LoopStatement__Group__1 )
            // InternalFiacre.g:16139:2: rule__LoopStatement__Group__0__Impl rule__LoopStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_83);
            rule__LoopStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LoopStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LoopStatement__Group__0"


    // $ANTLR start "rule__LoopStatement__Group__0__Impl"
    // InternalFiacre.g:16146:1: rule__LoopStatement__Group__0__Impl : ( () ) ;
    public final void rule__LoopStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16150:1: ( ( () ) )
            // InternalFiacre.g:16151:1: ( () )
            {
            // InternalFiacre.g:16151:1: ( () )
            // InternalFiacre.g:16152:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLoopStatementAccess().getLoopStatementAction_0()); 
            }
            // InternalFiacre.g:16153:2: ()
            // InternalFiacre.g:16153:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLoopStatementAccess().getLoopStatementAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LoopStatement__Group__0__Impl"


    // $ANTLR start "rule__LoopStatement__Group__1"
    // InternalFiacre.g:16161:1: rule__LoopStatement__Group__1 : rule__LoopStatement__Group__1__Impl ;
    public final void rule__LoopStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16165:1: ( rule__LoopStatement__Group__1__Impl )
            // InternalFiacre.g:16166:2: rule__LoopStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LoopStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LoopStatement__Group__1"


    // $ANTLR start "rule__LoopStatement__Group__1__Impl"
    // InternalFiacre.g:16172:1: rule__LoopStatement__Group__1__Impl : ( 'loop' ) ;
    public final void rule__LoopStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16176:1: ( ( 'loop' ) )
            // InternalFiacre.g:16177:1: ( 'loop' )
            {
            // InternalFiacre.g:16177:1: ( 'loop' )
            // InternalFiacre.g:16178:2: 'loop'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLoopStatementAccess().getLoopKeyword_1()); 
            }
            match(input,72,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLoopStatementAccess().getLoopKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LoopStatement__Group__1__Impl"


    // $ANTLR start "rule__OnStatement__Group__0"
    // InternalFiacre.g:16188:1: rule__OnStatement__Group__0 : rule__OnStatement__Group__0__Impl rule__OnStatement__Group__1 ;
    public final void rule__OnStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16192:1: ( rule__OnStatement__Group__0__Impl rule__OnStatement__Group__1 )
            // InternalFiacre.g:16193:2: rule__OnStatement__Group__0__Impl rule__OnStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__OnStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__OnStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OnStatement__Group__0"


    // $ANTLR start "rule__OnStatement__Group__0__Impl"
    // InternalFiacre.g:16200:1: rule__OnStatement__Group__0__Impl : ( 'on' ) ;
    public final void rule__OnStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16204:1: ( ( 'on' ) )
            // InternalFiacre.g:16205:1: ( 'on' )
            {
            // InternalFiacre.g:16205:1: ( 'on' )
            // InternalFiacre.g:16206:2: 'on'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getOnStatementAccess().getOnKeyword_0()); 
            }
            match(input,73,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getOnStatementAccess().getOnKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OnStatement__Group__0__Impl"


    // $ANTLR start "rule__OnStatement__Group__1"
    // InternalFiacre.g:16215:1: rule__OnStatement__Group__1 : rule__OnStatement__Group__1__Impl ;
    public final void rule__OnStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16219:1: ( rule__OnStatement__Group__1__Impl )
            // InternalFiacre.g:16220:2: rule__OnStatement__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__OnStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OnStatement__Group__1"


    // $ANTLR start "rule__OnStatement__Group__1__Impl"
    // InternalFiacre.g:16226:1: rule__OnStatement__Group__1__Impl : ( ( rule__OnStatement__ConditionAssignment_1 ) ) ;
    public final void rule__OnStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16230:1: ( ( ( rule__OnStatement__ConditionAssignment_1 ) ) )
            // InternalFiacre.g:16231:1: ( ( rule__OnStatement__ConditionAssignment_1 ) )
            {
            // InternalFiacre.g:16231:1: ( ( rule__OnStatement__ConditionAssignment_1 ) )
            // InternalFiacre.g:16232:2: ( rule__OnStatement__ConditionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getOnStatementAccess().getConditionAssignment_1()); 
            }
            // InternalFiacre.g:16233:2: ( rule__OnStatement__ConditionAssignment_1 )
            // InternalFiacre.g:16233:3: rule__OnStatement__ConditionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__OnStatement__ConditionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getOnStatementAccess().getConditionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OnStatement__Group__1__Impl"


    // $ANTLR start "rule__WaitStatement__Group__0"
    // InternalFiacre.g:16242:1: rule__WaitStatement__Group__0 : rule__WaitStatement__Group__0__Impl rule__WaitStatement__Group__1 ;
    public final void rule__WaitStatement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16246:1: ( rule__WaitStatement__Group__0__Impl rule__WaitStatement__Group__1 )
            // InternalFiacre.g:16247:2: rule__WaitStatement__Group__0__Impl rule__WaitStatement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__WaitStatement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__0"


    // $ANTLR start "rule__WaitStatement__Group__0__Impl"
    // InternalFiacre.g:16254:1: rule__WaitStatement__Group__0__Impl : ( 'wait' ) ;
    public final void rule__WaitStatement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16258:1: ( ( 'wait' ) )
            // InternalFiacre.g:16259:1: ( 'wait' )
            {
            // InternalFiacre.g:16259:1: ( 'wait' )
            // InternalFiacre.g:16260:2: 'wait'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getWaitKeyword_0()); 
            }
            match(input,74,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getWaitKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__0__Impl"


    // $ANTLR start "rule__WaitStatement__Group__1"
    // InternalFiacre.g:16269:1: rule__WaitStatement__Group__1 : rule__WaitStatement__Group__1__Impl rule__WaitStatement__Group__2 ;
    public final void rule__WaitStatement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16273:1: ( rule__WaitStatement__Group__1__Impl rule__WaitStatement__Group__2 )
            // InternalFiacre.g:16274:2: rule__WaitStatement__Group__1__Impl rule__WaitStatement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__WaitStatement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__1"


    // $ANTLR start "rule__WaitStatement__Group__1__Impl"
    // InternalFiacre.g:16281:1: rule__WaitStatement__Group__1__Impl : ( ( rule__WaitStatement__LeftAssignment_1 ) ) ;
    public final void rule__WaitStatement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16285:1: ( ( ( rule__WaitStatement__LeftAssignment_1 ) ) )
            // InternalFiacre.g:16286:1: ( ( rule__WaitStatement__LeftAssignment_1 ) )
            {
            // InternalFiacre.g:16286:1: ( ( rule__WaitStatement__LeftAssignment_1 ) )
            // InternalFiacre.g:16287:2: ( rule__WaitStatement__LeftAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getLeftAssignment_1()); 
            }
            // InternalFiacre.g:16288:2: ( rule__WaitStatement__LeftAssignment_1 )
            // InternalFiacre.g:16288:3: rule__WaitStatement__LeftAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__LeftAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getLeftAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__1__Impl"


    // $ANTLR start "rule__WaitStatement__Group__2"
    // InternalFiacre.g:16296:1: rule__WaitStatement__Group__2 : rule__WaitStatement__Group__2__Impl rule__WaitStatement__Group__3 ;
    public final void rule__WaitStatement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16300:1: ( rule__WaitStatement__Group__2__Impl rule__WaitStatement__Group__3 )
            // InternalFiacre.g:16301:2: rule__WaitStatement__Group__2__Impl rule__WaitStatement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__WaitStatement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__2"


    // $ANTLR start "rule__WaitStatement__Group__2__Impl"
    // InternalFiacre.g:16308:1: rule__WaitStatement__Group__2__Impl : ( ',' ) ;
    public final void rule__WaitStatement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16312:1: ( ( ',' ) )
            // InternalFiacre.g:16313:1: ( ',' )
            {
            // InternalFiacre.g:16313:1: ( ',' )
            // InternalFiacre.g:16314:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getCommaKeyword_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getCommaKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__2__Impl"


    // $ANTLR start "rule__WaitStatement__Group__3"
    // InternalFiacre.g:16323:1: rule__WaitStatement__Group__3 : rule__WaitStatement__Group__3__Impl ;
    public final void rule__WaitStatement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16327:1: ( rule__WaitStatement__Group__3__Impl )
            // InternalFiacre.g:16328:2: rule__WaitStatement__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__3"


    // $ANTLR start "rule__WaitStatement__Group__3__Impl"
    // InternalFiacre.g:16334:1: rule__WaitStatement__Group__3__Impl : ( ( rule__WaitStatement__RightAssignment_3 ) ) ;
    public final void rule__WaitStatement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16338:1: ( ( ( rule__WaitStatement__RightAssignment_3 ) ) )
            // InternalFiacre.g:16339:1: ( ( rule__WaitStatement__RightAssignment_3 ) )
            {
            // InternalFiacre.g:16339:1: ( ( rule__WaitStatement__RightAssignment_3 ) )
            // InternalFiacre.g:16340:2: ( rule__WaitStatement__RightAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getRightAssignment_3()); 
            }
            // InternalFiacre.g:16341:2: ( rule__WaitStatement__RightAssignment_3 )
            // InternalFiacre.g:16341:3: rule__WaitStatement__RightAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__WaitStatement__RightAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getRightAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__Group__3__Impl"


    // $ANTLR start "rule__Composition__Group__0"
    // InternalFiacre.g:16350:1: rule__Composition__Group__0 : rule__Composition__Group__0__Impl rule__Composition__Group__1 ;
    public final void rule__Composition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16354:1: ( rule__Composition__Group__0__Impl rule__Composition__Group__1 )
            // InternalFiacre.g:16355:2: rule__Composition__Group__0__Impl rule__Composition__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_84);
            rule__Composition__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__0"


    // $ANTLR start "rule__Composition__Group__0__Impl"
    // InternalFiacre.g:16362:1: rule__Composition__Group__0__Impl : ( 'par' ) ;
    public final void rule__Composition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16366:1: ( ( 'par' ) )
            // InternalFiacre.g:16367:1: ( 'par' )
            {
            // InternalFiacre.g:16367:1: ( 'par' )
            // InternalFiacre.g:16368:2: 'par'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getParKeyword_0()); 
            }
            match(input,75,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getParKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__0__Impl"


    // $ANTLR start "rule__Composition__Group__1"
    // InternalFiacre.g:16377:1: rule__Composition__Group__1 : rule__Composition__Group__1__Impl rule__Composition__Group__2 ;
    public final void rule__Composition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16381:1: ( rule__Composition__Group__1__Impl rule__Composition__Group__2 )
            // InternalFiacre.g:16382:2: rule__Composition__Group__1__Impl rule__Composition__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_84);
            rule__Composition__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__1"


    // $ANTLR start "rule__Composition__Group__1__Impl"
    // InternalFiacre.g:16389:1: rule__Composition__Group__1__Impl : ( ( rule__Composition__Group_1__0 )? ) ;
    public final void rule__Composition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16393:1: ( ( ( rule__Composition__Group_1__0 )? ) )
            // InternalFiacre.g:16394:1: ( ( rule__Composition__Group_1__0 )? )
            {
            // InternalFiacre.g:16394:1: ( ( rule__Composition__Group_1__0 )? )
            // InternalFiacre.g:16395:2: ( rule__Composition__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:16396:2: ( rule__Composition__Group_1__0 )?
            int alt144=2;
            alt144 = dfa144.predict(input);
            switch (alt144) {
                case 1 :
                    // InternalFiacre.g:16396:3: rule__Composition__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Composition__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__1__Impl"


    // $ANTLR start "rule__Composition__Group__2"
    // InternalFiacre.g:16404:1: rule__Composition__Group__2 : rule__Composition__Group__2__Impl rule__Composition__Group__3 ;
    public final void rule__Composition__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16408:1: ( rule__Composition__Group__2__Impl rule__Composition__Group__3 )
            // InternalFiacre.g:16409:2: rule__Composition__Group__2__Impl rule__Composition__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_85);
            rule__Composition__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__2"


    // $ANTLR start "rule__Composition__Group__2__Impl"
    // InternalFiacre.g:16416:1: rule__Composition__Group__2__Impl : ( ( rule__Composition__BlocksAssignment_2 ) ) ;
    public final void rule__Composition__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16420:1: ( ( ( rule__Composition__BlocksAssignment_2 ) ) )
            // InternalFiacre.g:16421:1: ( ( rule__Composition__BlocksAssignment_2 ) )
            {
            // InternalFiacre.g:16421:1: ( ( rule__Composition__BlocksAssignment_2 ) )
            // InternalFiacre.g:16422:2: ( rule__Composition__BlocksAssignment_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getBlocksAssignment_2()); 
            }
            // InternalFiacre.g:16423:2: ( rule__Composition__BlocksAssignment_2 )
            // InternalFiacre.g:16423:3: rule__Composition__BlocksAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__BlocksAssignment_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getBlocksAssignment_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__2__Impl"


    // $ANTLR start "rule__Composition__Group__3"
    // InternalFiacre.g:16431:1: rule__Composition__Group__3 : rule__Composition__Group__3__Impl rule__Composition__Group__4 ;
    public final void rule__Composition__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16435:1: ( rule__Composition__Group__3__Impl rule__Composition__Group__4 )
            // InternalFiacre.g:16436:2: rule__Composition__Group__3__Impl rule__Composition__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_85);
            rule__Composition__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__3"


    // $ANTLR start "rule__Composition__Group__3__Impl"
    // InternalFiacre.g:16443:1: rule__Composition__Group__3__Impl : ( ( rule__Composition__Group_3__0 )* ) ;
    public final void rule__Composition__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16447:1: ( ( ( rule__Composition__Group_3__0 )* ) )
            // InternalFiacre.g:16448:1: ( ( rule__Composition__Group_3__0 )* )
            {
            // InternalFiacre.g:16448:1: ( ( rule__Composition__Group_3__0 )* )
            // InternalFiacre.g:16449:2: ( rule__Composition__Group_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getGroup_3()); 
            }
            // InternalFiacre.g:16450:2: ( rule__Composition__Group_3__0 )*
            loop145:
            do {
                int alt145=2;
                int LA145_0 = input.LA(1);

                if ( (LA145_0==76) ) {
                    alt145=1;
                }


                switch (alt145) {
            	case 1 :
            	    // InternalFiacre.g:16450:3: rule__Composition__Group_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_86);
            	    rule__Composition__Group_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop145;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getGroup_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__3__Impl"


    // $ANTLR start "rule__Composition__Group__4"
    // InternalFiacre.g:16458:1: rule__Composition__Group__4 : rule__Composition__Group__4__Impl rule__Composition__Group__5 ;
    public final void rule__Composition__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16462:1: ( rule__Composition__Group__4__Impl rule__Composition__Group__5 )
            // InternalFiacre.g:16463:2: rule__Composition__Group__4__Impl rule__Composition__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_87);
            rule__Composition__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__4"


    // $ANTLR start "rule__Composition__Group__4__Impl"
    // InternalFiacre.g:16470:1: rule__Composition__Group__4__Impl : ( 'end' ) ;
    public final void rule__Composition__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16474:1: ( ( 'end' ) )
            // InternalFiacre.g:16475:1: ( 'end' )
            {
            // InternalFiacre.g:16475:1: ( 'end' )
            // InternalFiacre.g:16476:2: 'end'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getEndKeyword_4()); 
            }
            match(input,36,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getEndKeyword_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__4__Impl"


    // $ANTLR start "rule__Composition__Group__5"
    // InternalFiacre.g:16485:1: rule__Composition__Group__5 : rule__Composition__Group__5__Impl ;
    public final void rule__Composition__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16489:1: ( rule__Composition__Group__5__Impl )
            // InternalFiacre.g:16490:2: rule__Composition__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__5"


    // $ANTLR start "rule__Composition__Group__5__Impl"
    // InternalFiacre.g:16496:1: rule__Composition__Group__5__Impl : ( ( 'par' )? ) ;
    public final void rule__Composition__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16500:1: ( ( ( 'par' )? ) )
            // InternalFiacre.g:16501:1: ( ( 'par' )? )
            {
            // InternalFiacre.g:16501:1: ( ( 'par' )? )
            // InternalFiacre.g:16502:2: ( 'par' )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getParKeyword_5()); 
            }
            // InternalFiacre.g:16503:2: ( 'par' )?
            int alt146=2;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==75) ) {
                alt146=1;
            }
            switch (alt146) {
                case 1 :
                    // InternalFiacre.g:16503:3: 'par'
                    {
                    match(input,75,FollowSets000.FOLLOW_2); if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getParKeyword_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group__5__Impl"


    // $ANTLR start "rule__Composition__Group_1__0"
    // InternalFiacre.g:16512:1: rule__Composition__Group_1__0 : rule__Composition__Group_1__0__Impl rule__Composition__Group_1__1 ;
    public final void rule__Composition__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16516:1: ( rule__Composition__Group_1__0__Impl rule__Composition__Group_1__1 )
            // InternalFiacre.g:16517:2: rule__Composition__Group_1__0__Impl rule__Composition__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_46);
            rule__Composition__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_1__0"


    // $ANTLR start "rule__Composition__Group_1__0__Impl"
    // InternalFiacre.g:16524:1: rule__Composition__Group_1__0__Impl : ( ( rule__Composition__GlobalAssignment_1_0 ) ) ;
    public final void rule__Composition__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16528:1: ( ( ( rule__Composition__GlobalAssignment_1_0 ) ) )
            // InternalFiacre.g:16529:1: ( ( rule__Composition__GlobalAssignment_1_0 ) )
            {
            // InternalFiacre.g:16529:1: ( ( rule__Composition__GlobalAssignment_1_0 ) )
            // InternalFiacre.g:16530:2: ( rule__Composition__GlobalAssignment_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getGlobalAssignment_1_0()); 
            }
            // InternalFiacre.g:16531:2: ( rule__Composition__GlobalAssignment_1_0 )
            // InternalFiacre.g:16531:3: rule__Composition__GlobalAssignment_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__GlobalAssignment_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getGlobalAssignment_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_1__0__Impl"


    // $ANTLR start "rule__Composition__Group_1__1"
    // InternalFiacre.g:16539:1: rule__Composition__Group_1__1 : rule__Composition__Group_1__1__Impl ;
    public final void rule__Composition__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16543:1: ( rule__Composition__Group_1__1__Impl )
            // InternalFiacre.g:16544:2: rule__Composition__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_1__1"


    // $ANTLR start "rule__Composition__Group_1__1__Impl"
    // InternalFiacre.g:16550:1: rule__Composition__Group_1__1__Impl : ( 'in' ) ;
    public final void rule__Composition__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16554:1: ( ( 'in' ) )
            // InternalFiacre.g:16555:1: ( 'in' )
            {
            // InternalFiacre.g:16555:1: ( 'in' )
            // InternalFiacre.g:16556:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getInKeyword_1_1()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getInKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_1__1__Impl"


    // $ANTLR start "rule__Composition__Group_3__0"
    // InternalFiacre.g:16566:1: rule__Composition__Group_3__0 : rule__Composition__Group_3__0__Impl rule__Composition__Group_3__1 ;
    public final void rule__Composition__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16570:1: ( rule__Composition__Group_3__0__Impl rule__Composition__Group_3__1 )
            // InternalFiacre.g:16571:2: rule__Composition__Group_3__0__Impl rule__Composition__Group_3__1
            {
            pushFollow(FollowSets000.FOLLOW_84);
            rule__Composition__Group_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_3__0"


    // $ANTLR start "rule__Composition__Group_3__0__Impl"
    // InternalFiacre.g:16578:1: rule__Composition__Group_3__0__Impl : ( '||' ) ;
    public final void rule__Composition__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16582:1: ( ( '||' ) )
            // InternalFiacre.g:16583:1: ( '||' )
            {
            // InternalFiacre.g:16583:1: ( '||' )
            // InternalFiacre.g:16584:2: '||'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getVerticalLineVerticalLineKeyword_3_0()); 
            }
            match(input,76,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getVerticalLineVerticalLineKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_3__0__Impl"


    // $ANTLR start "rule__Composition__Group_3__1"
    // InternalFiacre.g:16593:1: rule__Composition__Group_3__1 : rule__Composition__Group_3__1__Impl ;
    public final void rule__Composition__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16597:1: ( rule__Composition__Group_3__1__Impl )
            // InternalFiacre.g:16598:2: rule__Composition__Group_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__Group_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_3__1"


    // $ANTLR start "rule__Composition__Group_3__1__Impl"
    // InternalFiacre.g:16604:1: rule__Composition__Group_3__1__Impl : ( ( rule__Composition__BlocksAssignment_3_1 ) ) ;
    public final void rule__Composition__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16608:1: ( ( ( rule__Composition__BlocksAssignment_3_1 ) ) )
            // InternalFiacre.g:16609:1: ( ( rule__Composition__BlocksAssignment_3_1 ) )
            {
            // InternalFiacre.g:16609:1: ( ( rule__Composition__BlocksAssignment_3_1 ) )
            // InternalFiacre.g:16610:2: ( rule__Composition__BlocksAssignment_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getBlocksAssignment_3_1()); 
            }
            // InternalFiacre.g:16611:2: ( rule__Composition__BlocksAssignment_3_1 )
            // InternalFiacre.g:16611:3: rule__Composition__BlocksAssignment_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Composition__BlocksAssignment_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getBlocksAssignment_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__Group_3__1__Impl"


    // $ANTLR start "rule__CompositeBlock__Group__0"
    // InternalFiacre.g:16620:1: rule__CompositeBlock__Group__0 : rule__CompositeBlock__Group__0__Impl rule__CompositeBlock__Group__1 ;
    public final void rule__CompositeBlock__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16624:1: ( rule__CompositeBlock__Group__0__Impl rule__CompositeBlock__Group__1 )
            // InternalFiacre.g:16625:2: rule__CompositeBlock__Group__0__Impl rule__CompositeBlock__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_84);
            rule__CompositeBlock__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group__0"


    // $ANTLR start "rule__CompositeBlock__Group__0__Impl"
    // InternalFiacre.g:16632:1: rule__CompositeBlock__Group__0__Impl : ( ( rule__CompositeBlock__Alternatives_0 )? ) ;
    public final void rule__CompositeBlock__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16636:1: ( ( ( rule__CompositeBlock__Alternatives_0 )? ) )
            // InternalFiacre.g:16637:1: ( ( rule__CompositeBlock__Alternatives_0 )? )
            {
            // InternalFiacre.g:16637:1: ( ( rule__CompositeBlock__Alternatives_0 )? )
            // InternalFiacre.g:16638:2: ( rule__CompositeBlock__Alternatives_0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:16639:2: ( rule__CompositeBlock__Alternatives_0 )?
            int alt147=2;
            int LA147_0 = input.LA(1);

            if ( (LA147_0==RULE_ID||LA147_0==RULE_INT||(LA147_0>=14 && LA147_0<=15)||LA147_0==22||LA147_0==42||(LA147_0>=77 && LA147_0<=78)||(LA147_0>=87 && LA147_0<=88)||(LA147_0>=91 && LA147_0<=97)||(LA147_0>=99 && LA147_0<=100)||LA147_0==102||(LA147_0>=104 && LA147_0<=107)) ) {
                alt147=1;
            }
            switch (alt147) {
                case 1 :
                    // InternalFiacre.g:16639:3: rule__CompositeBlock__Alternatives_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__CompositeBlock__Alternatives_0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group__0__Impl"


    // $ANTLR start "rule__CompositeBlock__Group__1"
    // InternalFiacre.g:16647:1: rule__CompositeBlock__Group__1 : rule__CompositeBlock__Group__1__Impl ;
    public final void rule__CompositeBlock__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16651:1: ( rule__CompositeBlock__Group__1__Impl )
            // InternalFiacre.g:16652:2: rule__CompositeBlock__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group__1"


    // $ANTLR start "rule__CompositeBlock__Group__1__Impl"
    // InternalFiacre.g:16658:1: rule__CompositeBlock__Group__1__Impl : ( ( rule__CompositeBlock__CompositionAssignment_1 ) ) ;
    public final void rule__CompositeBlock__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16662:1: ( ( ( rule__CompositeBlock__CompositionAssignment_1 ) ) )
            // InternalFiacre.g:16663:1: ( ( rule__CompositeBlock__CompositionAssignment_1 ) )
            {
            // InternalFiacre.g:16663:1: ( ( rule__CompositeBlock__CompositionAssignment_1 ) )
            // InternalFiacre.g:16664:2: ( rule__CompositeBlock__CompositionAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getCompositionAssignment_1()); 
            }
            // InternalFiacre.g:16665:2: ( rule__CompositeBlock__CompositionAssignment_1 )
            // InternalFiacre.g:16665:3: rule__CompositeBlock__CompositionAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__CompositionAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getCompositionAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group__1__Impl"


    // $ANTLR start "rule__CompositeBlock__Group_0_0__0"
    // InternalFiacre.g:16674:1: rule__CompositeBlock__Group_0_0__0 : rule__CompositeBlock__Group_0_0__0__Impl rule__CompositeBlock__Group_0_0__1 ;
    public final void rule__CompositeBlock__Group_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16678:1: ( rule__CompositeBlock__Group_0_0__0__Impl rule__CompositeBlock__Group_0_0__1 )
            // InternalFiacre.g:16679:2: rule__CompositeBlock__Group_0_0__0__Impl rule__CompositeBlock__Group_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_81);
            rule__CompositeBlock__Group_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__Group_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group_0_0__0"


    // $ANTLR start "rule__CompositeBlock__Group_0_0__0__Impl"
    // InternalFiacre.g:16686:1: rule__CompositeBlock__Group_0_0__0__Impl : ( ( rule__CompositeBlock__LocalAssignment_0_0_0 ) ) ;
    public final void rule__CompositeBlock__Group_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16690:1: ( ( ( rule__CompositeBlock__LocalAssignment_0_0_0 ) ) )
            // InternalFiacre.g:16691:1: ( ( rule__CompositeBlock__LocalAssignment_0_0_0 ) )
            {
            // InternalFiacre.g:16691:1: ( ( rule__CompositeBlock__LocalAssignment_0_0_0 ) )
            // InternalFiacre.g:16692:2: ( rule__CompositeBlock__LocalAssignment_0_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getLocalAssignment_0_0_0()); 
            }
            // InternalFiacre.g:16693:2: ( rule__CompositeBlock__LocalAssignment_0_0_0 )
            // InternalFiacre.g:16693:3: rule__CompositeBlock__LocalAssignment_0_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__LocalAssignment_0_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getLocalAssignment_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group_0_0__0__Impl"


    // $ANTLR start "rule__CompositeBlock__Group_0_0__1"
    // InternalFiacre.g:16701:1: rule__CompositeBlock__Group_0_0__1 : rule__CompositeBlock__Group_0_0__1__Impl ;
    public final void rule__CompositeBlock__Group_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16705:1: ( rule__CompositeBlock__Group_0_0__1__Impl )
            // InternalFiacre.g:16706:2: rule__CompositeBlock__Group_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__CompositeBlock__Group_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group_0_0__1"


    // $ANTLR start "rule__CompositeBlock__Group_0_0__1__Impl"
    // InternalFiacre.g:16712:1: rule__CompositeBlock__Group_0_0__1__Impl : ( '->' ) ;
    public final void rule__CompositeBlock__Group_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16716:1: ( ( '->' ) )
            // InternalFiacre.g:16717:1: ( '->' )
            {
            // InternalFiacre.g:16717:1: ( '->' )
            // InternalFiacre.g:16718:2: '->'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); 
            }
            match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__Group_0_0__1__Impl"


    // $ANTLR start "rule__InstanceDeclaration__Group__0"
    // InternalFiacre.g:16728:1: rule__InstanceDeclaration__Group__0 : rule__InstanceDeclaration__Group__0__Impl rule__InstanceDeclaration__Group__1 ;
    public final void rule__InstanceDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16732:1: ( rule__InstanceDeclaration__Group__0__Impl rule__InstanceDeclaration__Group__1 )
            // InternalFiacre.g:16733:2: rule__InstanceDeclaration__Group__0__Impl rule__InstanceDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_84);
            rule__InstanceDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group__0"


    // $ANTLR start "rule__InstanceDeclaration__Group__0__Impl"
    // InternalFiacre.g:16740:1: rule__InstanceDeclaration__Group__0__Impl : ( ( rule__InstanceDeclaration__Alternatives_0 )? ) ;
    public final void rule__InstanceDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16744:1: ( ( ( rule__InstanceDeclaration__Alternatives_0 )? ) )
            // InternalFiacre.g:16745:1: ( ( rule__InstanceDeclaration__Alternatives_0 )? )
            {
            // InternalFiacre.g:16745:1: ( ( rule__InstanceDeclaration__Alternatives_0 )? )
            // InternalFiacre.g:16746:2: ( rule__InstanceDeclaration__Alternatives_0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:16747:2: ( rule__InstanceDeclaration__Alternatives_0 )?
            int alt148=2;
            alt148 = dfa148.predict(input);
            switch (alt148) {
                case 1 :
                    // InternalFiacre.g:16747:3: rule__InstanceDeclaration__Alternatives_0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__InstanceDeclaration__Alternatives_0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group__0__Impl"


    // $ANTLR start "rule__InstanceDeclaration__Group__1"
    // InternalFiacre.g:16755:1: rule__InstanceDeclaration__Group__1 : rule__InstanceDeclaration__Group__1__Impl ;
    public final void rule__InstanceDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16759:1: ( rule__InstanceDeclaration__Group__1__Impl )
            // InternalFiacre.g:16760:2: rule__InstanceDeclaration__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group__1"


    // $ANTLR start "rule__InstanceDeclaration__Group__1__Impl"
    // InternalFiacre.g:16766:1: rule__InstanceDeclaration__Group__1__Impl : ( ( rule__InstanceDeclaration__InstanceAssignment_1 ) ) ;
    public final void rule__InstanceDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16770:1: ( ( ( rule__InstanceDeclaration__InstanceAssignment_1 ) ) )
            // InternalFiacre.g:16771:1: ( ( rule__InstanceDeclaration__InstanceAssignment_1 ) )
            {
            // InternalFiacre.g:16771:1: ( ( rule__InstanceDeclaration__InstanceAssignment_1 ) )
            // InternalFiacre.g:16772:2: ( rule__InstanceDeclaration__InstanceAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getInstanceAssignment_1()); 
            }
            // InternalFiacre.g:16773:2: ( rule__InstanceDeclaration__InstanceAssignment_1 )
            // InternalFiacre.g:16773:3: rule__InstanceDeclaration__InstanceAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__InstanceAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getInstanceAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group__1__Impl"


    // $ANTLR start "rule__InstanceDeclaration__Group_0_0__0"
    // InternalFiacre.g:16782:1: rule__InstanceDeclaration__Group_0_0__0 : rule__InstanceDeclaration__Group_0_0__0__Impl rule__InstanceDeclaration__Group_0_0__1 ;
    public final void rule__InstanceDeclaration__Group_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16786:1: ( rule__InstanceDeclaration__Group_0_0__0__Impl rule__InstanceDeclaration__Group_0_0__1 )
            // InternalFiacre.g:16787:2: rule__InstanceDeclaration__Group_0_0__0__Impl rule__InstanceDeclaration__Group_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_81);
            rule__InstanceDeclaration__Group_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__Group_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group_0_0__0"


    // $ANTLR start "rule__InstanceDeclaration__Group_0_0__0__Impl"
    // InternalFiacre.g:16794:1: rule__InstanceDeclaration__Group_0_0__0__Impl : ( ( rule__InstanceDeclaration__LocalAssignment_0_0_0 ) ) ;
    public final void rule__InstanceDeclaration__Group_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16798:1: ( ( ( rule__InstanceDeclaration__LocalAssignment_0_0_0 ) ) )
            // InternalFiacre.g:16799:1: ( ( rule__InstanceDeclaration__LocalAssignment_0_0_0 ) )
            {
            // InternalFiacre.g:16799:1: ( ( rule__InstanceDeclaration__LocalAssignment_0_0_0 ) )
            // InternalFiacre.g:16800:2: ( rule__InstanceDeclaration__LocalAssignment_0_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getLocalAssignment_0_0_0()); 
            }
            // InternalFiacre.g:16801:2: ( rule__InstanceDeclaration__LocalAssignment_0_0_0 )
            // InternalFiacre.g:16801:3: rule__InstanceDeclaration__LocalAssignment_0_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__LocalAssignment_0_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getLocalAssignment_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group_0_0__0__Impl"


    // $ANTLR start "rule__InstanceDeclaration__Group_0_0__1"
    // InternalFiacre.g:16809:1: rule__InstanceDeclaration__Group_0_0__1 : rule__InstanceDeclaration__Group_0_0__1__Impl ;
    public final void rule__InstanceDeclaration__Group_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16813:1: ( rule__InstanceDeclaration__Group_0_0__1__Impl )
            // InternalFiacre.g:16814:2: rule__InstanceDeclaration__Group_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InstanceDeclaration__Group_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group_0_0__1"


    // $ANTLR start "rule__InstanceDeclaration__Group_0_0__1__Impl"
    // InternalFiacre.g:16820:1: rule__InstanceDeclaration__Group_0_0__1__Impl : ( '->' ) ;
    public final void rule__InstanceDeclaration__Group_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16824:1: ( ( '->' ) )
            // InternalFiacre.g:16825:1: ( '->' )
            {
            // InternalFiacre.g:16825:1: ( '->' )
            // InternalFiacre.g:16826:2: '->'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); 
            }
            match(input,15,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__Group_0_0__1__Impl"


    // $ANTLR start "rule__PortSet__Group_1__0"
    // InternalFiacre.g:16836:1: rule__PortSet__Group_1__0 : rule__PortSet__Group_1__0__Impl rule__PortSet__Group_1__1 ;
    public final void rule__PortSet__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16840:1: ( rule__PortSet__Group_1__0__Impl rule__PortSet__Group_1__1 )
            // InternalFiacre.g:16841:2: rule__PortSet__Group_1__0__Impl rule__PortSet__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PortSet__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1__0"


    // $ANTLR start "rule__PortSet__Group_1__0__Impl"
    // InternalFiacre.g:16848:1: rule__PortSet__Group_1__0__Impl : ( ( rule__PortSet__PortsAssignment_1_0 ) ) ;
    public final void rule__PortSet__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16852:1: ( ( ( rule__PortSet__PortsAssignment_1_0 ) ) )
            // InternalFiacre.g:16853:1: ( ( rule__PortSet__PortsAssignment_1_0 ) )
            {
            // InternalFiacre.g:16853:1: ( ( rule__PortSet__PortsAssignment_1_0 ) )
            // InternalFiacre.g:16854:2: ( rule__PortSet__PortsAssignment_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getPortsAssignment_1_0()); 
            }
            // InternalFiacre.g:16855:2: ( rule__PortSet__PortsAssignment_1_0 )
            // InternalFiacre.g:16855:3: rule__PortSet__PortsAssignment_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__PortsAssignment_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getPortsAssignment_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1__0__Impl"


    // $ANTLR start "rule__PortSet__Group_1__1"
    // InternalFiacre.g:16863:1: rule__PortSet__Group_1__1 : rule__PortSet__Group_1__1__Impl ;
    public final void rule__PortSet__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16867:1: ( rule__PortSet__Group_1__1__Impl )
            // InternalFiacre.g:16868:2: rule__PortSet__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1__1"


    // $ANTLR start "rule__PortSet__Group_1__1__Impl"
    // InternalFiacre.g:16874:1: rule__PortSet__Group_1__1__Impl : ( ( rule__PortSet__Group_1_1__0 )* ) ;
    public final void rule__PortSet__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16878:1: ( ( ( rule__PortSet__Group_1_1__0 )* ) )
            // InternalFiacre.g:16879:1: ( ( rule__PortSet__Group_1_1__0 )* )
            {
            // InternalFiacre.g:16879:1: ( ( rule__PortSet__Group_1_1__0 )* )
            // InternalFiacre.g:16880:2: ( rule__PortSet__Group_1_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getGroup_1_1()); 
            }
            // InternalFiacre.g:16881:2: ( rule__PortSet__Group_1_1__0 )*
            loop149:
            do {
                int alt149=2;
                int LA149_0 = input.LA(1);

                if ( (LA149_0==24) ) {
                    alt149=1;
                }


                switch (alt149) {
            	case 1 :
            	    // InternalFiacre.g:16881:3: rule__PortSet__Group_1_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__PortSet__Group_1_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop149;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getGroup_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1__1__Impl"


    // $ANTLR start "rule__PortSet__Group_1_1__0"
    // InternalFiacre.g:16890:1: rule__PortSet__Group_1_1__0 : rule__PortSet__Group_1_1__0__Impl rule__PortSet__Group_1_1__1 ;
    public final void rule__PortSet__Group_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16894:1: ( rule__PortSet__Group_1_1__0__Impl rule__PortSet__Group_1_1__1 )
            // InternalFiacre.g:16895:2: rule__PortSet__Group_1_1__0__Impl rule__PortSet__Group_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__PortSet__Group_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__Group_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1_1__0"


    // $ANTLR start "rule__PortSet__Group_1_1__0__Impl"
    // InternalFiacre.g:16902:1: rule__PortSet__Group_1_1__0__Impl : ( ',' ) ;
    public final void rule__PortSet__Group_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16906:1: ( ( ',' ) )
            // InternalFiacre.g:16907:1: ( ',' )
            {
            // InternalFiacre.g:16907:1: ( ',' )
            // InternalFiacre.g:16908:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getCommaKeyword_1_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getCommaKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1_1__0__Impl"


    // $ANTLR start "rule__PortSet__Group_1_1__1"
    // InternalFiacre.g:16917:1: rule__PortSet__Group_1_1__1 : rule__PortSet__Group_1_1__1__Impl ;
    public final void rule__PortSet__Group_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16921:1: ( rule__PortSet__Group_1_1__1__Impl )
            // InternalFiacre.g:16922:2: rule__PortSet__Group_1_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__Group_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1_1__1"


    // $ANTLR start "rule__PortSet__Group_1_1__1__Impl"
    // InternalFiacre.g:16928:1: rule__PortSet__Group_1_1__1__Impl : ( ( rule__PortSet__PortsAssignment_1_1_1 ) ) ;
    public final void rule__PortSet__Group_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16932:1: ( ( ( rule__PortSet__PortsAssignment_1_1_1 ) ) )
            // InternalFiacre.g:16933:1: ( ( rule__PortSet__PortsAssignment_1_1_1 ) )
            {
            // InternalFiacre.g:16933:1: ( ( rule__PortSet__PortsAssignment_1_1_1 ) )
            // InternalFiacre.g:16934:2: ( rule__PortSet__PortsAssignment_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getPortsAssignment_1_1_1()); 
            }
            // InternalFiacre.g:16935:2: ( rule__PortSet__PortsAssignment_1_1_1 )
            // InternalFiacre.g:16935:3: rule__PortSet__PortsAssignment_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PortSet__PortsAssignment_1_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getPortsAssignment_1_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__Group_1_1__1__Impl"


    // $ANTLR start "rule__ComponentInstance__Group__0"
    // InternalFiacre.g:16944:1: rule__ComponentInstance__Group__0 : rule__ComponentInstance__Group__0__Impl rule__ComponentInstance__Group__1 ;
    public final void rule__ComponentInstance__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16948:1: ( rule__ComponentInstance__Group__0__Impl rule__ComponentInstance__Group__1 )
            // InternalFiacre.g:16949:2: rule__ComponentInstance__Group__0__Impl rule__ComponentInstance__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_88);
            rule__ComponentInstance__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__0"


    // $ANTLR start "rule__ComponentInstance__Group__0__Impl"
    // InternalFiacre.g:16956:1: rule__ComponentInstance__Group__0__Impl : ( ( rule__ComponentInstance__ComponentAssignment_0 ) ) ;
    public final void rule__ComponentInstance__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16960:1: ( ( ( rule__ComponentInstance__ComponentAssignment_0 ) ) )
            // InternalFiacre.g:16961:1: ( ( rule__ComponentInstance__ComponentAssignment_0 ) )
            {
            // InternalFiacre.g:16961:1: ( ( rule__ComponentInstance__ComponentAssignment_0 ) )
            // InternalFiacre.g:16962:2: ( rule__ComponentInstance__ComponentAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getComponentAssignment_0()); 
            }
            // InternalFiacre.g:16963:2: ( rule__ComponentInstance__ComponentAssignment_0 )
            // InternalFiacre.g:16963:3: rule__ComponentInstance__ComponentAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__ComponentAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getComponentAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__0__Impl"


    // $ANTLR start "rule__ComponentInstance__Group__1"
    // InternalFiacre.g:16971:1: rule__ComponentInstance__Group__1 : rule__ComponentInstance__Group__1__Impl rule__ComponentInstance__Group__2 ;
    public final void rule__ComponentInstance__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16975:1: ( rule__ComponentInstance__Group__1__Impl rule__ComponentInstance__Group__2 )
            // InternalFiacre.g:16976:2: rule__ComponentInstance__Group__1__Impl rule__ComponentInstance__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_88);
            rule__ComponentInstance__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__1"


    // $ANTLR start "rule__ComponentInstance__Group__1__Impl"
    // InternalFiacre.g:16983:1: rule__ComponentInstance__Group__1__Impl : ( ( rule__ComponentInstance__Group_1__0 )? ) ;
    public final void rule__ComponentInstance__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:16987:1: ( ( ( rule__ComponentInstance__Group_1__0 )? ) )
            // InternalFiacre.g:16988:1: ( ( rule__ComponentInstance__Group_1__0 )? )
            {
            // InternalFiacre.g:16988:1: ( ( rule__ComponentInstance__Group_1__0 )? )
            // InternalFiacre.g:16989:2: ( rule__ComponentInstance__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getGroup_1()); 
            }
            // InternalFiacre.g:16990:2: ( rule__ComponentInstance__Group_1__0 )?
            int alt150=2;
            int LA150_0 = input.LA(1);

            if ( (LA150_0==42) ) {
                alt150=1;
            }
            switch (alt150) {
                case 1 :
                    // InternalFiacre.g:16990:3: rule__ComponentInstance__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentInstance__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__1__Impl"


    // $ANTLR start "rule__ComponentInstance__Group__2"
    // InternalFiacre.g:16998:1: rule__ComponentInstance__Group__2 : rule__ComponentInstance__Group__2__Impl ;
    public final void rule__ComponentInstance__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17002:1: ( rule__ComponentInstance__Group__2__Impl )
            // InternalFiacre.g:17003:2: rule__ComponentInstance__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__2"


    // $ANTLR start "rule__ComponentInstance__Group__2__Impl"
    // InternalFiacre.g:17009:1: rule__ComponentInstance__Group__2__Impl : ( ( rule__ComponentInstance__Group_2__0 )? ) ;
    public final void rule__ComponentInstance__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17013:1: ( ( ( rule__ComponentInstance__Group_2__0 )? ) )
            // InternalFiacre.g:17014:1: ( ( rule__ComponentInstance__Group_2__0 )? )
            {
            // InternalFiacre.g:17014:1: ( ( rule__ComponentInstance__Group_2__0 )? )
            // InternalFiacre.g:17015:2: ( rule__ComponentInstance__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getGroup_2()); 
            }
            // InternalFiacre.g:17016:2: ( rule__ComponentInstance__Group_2__0 )?
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==22) ) {
                alt151=1;
            }
            switch (alt151) {
                case 1 :
                    // InternalFiacre.g:17016:3: rule__ComponentInstance__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ComponentInstance__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group__2__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1__0"
    // InternalFiacre.g:17025:1: rule__ComponentInstance__Group_1__0 : rule__ComponentInstance__Group_1__0__Impl rule__ComponentInstance__Group_1__1 ;
    public final void rule__ComponentInstance__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17029:1: ( rule__ComponentInstance__Group_1__0__Impl rule__ComponentInstance__Group_1__1 )
            // InternalFiacre.g:17030:2: rule__ComponentInstance__Group_1__0__Impl rule__ComponentInstance__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ComponentInstance__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__0"


    // $ANTLR start "rule__ComponentInstance__Group_1__0__Impl"
    // InternalFiacre.g:17037:1: rule__ComponentInstance__Group_1__0__Impl : ( '[' ) ;
    public final void rule__ComponentInstance__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17041:1: ( ( '[' ) )
            // InternalFiacre.g:17042:1: ( '[' )
            {
            // InternalFiacre.g:17042:1: ( '[' )
            // InternalFiacre.g:17043:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getLeftSquareBracketKeyword_1_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getLeftSquareBracketKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__0__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1__1"
    // InternalFiacre.g:17052:1: rule__ComponentInstance__Group_1__1 : rule__ComponentInstance__Group_1__1__Impl rule__ComponentInstance__Group_1__2 ;
    public final void rule__ComponentInstance__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17056:1: ( rule__ComponentInstance__Group_1__1__Impl rule__ComponentInstance__Group_1__2 )
            // InternalFiacre.g:17057:2: rule__ComponentInstance__Group_1__1__Impl rule__ComponentInstance__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ComponentInstance__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__1"


    // $ANTLR start "rule__ComponentInstance__Group_1__1__Impl"
    // InternalFiacre.g:17064:1: rule__ComponentInstance__Group_1__1__Impl : ( ( rule__ComponentInstance__PortsAssignment_1_1 ) ) ;
    public final void rule__ComponentInstance__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17068:1: ( ( ( rule__ComponentInstance__PortsAssignment_1_1 ) ) )
            // InternalFiacre.g:17069:1: ( ( rule__ComponentInstance__PortsAssignment_1_1 ) )
            {
            // InternalFiacre.g:17069:1: ( ( rule__ComponentInstance__PortsAssignment_1_1 ) )
            // InternalFiacre.g:17070:2: ( rule__ComponentInstance__PortsAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getPortsAssignment_1_1()); 
            }
            // InternalFiacre.g:17071:2: ( rule__ComponentInstance__PortsAssignment_1_1 )
            // InternalFiacre.g:17071:3: rule__ComponentInstance__PortsAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__PortsAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getPortsAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__1__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1__2"
    // InternalFiacre.g:17079:1: rule__ComponentInstance__Group_1__2 : rule__ComponentInstance__Group_1__2__Impl rule__ComponentInstance__Group_1__3 ;
    public final void rule__ComponentInstance__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17083:1: ( rule__ComponentInstance__Group_1__2__Impl rule__ComponentInstance__Group_1__3 )
            // InternalFiacre.g:17084:2: rule__ComponentInstance__Group_1__2__Impl rule__ComponentInstance__Group_1__3
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__ComponentInstance__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__2"


    // $ANTLR start "rule__ComponentInstance__Group_1__2__Impl"
    // InternalFiacre.g:17091:1: rule__ComponentInstance__Group_1__2__Impl : ( ( rule__ComponentInstance__Group_1_2__0 )* ) ;
    public final void rule__ComponentInstance__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17095:1: ( ( ( rule__ComponentInstance__Group_1_2__0 )* ) )
            // InternalFiacre.g:17096:1: ( ( rule__ComponentInstance__Group_1_2__0 )* )
            {
            // InternalFiacre.g:17096:1: ( ( rule__ComponentInstance__Group_1_2__0 )* )
            // InternalFiacre.g:17097:2: ( rule__ComponentInstance__Group_1_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getGroup_1_2()); 
            }
            // InternalFiacre.g:17098:2: ( rule__ComponentInstance__Group_1_2__0 )*
            loop152:
            do {
                int alt152=2;
                int LA152_0 = input.LA(1);

                if ( (LA152_0==24) ) {
                    alt152=1;
                }


                switch (alt152) {
            	case 1 :
            	    // InternalFiacre.g:17098:3: rule__ComponentInstance__Group_1_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentInstance__Group_1_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop152;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getGroup_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__2__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1__3"
    // InternalFiacre.g:17106:1: rule__ComponentInstance__Group_1__3 : rule__ComponentInstance__Group_1__3__Impl ;
    public final void rule__ComponentInstance__Group_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17110:1: ( rule__ComponentInstance__Group_1__3__Impl )
            // InternalFiacre.g:17111:2: rule__ComponentInstance__Group_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__3"


    // $ANTLR start "rule__ComponentInstance__Group_1__3__Impl"
    // InternalFiacre.g:17117:1: rule__ComponentInstance__Group_1__3__Impl : ( ']' ) ;
    public final void rule__ComponentInstance__Group_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17121:1: ( ( ']' ) )
            // InternalFiacre.g:17122:1: ( ']' )
            {
            // InternalFiacre.g:17122:1: ( ']' )
            // InternalFiacre.g:17123:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getRightSquareBracketKeyword_1_3()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getRightSquareBracketKeyword_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1__3__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1_2__0"
    // InternalFiacre.g:17133:1: rule__ComponentInstance__Group_1_2__0 : rule__ComponentInstance__Group_1_2__0__Impl rule__ComponentInstance__Group_1_2__1 ;
    public final void rule__ComponentInstance__Group_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17137:1: ( rule__ComponentInstance__Group_1_2__0__Impl rule__ComponentInstance__Group_1_2__1 )
            // InternalFiacre.g:17138:2: rule__ComponentInstance__Group_1_2__0__Impl rule__ComponentInstance__Group_1_2__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ComponentInstance__Group_1_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1_2__0"


    // $ANTLR start "rule__ComponentInstance__Group_1_2__0__Impl"
    // InternalFiacre.g:17145:1: rule__ComponentInstance__Group_1_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentInstance__Group_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17149:1: ( ( ',' ) )
            // InternalFiacre.g:17150:1: ( ',' )
            {
            // InternalFiacre.g:17150:1: ( ',' )
            // InternalFiacre.g:17151:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getCommaKeyword_1_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getCommaKeyword_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1_2__0__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_1_2__1"
    // InternalFiacre.g:17160:1: rule__ComponentInstance__Group_1_2__1 : rule__ComponentInstance__Group_1_2__1__Impl ;
    public final void rule__ComponentInstance__Group_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17164:1: ( rule__ComponentInstance__Group_1_2__1__Impl )
            // InternalFiacre.g:17165:2: rule__ComponentInstance__Group_1_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_1_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1_2__1"


    // $ANTLR start "rule__ComponentInstance__Group_1_2__1__Impl"
    // InternalFiacre.g:17171:1: rule__ComponentInstance__Group_1_2__1__Impl : ( ( rule__ComponentInstance__PortsAssignment_1_2_1 ) ) ;
    public final void rule__ComponentInstance__Group_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17175:1: ( ( ( rule__ComponentInstance__PortsAssignment_1_2_1 ) ) )
            // InternalFiacre.g:17176:1: ( ( rule__ComponentInstance__PortsAssignment_1_2_1 ) )
            {
            // InternalFiacre.g:17176:1: ( ( rule__ComponentInstance__PortsAssignment_1_2_1 ) )
            // InternalFiacre.g:17177:2: ( rule__ComponentInstance__PortsAssignment_1_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getPortsAssignment_1_2_1()); 
            }
            // InternalFiacre.g:17178:2: ( rule__ComponentInstance__PortsAssignment_1_2_1 )
            // InternalFiacre.g:17178:3: rule__ComponentInstance__PortsAssignment_1_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__PortsAssignment_1_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getPortsAssignment_1_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_1_2__1__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2__0"
    // InternalFiacre.g:17187:1: rule__ComponentInstance__Group_2__0 : rule__ComponentInstance__Group_2__0__Impl rule__ComponentInstance__Group_2__1 ;
    public final void rule__ComponentInstance__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17191:1: ( rule__ComponentInstance__Group_2__0__Impl rule__ComponentInstance__Group_2__1 )
            // InternalFiacre.g:17192:2: rule__ComponentInstance__Group_2__0__Impl rule__ComponentInstance__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ComponentInstance__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__0"


    // $ANTLR start "rule__ComponentInstance__Group_2__0__Impl"
    // InternalFiacre.g:17199:1: rule__ComponentInstance__Group_2__0__Impl : ( '(' ) ;
    public final void rule__ComponentInstance__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17203:1: ( ( '(' ) )
            // InternalFiacre.g:17204:1: ( '(' )
            {
            // InternalFiacre.g:17204:1: ( '(' )
            // InternalFiacre.g:17205:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getLeftParenthesisKeyword_2_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getLeftParenthesisKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__0__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2__1"
    // InternalFiacre.g:17214:1: rule__ComponentInstance__Group_2__1 : rule__ComponentInstance__Group_2__1__Impl rule__ComponentInstance__Group_2__2 ;
    public final void rule__ComponentInstance__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17218:1: ( rule__ComponentInstance__Group_2__1__Impl rule__ComponentInstance__Group_2__2 )
            // InternalFiacre.g:17219:2: rule__ComponentInstance__Group_2__1__Impl rule__ComponentInstance__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ComponentInstance__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__1"


    // $ANTLR start "rule__ComponentInstance__Group_2__1__Impl"
    // InternalFiacre.g:17226:1: rule__ComponentInstance__Group_2__1__Impl : ( ( rule__ComponentInstance__ParametersAssignment_2_1 ) ) ;
    public final void rule__ComponentInstance__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17230:1: ( ( ( rule__ComponentInstance__ParametersAssignment_2_1 ) ) )
            // InternalFiacre.g:17231:1: ( ( rule__ComponentInstance__ParametersAssignment_2_1 ) )
            {
            // InternalFiacre.g:17231:1: ( ( rule__ComponentInstance__ParametersAssignment_2_1 ) )
            // InternalFiacre.g:17232:2: ( rule__ComponentInstance__ParametersAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getParametersAssignment_2_1()); 
            }
            // InternalFiacre.g:17233:2: ( rule__ComponentInstance__ParametersAssignment_2_1 )
            // InternalFiacre.g:17233:3: rule__ComponentInstance__ParametersAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__ParametersAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getParametersAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__1__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2__2"
    // InternalFiacre.g:17241:1: rule__ComponentInstance__Group_2__2 : rule__ComponentInstance__Group_2__2__Impl rule__ComponentInstance__Group_2__3 ;
    public final void rule__ComponentInstance__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17245:1: ( rule__ComponentInstance__Group_2__2__Impl rule__ComponentInstance__Group_2__3 )
            // InternalFiacre.g:17246:2: rule__ComponentInstance__Group_2__2__Impl rule__ComponentInstance__Group_2__3
            {
            pushFollow(FollowSets000.FOLLOW_44);
            rule__ComponentInstance__Group_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__2"


    // $ANTLR start "rule__ComponentInstance__Group_2__2__Impl"
    // InternalFiacre.g:17253:1: rule__ComponentInstance__Group_2__2__Impl : ( ( rule__ComponentInstance__Group_2_2__0 )* ) ;
    public final void rule__ComponentInstance__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17257:1: ( ( ( rule__ComponentInstance__Group_2_2__0 )* ) )
            // InternalFiacre.g:17258:1: ( ( rule__ComponentInstance__Group_2_2__0 )* )
            {
            // InternalFiacre.g:17258:1: ( ( rule__ComponentInstance__Group_2_2__0 )* )
            // InternalFiacre.g:17259:2: ( rule__ComponentInstance__Group_2_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getGroup_2_2()); 
            }
            // InternalFiacre.g:17260:2: ( rule__ComponentInstance__Group_2_2__0 )*
            loop153:
            do {
                int alt153=2;
                int LA153_0 = input.LA(1);

                if ( (LA153_0==24) ) {
                    alt153=1;
                }


                switch (alt153) {
            	case 1 :
            	    // InternalFiacre.g:17260:3: rule__ComponentInstance__Group_2_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ComponentInstance__Group_2_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop153;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getGroup_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__2__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2__3"
    // InternalFiacre.g:17268:1: rule__ComponentInstance__Group_2__3 : rule__ComponentInstance__Group_2__3__Impl ;
    public final void rule__ComponentInstance__Group_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17272:1: ( rule__ComponentInstance__Group_2__3__Impl )
            // InternalFiacre.g:17273:2: rule__ComponentInstance__Group_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__3"


    // $ANTLR start "rule__ComponentInstance__Group_2__3__Impl"
    // InternalFiacre.g:17279:1: rule__ComponentInstance__Group_2__3__Impl : ( ')' ) ;
    public final void rule__ComponentInstance__Group_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17283:1: ( ( ')' ) )
            // InternalFiacre.g:17284:1: ( ')' )
            {
            // InternalFiacre.g:17284:1: ( ')' )
            // InternalFiacre.g:17285:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getRightParenthesisKeyword_2_3()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getRightParenthesisKeyword_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2__3__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2_2__0"
    // InternalFiacre.g:17295:1: rule__ComponentInstance__Group_2_2__0 : rule__ComponentInstance__Group_2_2__0__Impl rule__ComponentInstance__Group_2_2__1 ;
    public final void rule__ComponentInstance__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17299:1: ( rule__ComponentInstance__Group_2_2__0__Impl rule__ComponentInstance__Group_2_2__1 )
            // InternalFiacre.g:17300:2: rule__ComponentInstance__Group_2_2__0__Impl rule__ComponentInstance__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ComponentInstance__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2_2__0"


    // $ANTLR start "rule__ComponentInstance__Group_2_2__0__Impl"
    // InternalFiacre.g:17307:1: rule__ComponentInstance__Group_2_2__0__Impl : ( ',' ) ;
    public final void rule__ComponentInstance__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17311:1: ( ( ',' ) )
            // InternalFiacre.g:17312:1: ( ',' )
            {
            // InternalFiacre.g:17312:1: ( ',' )
            // InternalFiacre.g:17313:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getCommaKeyword_2_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getCommaKeyword_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2_2__0__Impl"


    // $ANTLR start "rule__ComponentInstance__Group_2_2__1"
    // InternalFiacre.g:17322:1: rule__ComponentInstance__Group_2_2__1 : rule__ComponentInstance__Group_2_2__1__Impl ;
    public final void rule__ComponentInstance__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17326:1: ( rule__ComponentInstance__Group_2_2__1__Impl )
            // InternalFiacre.g:17327:2: rule__ComponentInstance__Group_2_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2_2__1"


    // $ANTLR start "rule__ComponentInstance__Group_2_2__1__Impl"
    // InternalFiacre.g:17333:1: rule__ComponentInstance__Group_2_2__1__Impl : ( ( rule__ComponentInstance__ParametersAssignment_2_2_1 ) ) ;
    public final void rule__ComponentInstance__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17337:1: ( ( ( rule__ComponentInstance__ParametersAssignment_2_2_1 ) ) )
            // InternalFiacre.g:17338:1: ( ( rule__ComponentInstance__ParametersAssignment_2_2_1 ) )
            {
            // InternalFiacre.g:17338:1: ( ( rule__ComponentInstance__ParametersAssignment_2_2_1 ) )
            // InternalFiacre.g:17339:2: ( rule__ComponentInstance__ParametersAssignment_2_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getParametersAssignment_2_2_1()); 
            }
            // InternalFiacre.g:17340:2: ( rule__ComponentInstance__ParametersAssignment_2_2_1 )
            // InternalFiacre.g:17340:3: rule__ComponentInstance__ParametersAssignment_2_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ComponentInstance__ParametersAssignment_2_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getParametersAssignment_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__Group_2_2__1__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__0"
    // InternalFiacre.g:17349:1: rule__QuantifiedExpression__Group_0__0 : rule__QuantifiedExpression__Group_0__0__Impl rule__QuantifiedExpression__Group_0__1 ;
    public final void rule__QuantifiedExpression__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17353:1: ( rule__QuantifiedExpression__Group_0__0__Impl rule__QuantifiedExpression__Group_0__1 )
            // InternalFiacre.g:17354:2: rule__QuantifiedExpression__Group_0__0__Impl rule__QuantifiedExpression__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__QuantifiedExpression__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__0"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__0__Impl"
    // InternalFiacre.g:17361:1: rule__QuantifiedExpression__Group_0__0__Impl : ( ( rule__QuantifiedExpression__Alternatives_0_0 ) ) ;
    public final void rule__QuantifiedExpression__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17365:1: ( ( ( rule__QuantifiedExpression__Alternatives_0_0 ) ) )
            // InternalFiacre.g:17366:1: ( ( rule__QuantifiedExpression__Alternatives_0_0 ) )
            {
            // InternalFiacre.g:17366:1: ( ( rule__QuantifiedExpression__Alternatives_0_0 ) )
            // InternalFiacre.g:17367:2: ( rule__QuantifiedExpression__Alternatives_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getAlternatives_0_0()); 
            }
            // InternalFiacre.g:17368:2: ( rule__QuantifiedExpression__Alternatives_0_0 )
            // InternalFiacre.g:17368:3: rule__QuantifiedExpression__Alternatives_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Alternatives_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getAlternatives_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__0__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__1"
    // InternalFiacre.g:17376:1: rule__QuantifiedExpression__Group_0__1 : rule__QuantifiedExpression__Group_0__1__Impl rule__QuantifiedExpression__Group_0__2 ;
    public final void rule__QuantifiedExpression__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17380:1: ( rule__QuantifiedExpression__Group_0__1__Impl rule__QuantifiedExpression__Group_0__2 )
            // InternalFiacre.g:17381:2: rule__QuantifiedExpression__Group_0__1__Impl rule__QuantifiedExpression__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_89);
            rule__QuantifiedExpression__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__1"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__1__Impl"
    // InternalFiacre.g:17388:1: rule__QuantifiedExpression__Group_0__1__Impl : ( ( rule__QuantifiedExpression__IndexAssignment_0_1 ) ) ;
    public final void rule__QuantifiedExpression__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17392:1: ( ( ( rule__QuantifiedExpression__IndexAssignment_0_1 ) ) )
            // InternalFiacre.g:17393:1: ( ( rule__QuantifiedExpression__IndexAssignment_0_1 ) )
            {
            // InternalFiacre.g:17393:1: ( ( rule__QuantifiedExpression__IndexAssignment_0_1 ) )
            // InternalFiacre.g:17394:2: ( rule__QuantifiedExpression__IndexAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getIndexAssignment_0_1()); 
            }
            // InternalFiacre.g:17395:2: ( rule__QuantifiedExpression__IndexAssignment_0_1 )
            // InternalFiacre.g:17395:3: rule__QuantifiedExpression__IndexAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__IndexAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getIndexAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__1__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__2"
    // InternalFiacre.g:17403:1: rule__QuantifiedExpression__Group_0__2 : rule__QuantifiedExpression__Group_0__2__Impl rule__QuantifiedExpression__Group_0__3 ;
    public final void rule__QuantifiedExpression__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17407:1: ( rule__QuantifiedExpression__Group_0__2__Impl rule__QuantifiedExpression__Group_0__3 )
            // InternalFiacre.g:17408:2: rule__QuantifiedExpression__Group_0__2__Impl rule__QuantifiedExpression__Group_0__3
            {
            pushFollow(FollowSets000.FOLLOW_89);
            rule__QuantifiedExpression__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__2"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__2__Impl"
    // InternalFiacre.g:17415:1: rule__QuantifiedExpression__Group_0__2__Impl : ( ( rule__QuantifiedExpression__Group_0_2__0 )? ) ;
    public final void rule__QuantifiedExpression__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17419:1: ( ( ( rule__QuantifiedExpression__Group_0_2__0 )? ) )
            // InternalFiacre.g:17420:1: ( ( rule__QuantifiedExpression__Group_0_2__0 )? )
            {
            // InternalFiacre.g:17420:1: ( ( rule__QuantifiedExpression__Group_0_2__0 )? )
            // InternalFiacre.g:17421:2: ( rule__QuantifiedExpression__Group_0_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_2()); 
            }
            // InternalFiacre.g:17422:2: ( rule__QuantifiedExpression__Group_0_2__0 )?
            int alt154=2;
            int LA154_0 = input.LA(1);

            if ( (LA154_0==49) ) {
                alt154=1;
            }
            switch (alt154) {
                case 1 :
                    // InternalFiacre.g:17422:3: rule__QuantifiedExpression__Group_0_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QuantifiedExpression__Group_0_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getGroup_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__2__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__3"
    // InternalFiacre.g:17430:1: rule__QuantifiedExpression__Group_0__3 : rule__QuantifiedExpression__Group_0__3__Impl rule__QuantifiedExpression__Group_0__4 ;
    public final void rule__QuantifiedExpression__Group_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17434:1: ( rule__QuantifiedExpression__Group_0__3__Impl rule__QuantifiedExpression__Group_0__4 )
            // InternalFiacre.g:17435:2: rule__QuantifiedExpression__Group_0__3__Impl rule__QuantifiedExpression__Group_0__4
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__QuantifiedExpression__Group_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__3"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__3__Impl"
    // InternalFiacre.g:17442:1: rule__QuantifiedExpression__Group_0__3__Impl : ( '.' ) ;
    public final void rule__QuantifiedExpression__Group_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17446:1: ( ( '.' ) )
            // InternalFiacre.g:17447:1: ( '.' )
            {
            // InternalFiacre.g:17447:1: ( '.' )
            // InternalFiacre.g:17448:2: '.'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getFullStopKeyword_0_3()); 
            }
            match(input,61,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getFullStopKeyword_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__3__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__4"
    // InternalFiacre.g:17457:1: rule__QuantifiedExpression__Group_0__4 : rule__QuantifiedExpression__Group_0__4__Impl ;
    public final void rule__QuantifiedExpression__Group_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17461:1: ( rule__QuantifiedExpression__Group_0__4__Impl )
            // InternalFiacre.g:17462:2: rule__QuantifiedExpression__Group_0__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__4"


    // $ANTLR start "rule__QuantifiedExpression__Group_0__4__Impl"
    // InternalFiacre.g:17468:1: rule__QuantifiedExpression__Group_0__4__Impl : ( ( rule__QuantifiedExpression__ChildAssignment_0_4 ) ) ;
    public final void rule__QuantifiedExpression__Group_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17472:1: ( ( ( rule__QuantifiedExpression__ChildAssignment_0_4 ) ) )
            // InternalFiacre.g:17473:1: ( ( rule__QuantifiedExpression__ChildAssignment_0_4 ) )
            {
            // InternalFiacre.g:17473:1: ( ( rule__QuantifiedExpression__ChildAssignment_0_4 ) )
            // InternalFiacre.g:17474:2: ( rule__QuantifiedExpression__ChildAssignment_0_4 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getChildAssignment_0_4()); 
            }
            // InternalFiacre.g:17475:2: ( rule__QuantifiedExpression__ChildAssignment_0_4 )
            // InternalFiacre.g:17475:3: rule__QuantifiedExpression__ChildAssignment_0_4
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__ChildAssignment_0_4();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getChildAssignment_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0__4__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_0__0"
    // InternalFiacre.g:17484:1: rule__QuantifiedExpression__Group_0_0_0__0 : rule__QuantifiedExpression__Group_0_0_0__0__Impl rule__QuantifiedExpression__Group_0_0_0__1 ;
    public final void rule__QuantifiedExpression__Group_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17488:1: ( rule__QuantifiedExpression__Group_0_0_0__0__Impl rule__QuantifiedExpression__Group_0_0_0__1 )
            // InternalFiacre.g:17489:2: rule__QuantifiedExpression__Group_0_0_0__0__Impl rule__QuantifiedExpression__Group_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_90);
            rule__QuantifiedExpression__Group_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_0__0"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_0__0__Impl"
    // InternalFiacre.g:17496:1: rule__QuantifiedExpression__Group_0_0_0__0__Impl : ( () ) ;
    public final void rule__QuantifiedExpression__Group_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17500:1: ( ( () ) )
            // InternalFiacre.g:17501:1: ( () )
            {
            // InternalFiacre.g:17501:1: ( () )
            // InternalFiacre.g:17502:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getAllExpressionAction_0_0_0_0()); 
            }
            // InternalFiacre.g:17503:2: ()
            // InternalFiacre.g:17503:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getAllExpressionAction_0_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_0__0__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_0__1"
    // InternalFiacre.g:17511:1: rule__QuantifiedExpression__Group_0_0_0__1 : rule__QuantifiedExpression__Group_0_0_0__1__Impl ;
    public final void rule__QuantifiedExpression__Group_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17515:1: ( rule__QuantifiedExpression__Group_0_0_0__1__Impl )
            // InternalFiacre.g:17516:2: rule__QuantifiedExpression__Group_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_0__1"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_0__1__Impl"
    // InternalFiacre.g:17522:1: rule__QuantifiedExpression__Group_0_0_0__1__Impl : ( 'all' ) ;
    public final void rule__QuantifiedExpression__Group_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17526:1: ( ( 'all' ) )
            // InternalFiacre.g:17527:1: ( 'all' )
            {
            // InternalFiacre.g:17527:1: ( 'all' )
            // InternalFiacre.g:17528:2: 'all'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getAllKeyword_0_0_0_1()); 
            }
            match(input,77,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getAllKeyword_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_0__1__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_1__0"
    // InternalFiacre.g:17538:1: rule__QuantifiedExpression__Group_0_0_1__0 : rule__QuantifiedExpression__Group_0_0_1__0__Impl rule__QuantifiedExpression__Group_0_0_1__1 ;
    public final void rule__QuantifiedExpression__Group_0_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17542:1: ( rule__QuantifiedExpression__Group_0_0_1__0__Impl rule__QuantifiedExpression__Group_0_0_1__1 )
            // InternalFiacre.g:17543:2: rule__QuantifiedExpression__Group_0_0_1__0__Impl rule__QuantifiedExpression__Group_0_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_91);
            rule__QuantifiedExpression__Group_0_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_1__0"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_1__0__Impl"
    // InternalFiacre.g:17550:1: rule__QuantifiedExpression__Group_0_0_1__0__Impl : ( () ) ;
    public final void rule__QuantifiedExpression__Group_0_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17554:1: ( ( () ) )
            // InternalFiacre.g:17555:1: ( () )
            {
            // InternalFiacre.g:17555:1: ( () )
            // InternalFiacre.g:17556:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getExistsExpressionAction_0_0_1_0()); 
            }
            // InternalFiacre.g:17557:2: ()
            // InternalFiacre.g:17557:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getExistsExpressionAction_0_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_1__0__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_1__1"
    // InternalFiacre.g:17565:1: rule__QuantifiedExpression__Group_0_0_1__1 : rule__QuantifiedExpression__Group_0_0_1__1__Impl ;
    public final void rule__QuantifiedExpression__Group_0_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17569:1: ( rule__QuantifiedExpression__Group_0_0_1__1__Impl )
            // InternalFiacre.g:17570:2: rule__QuantifiedExpression__Group_0_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_1__1"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_0_1__1__Impl"
    // InternalFiacre.g:17576:1: rule__QuantifiedExpression__Group_0_0_1__1__Impl : ( 'exists' ) ;
    public final void rule__QuantifiedExpression__Group_0_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17580:1: ( ( 'exists' ) )
            // InternalFiacre.g:17581:1: ( 'exists' )
            {
            // InternalFiacre.g:17581:1: ( 'exists' )
            // InternalFiacre.g:17582:2: 'exists'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getExistsKeyword_0_0_1_1()); 
            }
            match(input,78,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getExistsKeyword_0_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_0_1__1__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_2__0"
    // InternalFiacre.g:17592:1: rule__QuantifiedExpression__Group_0_2__0 : rule__QuantifiedExpression__Group_0_2__0__Impl rule__QuantifiedExpression__Group_0_2__1 ;
    public final void rule__QuantifiedExpression__Group_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17596:1: ( rule__QuantifiedExpression__Group_0_2__0__Impl rule__QuantifiedExpression__Group_0_2__1 )
            // InternalFiacre.g:17597:2: rule__QuantifiedExpression__Group_0_2__0__Impl rule__QuantifiedExpression__Group_0_2__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__QuantifiedExpression__Group_0_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_2__0"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_2__0__Impl"
    // InternalFiacre.g:17604:1: rule__QuantifiedExpression__Group_0_2__0__Impl : ( 'in' ) ;
    public final void rule__QuantifiedExpression__Group_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17608:1: ( ( 'in' ) )
            // InternalFiacre.g:17609:1: ( 'in' )
            {
            // InternalFiacre.g:17609:1: ( 'in' )
            // InternalFiacre.g:17610:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getInKeyword_0_2_0()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getInKeyword_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_2__0__Impl"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_2__1"
    // InternalFiacre.g:17619:1: rule__QuantifiedExpression__Group_0_2__1 : rule__QuantifiedExpression__Group_0_2__1__Impl ;
    public final void rule__QuantifiedExpression__Group_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17623:1: ( rule__QuantifiedExpression__Group_0_2__1__Impl )
            // InternalFiacre.g:17624:2: rule__QuantifiedExpression__Group_0_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__Group_0_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_2__1"


    // $ANTLR start "rule__QuantifiedExpression__Group_0_2__1__Impl"
    // InternalFiacre.g:17630:1: rule__QuantifiedExpression__Group_0_2__1__Impl : ( ( rule__QuantifiedExpression__TypeAssignment_0_2_1 ) ) ;
    public final void rule__QuantifiedExpression__Group_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17634:1: ( ( ( rule__QuantifiedExpression__TypeAssignment_0_2_1 ) ) )
            // InternalFiacre.g:17635:1: ( ( rule__QuantifiedExpression__TypeAssignment_0_2_1 ) )
            {
            // InternalFiacre.g:17635:1: ( ( rule__QuantifiedExpression__TypeAssignment_0_2_1 ) )
            // InternalFiacre.g:17636:2: ( rule__QuantifiedExpression__TypeAssignment_0_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getTypeAssignment_0_2_1()); 
            }
            // InternalFiacre.g:17637:2: ( rule__QuantifiedExpression__TypeAssignment_0_2_1 )
            // InternalFiacre.g:17637:3: rule__QuantifiedExpression__TypeAssignment_0_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedExpression__TypeAssignment_0_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getTypeAssignment_0_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__Group_0_2__1__Impl"


    // $ANTLR start "rule__Conditional__Group__0"
    // InternalFiacre.g:17646:1: rule__Conditional__Group__0 : rule__Conditional__Group__0__Impl rule__Conditional__Group__1 ;
    public final void rule__Conditional__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17650:1: ( rule__Conditional__Group__0__Impl rule__Conditional__Group__1 )
            // InternalFiacre.g:17651:2: rule__Conditional__Group__0__Impl rule__Conditional__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_92);
            rule__Conditional__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group__0"


    // $ANTLR start "rule__Conditional__Group__0__Impl"
    // InternalFiacre.g:17658:1: rule__Conditional__Group__0__Impl : ( ruleDisjunction ) ;
    public final void rule__Conditional__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17662:1: ( ( ruleDisjunction ) )
            // InternalFiacre.g:17663:1: ( ruleDisjunction )
            {
            // InternalFiacre.g:17663:1: ( ruleDisjunction )
            // InternalFiacre.g:17664:2: ruleDisjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getDisjunctionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getDisjunctionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group__0__Impl"


    // $ANTLR start "rule__Conditional__Group__1"
    // InternalFiacre.g:17673:1: rule__Conditional__Group__1 : rule__Conditional__Group__1__Impl ;
    public final void rule__Conditional__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17677:1: ( rule__Conditional__Group__1__Impl )
            // InternalFiacre.g:17678:2: rule__Conditional__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group__1"


    // $ANTLR start "rule__Conditional__Group__1__Impl"
    // InternalFiacre.g:17684:1: rule__Conditional__Group__1__Impl : ( ( rule__Conditional__Group_1__0 )? ) ;
    public final void rule__Conditional__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17688:1: ( ( ( rule__Conditional__Group_1__0 )? ) )
            // InternalFiacre.g:17689:1: ( ( rule__Conditional__Group_1__0 )? )
            {
            // InternalFiacre.g:17689:1: ( ( rule__Conditional__Group_1__0 )? )
            // InternalFiacre.g:17690:2: ( rule__Conditional__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getGroup_1()); 
            }
            // InternalFiacre.g:17691:2: ( rule__Conditional__Group_1__0 )?
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( (LA155_0==60) ) {
                alt155=1;
            }
            switch (alt155) {
                case 1 :
                    // InternalFiacre.g:17691:3: rule__Conditional__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Conditional__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group__1__Impl"


    // $ANTLR start "rule__Conditional__Group_1__0"
    // InternalFiacre.g:17700:1: rule__Conditional__Group_1__0 : rule__Conditional__Group_1__0__Impl rule__Conditional__Group_1__1 ;
    public final void rule__Conditional__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17704:1: ( rule__Conditional__Group_1__0__Impl rule__Conditional__Group_1__1 )
            // InternalFiacre.g:17705:2: rule__Conditional__Group_1__0__Impl rule__Conditional__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Conditional__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__0"


    // $ANTLR start "rule__Conditional__Group_1__0__Impl"
    // InternalFiacre.g:17712:1: rule__Conditional__Group_1__0__Impl : ( '?' ) ;
    public final void rule__Conditional__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17716:1: ( ( '?' ) )
            // InternalFiacre.g:17717:1: ( '?' )
            {
            // InternalFiacre.g:17717:1: ( '?' )
            // InternalFiacre.g:17718:2: '?'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getQuestionMarkKeyword_1_0()); 
            }
            match(input,60,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getQuestionMarkKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__0__Impl"


    // $ANTLR start "rule__Conditional__Group_1__1"
    // InternalFiacre.g:17727:1: rule__Conditional__Group_1__1 : rule__Conditional__Group_1__1__Impl rule__Conditional__Group_1__2 ;
    public final void rule__Conditional__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17731:1: ( rule__Conditional__Group_1__1__Impl rule__Conditional__Group_1__2 )
            // InternalFiacre.g:17732:2: rule__Conditional__Group_1__1__Impl rule__Conditional__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Conditional__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__1"


    // $ANTLR start "rule__Conditional__Group_1__1__Impl"
    // InternalFiacre.g:17739:1: rule__Conditional__Group_1__1__Impl : ( () ) ;
    public final void rule__Conditional__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17743:1: ( ( () ) )
            // InternalFiacre.g:17744:1: ( () )
            {
            // InternalFiacre.g:17744:1: ( () )
            // InternalFiacre.g:17745:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getConditionalConditionAction_1_1()); 
            }
            // InternalFiacre.g:17746:2: ()
            // InternalFiacre.g:17746:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getConditionalConditionAction_1_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__1__Impl"


    // $ANTLR start "rule__Conditional__Group_1__2"
    // InternalFiacre.g:17754:1: rule__Conditional__Group_1__2 : rule__Conditional__Group_1__2__Impl rule__Conditional__Group_1__3 ;
    public final void rule__Conditional__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17758:1: ( rule__Conditional__Group_1__2__Impl rule__Conditional__Group_1__3 )
            // InternalFiacre.g:17759:2: rule__Conditional__Group_1__2__Impl rule__Conditional__Group_1__3
            {
            pushFollow(FollowSets000.FOLLOW_14);
            rule__Conditional__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__2"


    // $ANTLR start "rule__Conditional__Group_1__2__Impl"
    // InternalFiacre.g:17766:1: rule__Conditional__Group_1__2__Impl : ( ( rule__Conditional__ThenAssignment_1_2 ) ) ;
    public final void rule__Conditional__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17770:1: ( ( ( rule__Conditional__ThenAssignment_1_2 ) ) )
            // InternalFiacre.g:17771:1: ( ( rule__Conditional__ThenAssignment_1_2 ) )
            {
            // InternalFiacre.g:17771:1: ( ( rule__Conditional__ThenAssignment_1_2 ) )
            // InternalFiacre.g:17772:2: ( rule__Conditional__ThenAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getThenAssignment_1_2()); 
            }
            // InternalFiacre.g:17773:2: ( rule__Conditional__ThenAssignment_1_2 )
            // InternalFiacre.g:17773:3: rule__Conditional__ThenAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__ThenAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getThenAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__2__Impl"


    // $ANTLR start "rule__Conditional__Group_1__3"
    // InternalFiacre.g:17781:1: rule__Conditional__Group_1__3 : rule__Conditional__Group_1__3__Impl rule__Conditional__Group_1__4 ;
    public final void rule__Conditional__Group_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17785:1: ( rule__Conditional__Group_1__3__Impl rule__Conditional__Group_1__4 )
            // InternalFiacre.g:17786:2: rule__Conditional__Group_1__3__Impl rule__Conditional__Group_1__4
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Conditional__Group_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group_1__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__3"


    // $ANTLR start "rule__Conditional__Group_1__3__Impl"
    // InternalFiacre.g:17793:1: rule__Conditional__Group_1__3__Impl : ( ':' ) ;
    public final void rule__Conditional__Group_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17797:1: ( ( ':' ) )
            // InternalFiacre.g:17798:1: ( ':' )
            {
            // InternalFiacre.g:17798:1: ( ':' )
            // InternalFiacre.g:17799:2: ':'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getColonKeyword_1_3()); 
            }
            match(input,20,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getColonKeyword_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__3__Impl"


    // $ANTLR start "rule__Conditional__Group_1__4"
    // InternalFiacre.g:17808:1: rule__Conditional__Group_1__4 : rule__Conditional__Group_1__4__Impl ;
    public final void rule__Conditional__Group_1__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17812:1: ( rule__Conditional__Group_1__4__Impl )
            // InternalFiacre.g:17813:2: rule__Conditional__Group_1__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__Group_1__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__4"


    // $ANTLR start "rule__Conditional__Group_1__4__Impl"
    // InternalFiacre.g:17819:1: rule__Conditional__Group_1__4__Impl : ( ( rule__Conditional__ElseAssignment_1_4 ) ) ;
    public final void rule__Conditional__Group_1__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17823:1: ( ( ( rule__Conditional__ElseAssignment_1_4 ) ) )
            // InternalFiacre.g:17824:1: ( ( rule__Conditional__ElseAssignment_1_4 ) )
            {
            // InternalFiacre.g:17824:1: ( ( rule__Conditional__ElseAssignment_1_4 ) )
            // InternalFiacre.g:17825:2: ( rule__Conditional__ElseAssignment_1_4 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getElseAssignment_1_4()); 
            }
            // InternalFiacre.g:17826:2: ( rule__Conditional__ElseAssignment_1_4 )
            // InternalFiacre.g:17826:3: rule__Conditional__ElseAssignment_1_4
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conditional__ElseAssignment_1_4();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getElseAssignment_1_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__Group_1__4__Impl"


    // $ANTLR start "rule__Disjunction__Group__0"
    // InternalFiacre.g:17835:1: rule__Disjunction__Group__0 : rule__Disjunction__Group__0__Impl rule__Disjunction__Group__1 ;
    public final void rule__Disjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17839:1: ( rule__Disjunction__Group__0__Impl rule__Disjunction__Group__1 )
            // InternalFiacre.g:17840:2: rule__Disjunction__Group__0__Impl rule__Disjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__Disjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group__0"


    // $ANTLR start "rule__Disjunction__Group__0__Impl"
    // InternalFiacre.g:17847:1: rule__Disjunction__Group__0__Impl : ( ruleImplication ) ;
    public final void rule__Disjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17851:1: ( ( ruleImplication ) )
            // InternalFiacre.g:17852:1: ( ruleImplication )
            {
            // InternalFiacre.g:17852:1: ( ruleImplication )
            // InternalFiacre.g:17853:2: ruleImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getImplicationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getImplicationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group__0__Impl"


    // $ANTLR start "rule__Disjunction__Group__1"
    // InternalFiacre.g:17862:1: rule__Disjunction__Group__1 : rule__Disjunction__Group__1__Impl ;
    public final void rule__Disjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17866:1: ( rule__Disjunction__Group__1__Impl )
            // InternalFiacre.g:17867:2: rule__Disjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group__1"


    // $ANTLR start "rule__Disjunction__Group__1__Impl"
    // InternalFiacre.g:17873:1: rule__Disjunction__Group__1__Impl : ( ( rule__Disjunction__Group_1__0 )* ) ;
    public final void rule__Disjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17877:1: ( ( ( rule__Disjunction__Group_1__0 )* ) )
            // InternalFiacre.g:17878:1: ( ( rule__Disjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:17878:1: ( ( rule__Disjunction__Group_1__0 )* )
            // InternalFiacre.g:17879:2: ( rule__Disjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:17880:2: ( rule__Disjunction__Group_1__0 )*
            loop156:
            do {
                int alt156=2;
                int LA156_0 = input.LA(1);

                if ( (LA156_0==79) ) {
                    alt156=1;
                }


                switch (alt156) {
            	case 1 :
            	    // InternalFiacre.g:17880:3: rule__Disjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_94);
            	    rule__Disjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop156;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group__1__Impl"


    // $ANTLR start "rule__Disjunction__Group_1__0"
    // InternalFiacre.g:17889:1: rule__Disjunction__Group_1__0 : rule__Disjunction__Group_1__0__Impl rule__Disjunction__Group_1__1 ;
    public final void rule__Disjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17893:1: ( rule__Disjunction__Group_1__0__Impl rule__Disjunction__Group_1__1 )
            // InternalFiacre.g:17894:2: rule__Disjunction__Group_1__0__Impl rule__Disjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__Disjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__0"


    // $ANTLR start "rule__Disjunction__Group_1__0__Impl"
    // InternalFiacre.g:17901:1: rule__Disjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__Disjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17905:1: ( ( () ) )
            // InternalFiacre.g:17906:1: ( () )
            {
            // InternalFiacre.g:17906:1: ( () )
            // InternalFiacre.g:17907:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getDisjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:17908:2: ()
            // InternalFiacre.g:17908:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getDisjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__0__Impl"


    // $ANTLR start "rule__Disjunction__Group_1__1"
    // InternalFiacre.g:17916:1: rule__Disjunction__Group_1__1 : rule__Disjunction__Group_1__1__Impl rule__Disjunction__Group_1__2 ;
    public final void rule__Disjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17920:1: ( rule__Disjunction__Group_1__1__Impl rule__Disjunction__Group_1__2 )
            // InternalFiacre.g:17921:2: rule__Disjunction__Group_1__1__Impl rule__Disjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Disjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__1"


    // $ANTLR start "rule__Disjunction__Group_1__1__Impl"
    // InternalFiacre.g:17928:1: rule__Disjunction__Group_1__1__Impl : ( 'or' ) ;
    public final void rule__Disjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17932:1: ( ( 'or' ) )
            // InternalFiacre.g:17933:1: ( 'or' )
            {
            // InternalFiacre.g:17933:1: ( 'or' )
            // InternalFiacre.g:17934:2: 'or'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getOrKeyword_1_1()); 
            }
            match(input,79,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getOrKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__1__Impl"


    // $ANTLR start "rule__Disjunction__Group_1__2"
    // InternalFiacre.g:17943:1: rule__Disjunction__Group_1__2 : rule__Disjunction__Group_1__2__Impl ;
    public final void rule__Disjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17947:1: ( rule__Disjunction__Group_1__2__Impl )
            // InternalFiacre.g:17948:2: rule__Disjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__2"


    // $ANTLR start "rule__Disjunction__Group_1__2__Impl"
    // InternalFiacre.g:17954:1: rule__Disjunction__Group_1__2__Impl : ( ( rule__Disjunction__RightAssignment_1_2 ) ) ;
    public final void rule__Disjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17958:1: ( ( ( rule__Disjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:17959:1: ( ( rule__Disjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:17959:1: ( ( rule__Disjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:17960:2: ( rule__Disjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:17961:2: ( rule__Disjunction__RightAssignment_1_2 )
            // InternalFiacre.g:17961:3: rule__Disjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Disjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__Group_1__2__Impl"


    // $ANTLR start "rule__Implication__Group__0"
    // InternalFiacre.g:17970:1: rule__Implication__Group__0 : rule__Implication__Group__0__Impl rule__Implication__Group__1 ;
    public final void rule__Implication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17974:1: ( rule__Implication__Group__0__Impl rule__Implication__Group__1 )
            // InternalFiacre.g:17975:2: rule__Implication__Group__0__Impl rule__Implication__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__Implication__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group__0"


    // $ANTLR start "rule__Implication__Group__0__Impl"
    // InternalFiacre.g:17982:1: rule__Implication__Group__0__Impl : ( ruleConjunction ) ;
    public final void rule__Implication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:17986:1: ( ( ruleConjunction ) )
            // InternalFiacre.g:17987:1: ( ruleConjunction )
            {
            // InternalFiacre.g:17987:1: ( ruleConjunction )
            // InternalFiacre.g:17988:2: ruleConjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getConjunctionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getConjunctionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group__0__Impl"


    // $ANTLR start "rule__Implication__Group__1"
    // InternalFiacre.g:17997:1: rule__Implication__Group__1 : rule__Implication__Group__1__Impl ;
    public final void rule__Implication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18001:1: ( rule__Implication__Group__1__Impl )
            // InternalFiacre.g:18002:2: rule__Implication__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group__1"


    // $ANTLR start "rule__Implication__Group__1__Impl"
    // InternalFiacre.g:18008:1: rule__Implication__Group__1__Impl : ( ( rule__Implication__Group_1__0 )? ) ;
    public final void rule__Implication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18012:1: ( ( ( rule__Implication__Group_1__0 )? ) )
            // InternalFiacre.g:18013:1: ( ( rule__Implication__Group_1__0 )? )
            {
            // InternalFiacre.g:18013:1: ( ( rule__Implication__Group_1__0 )? )
            // InternalFiacre.g:18014:2: ( rule__Implication__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18015:2: ( rule__Implication__Group_1__0 )?
            int alt157=2;
            int LA157_0 = input.LA(1);

            if ( (LA157_0==80) ) {
                alt157=1;
            }
            switch (alt157) {
                case 1 :
                    // InternalFiacre.g:18015:3: rule__Implication__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Implication__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group__1__Impl"


    // $ANTLR start "rule__Implication__Group_1__0"
    // InternalFiacre.g:18024:1: rule__Implication__Group_1__0 : rule__Implication__Group_1__0__Impl rule__Implication__Group_1__1 ;
    public final void rule__Implication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18028:1: ( rule__Implication__Group_1__0__Impl rule__Implication__Group_1__1 )
            // InternalFiacre.g:18029:2: rule__Implication__Group_1__0__Impl rule__Implication__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__Implication__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__0"


    // $ANTLR start "rule__Implication__Group_1__0__Impl"
    // InternalFiacre.g:18036:1: rule__Implication__Group_1__0__Impl : ( () ) ;
    public final void rule__Implication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18040:1: ( ( () ) )
            // InternalFiacre.g:18041:1: ( () )
            {
            // InternalFiacre.g:18041:1: ( () )
            // InternalFiacre.g:18042:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getImplicationLeftAction_1_0()); 
            }
            // InternalFiacre.g:18043:2: ()
            // InternalFiacre.g:18043:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getImplicationLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__0__Impl"


    // $ANTLR start "rule__Implication__Group_1__1"
    // InternalFiacre.g:18051:1: rule__Implication__Group_1__1 : rule__Implication__Group_1__1__Impl rule__Implication__Group_1__2 ;
    public final void rule__Implication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18055:1: ( rule__Implication__Group_1__1__Impl rule__Implication__Group_1__2 )
            // InternalFiacre.g:18056:2: rule__Implication__Group_1__1__Impl rule__Implication__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Implication__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__1"


    // $ANTLR start "rule__Implication__Group_1__1__Impl"
    // InternalFiacre.g:18063:1: rule__Implication__Group_1__1__Impl : ( '=>' ) ;
    public final void rule__Implication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18067:1: ( ( '=>' ) )
            // InternalFiacre.g:18068:1: ( '=>' )
            {
            // InternalFiacre.g:18068:1: ( '=>' )
            // InternalFiacre.g:18069:2: '=>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }
            match(input,80,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__1__Impl"


    // $ANTLR start "rule__Implication__Group_1__2"
    // InternalFiacre.g:18078:1: rule__Implication__Group_1__2 : rule__Implication__Group_1__2__Impl ;
    public final void rule__Implication__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18082:1: ( rule__Implication__Group_1__2__Impl )
            // InternalFiacre.g:18083:2: rule__Implication__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__2"


    // $ANTLR start "rule__Implication__Group_1__2__Impl"
    // InternalFiacre.g:18089:1: rule__Implication__Group_1__2__Impl : ( ( rule__Implication__RightAssignment_1_2 ) ) ;
    public final void rule__Implication__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18093:1: ( ( ( rule__Implication__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:18094:1: ( ( rule__Implication__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:18094:1: ( ( rule__Implication__RightAssignment_1_2 ) )
            // InternalFiacre.g:18095:2: ( rule__Implication__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:18096:2: ( rule__Implication__RightAssignment_1_2 )
            // InternalFiacre.g:18096:3: rule__Implication__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Implication__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__Group_1__2__Impl"


    // $ANTLR start "rule__Conjunction__Group__0"
    // InternalFiacre.g:18105:1: rule__Conjunction__Group__0 : rule__Conjunction__Group__0__Impl rule__Conjunction__Group__1 ;
    public final void rule__Conjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18109:1: ( rule__Conjunction__Group__0__Impl rule__Conjunction__Group__1 )
            // InternalFiacre.g:18110:2: rule__Conjunction__Group__0__Impl rule__Conjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__Conjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group__0"


    // $ANTLR start "rule__Conjunction__Group__0__Impl"
    // InternalFiacre.g:18117:1: rule__Conjunction__Group__0__Impl : ( ruleComparison ) ;
    public final void rule__Conjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18121:1: ( ( ruleComparison ) )
            // InternalFiacre.g:18122:1: ( ruleComparison )
            {
            // InternalFiacre.g:18122:1: ( ruleComparison )
            // InternalFiacre.g:18123:2: ruleComparison
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getComparisonParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleComparison();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getComparisonParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group__0__Impl"


    // $ANTLR start "rule__Conjunction__Group__1"
    // InternalFiacre.g:18132:1: rule__Conjunction__Group__1 : rule__Conjunction__Group__1__Impl ;
    public final void rule__Conjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18136:1: ( rule__Conjunction__Group__1__Impl )
            // InternalFiacre.g:18137:2: rule__Conjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group__1"


    // $ANTLR start "rule__Conjunction__Group__1__Impl"
    // InternalFiacre.g:18143:1: rule__Conjunction__Group__1__Impl : ( ( rule__Conjunction__Group_1__0 )* ) ;
    public final void rule__Conjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18147:1: ( ( ( rule__Conjunction__Group_1__0 )* ) )
            // InternalFiacre.g:18148:1: ( ( rule__Conjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:18148:1: ( ( rule__Conjunction__Group_1__0 )* )
            // InternalFiacre.g:18149:2: ( rule__Conjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18150:2: ( rule__Conjunction__Group_1__0 )*
            loop158:
            do {
                int alt158=2;
                int LA158_0 = input.LA(1);

                if ( (LA158_0==81) ) {
                    alt158=1;
                }


                switch (alt158) {
            	case 1 :
            	    // InternalFiacre.g:18150:3: rule__Conjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_97);
            	    rule__Conjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop158;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group__1__Impl"


    // $ANTLR start "rule__Conjunction__Group_1__0"
    // InternalFiacre.g:18159:1: rule__Conjunction__Group_1__0 : rule__Conjunction__Group_1__0__Impl rule__Conjunction__Group_1__1 ;
    public final void rule__Conjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18163:1: ( rule__Conjunction__Group_1__0__Impl rule__Conjunction__Group_1__1 )
            // InternalFiacre.g:18164:2: rule__Conjunction__Group_1__0__Impl rule__Conjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__Conjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__0"


    // $ANTLR start "rule__Conjunction__Group_1__0__Impl"
    // InternalFiacre.g:18171:1: rule__Conjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__Conjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18175:1: ( ( () ) )
            // InternalFiacre.g:18176:1: ( () )
            {
            // InternalFiacre.g:18176:1: ( () )
            // InternalFiacre.g:18177:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getConjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:18178:2: ()
            // InternalFiacre.g:18178:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getConjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__0__Impl"


    // $ANTLR start "rule__Conjunction__Group_1__1"
    // InternalFiacre.g:18186:1: rule__Conjunction__Group_1__1 : rule__Conjunction__Group_1__1__Impl rule__Conjunction__Group_1__2 ;
    public final void rule__Conjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18190:1: ( rule__Conjunction__Group_1__1__Impl rule__Conjunction__Group_1__2 )
            // InternalFiacre.g:18191:2: rule__Conjunction__Group_1__1__Impl rule__Conjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Conjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__1"


    // $ANTLR start "rule__Conjunction__Group_1__1__Impl"
    // InternalFiacre.g:18198:1: rule__Conjunction__Group_1__1__Impl : ( 'and' ) ;
    public final void rule__Conjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18202:1: ( ( 'and' ) )
            // InternalFiacre.g:18203:1: ( 'and' )
            {
            // InternalFiacre.g:18203:1: ( 'and' )
            // InternalFiacre.g:18204:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getAndKeyword_1_1()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getAndKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__1__Impl"


    // $ANTLR start "rule__Conjunction__Group_1__2"
    // InternalFiacre.g:18213:1: rule__Conjunction__Group_1__2 : rule__Conjunction__Group_1__2__Impl ;
    public final void rule__Conjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18217:1: ( rule__Conjunction__Group_1__2__Impl )
            // InternalFiacre.g:18218:2: rule__Conjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__2"


    // $ANTLR start "rule__Conjunction__Group_1__2__Impl"
    // InternalFiacre.g:18224:1: rule__Conjunction__Group_1__2__Impl : ( ( rule__Conjunction__RightAssignment_1_2 ) ) ;
    public final void rule__Conjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18228:1: ( ( ( rule__Conjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:18229:1: ( ( rule__Conjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:18229:1: ( ( rule__Conjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:18230:2: ( rule__Conjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:18231:2: ( rule__Conjunction__RightAssignment_1_2 )
            // InternalFiacre.g:18231:3: rule__Conjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Conjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__Group_1__2__Impl"


    // $ANTLR start "rule__Comparison__Group__0"
    // InternalFiacre.g:18240:1: rule__Comparison__Group__0 : rule__Comparison__Group__0__Impl rule__Comparison__Group__1 ;
    public final void rule__Comparison__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18244:1: ( rule__Comparison__Group__0__Impl rule__Comparison__Group__1 )
            // InternalFiacre.g:18245:2: rule__Comparison__Group__0__Impl rule__Comparison__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_98);
            rule__Comparison__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group__0"


    // $ANTLR start "rule__Comparison__Group__0__Impl"
    // InternalFiacre.g:18252:1: rule__Comparison__Group__0__Impl : ( ruleAddition ) ;
    public final void rule__Comparison__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18256:1: ( ( ruleAddition ) )
            // InternalFiacre.g:18257:1: ( ruleAddition )
            {
            // InternalFiacre.g:18257:1: ( ruleAddition )
            // InternalFiacre.g:18258:2: ruleAddition
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getAdditionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAddition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getAdditionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group__0__Impl"


    // $ANTLR start "rule__Comparison__Group__1"
    // InternalFiacre.g:18267:1: rule__Comparison__Group__1 : rule__Comparison__Group__1__Impl ;
    public final void rule__Comparison__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18271:1: ( rule__Comparison__Group__1__Impl )
            // InternalFiacre.g:18272:2: rule__Comparison__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group__1"


    // $ANTLR start "rule__Comparison__Group__1__Impl"
    // InternalFiacre.g:18278:1: rule__Comparison__Group__1__Impl : ( ( rule__Comparison__Group_1__0 )? ) ;
    public final void rule__Comparison__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18282:1: ( ( ( rule__Comparison__Group_1__0 )? ) )
            // InternalFiacre.g:18283:1: ( ( rule__Comparison__Group_1__0 )? )
            {
            // InternalFiacre.g:18283:1: ( ( rule__Comparison__Group_1__0 )? )
            // InternalFiacre.g:18284:2: ( rule__Comparison__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18285:2: ( rule__Comparison__Group_1__0 )?
            int alt159=2;
            int LA159_0 = input.LA(1);

            if ( (LA159_0==16||(LA159_0>=82 && LA159_0<=86)) ) {
                alt159=1;
            }
            switch (alt159) {
                case 1 :
                    // InternalFiacre.g:18285:3: rule__Comparison__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Comparison__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1__0"
    // InternalFiacre.g:18294:1: rule__Comparison__Group_1__0 : rule__Comparison__Group_1__0__Impl rule__Comparison__Group_1__1 ;
    public final void rule__Comparison__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18298:1: ( rule__Comparison__Group_1__0__Impl rule__Comparison__Group_1__1 )
            // InternalFiacre.g:18299:2: rule__Comparison__Group_1__0__Impl rule__Comparison__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Comparison__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1__0"


    // $ANTLR start "rule__Comparison__Group_1__0__Impl"
    // InternalFiacre.g:18306:1: rule__Comparison__Group_1__0__Impl : ( ( rule__Comparison__Alternatives_1_0 ) ) ;
    public final void rule__Comparison__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18310:1: ( ( ( rule__Comparison__Alternatives_1_0 ) ) )
            // InternalFiacre.g:18311:1: ( ( rule__Comparison__Alternatives_1_0 ) )
            {
            // InternalFiacre.g:18311:1: ( ( rule__Comparison__Alternatives_1_0 ) )
            // InternalFiacre.g:18312:2: ( rule__Comparison__Alternatives_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getAlternatives_1_0()); 
            }
            // InternalFiacre.g:18313:2: ( rule__Comparison__Alternatives_1_0 )
            // InternalFiacre.g:18313:3: rule__Comparison__Alternatives_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Alternatives_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getAlternatives_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1__1"
    // InternalFiacre.g:18321:1: rule__Comparison__Group_1__1 : rule__Comparison__Group_1__1__Impl ;
    public final void rule__Comparison__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18325:1: ( rule__Comparison__Group_1__1__Impl )
            // InternalFiacre.g:18326:2: rule__Comparison__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1__1"


    // $ANTLR start "rule__Comparison__Group_1__1__Impl"
    // InternalFiacre.g:18332:1: rule__Comparison__Group_1__1__Impl : ( ( rule__Comparison__RightAssignment_1_1 ) ) ;
    public final void rule__Comparison__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18336:1: ( ( ( rule__Comparison__RightAssignment_1_1 ) ) )
            // InternalFiacre.g:18337:1: ( ( rule__Comparison__RightAssignment_1_1 ) )
            {
            // InternalFiacre.g:18337:1: ( ( rule__Comparison__RightAssignment_1_1 ) )
            // InternalFiacre.g:18338:2: ( rule__Comparison__RightAssignment_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getRightAssignment_1_1()); 
            }
            // InternalFiacre.g:18339:2: ( rule__Comparison__RightAssignment_1_1 )
            // InternalFiacre.g:18339:3: rule__Comparison__RightAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__RightAssignment_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getRightAssignment_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_0__0"
    // InternalFiacre.g:18348:1: rule__Comparison__Group_1_0_0__0 : rule__Comparison__Group_1_0_0__0__Impl rule__Comparison__Group_1_0_0__1 ;
    public final void rule__Comparison__Group_1_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18352:1: ( rule__Comparison__Group_1_0_0__0__Impl rule__Comparison__Group_1_0_0__1 )
            // InternalFiacre.g:18353:2: rule__Comparison__Group_1_0_0__0__Impl rule__Comparison__Group_1_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_99);
            rule__Comparison__Group_1_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_0__0"


    // $ANTLR start "rule__Comparison__Group_1_0_0__0__Impl"
    // InternalFiacre.g:18360:1: rule__Comparison__Group_1_0_0__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18364:1: ( ( () ) )
            // InternalFiacre.g:18365:1: ( () )
            {
            // InternalFiacre.g:18365:1: ( () )
            // InternalFiacre.g:18366:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonEqualLeftAction_1_0_0_0()); 
            }
            // InternalFiacre.g:18367:2: ()
            // InternalFiacre.g:18367:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonEqualLeftAction_1_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_0__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_0__1"
    // InternalFiacre.g:18375:1: rule__Comparison__Group_1_0_0__1 : rule__Comparison__Group_1_0_0__1__Impl ;
    public final void rule__Comparison__Group_1_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18379:1: ( rule__Comparison__Group_1_0_0__1__Impl )
            // InternalFiacre.g:18380:2: rule__Comparison__Group_1_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_0__1"


    // $ANTLR start "rule__Comparison__Group_1_0_0__1__Impl"
    // InternalFiacre.g:18386:1: rule__Comparison__Group_1_0_0__1__Impl : ( '=' ) ;
    public final void rule__Comparison__Group_1_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18390:1: ( ( '=' ) )
            // InternalFiacre.g:18391:1: ( '=' )
            {
            // InternalFiacre.g:18391:1: ( '=' )
            // InternalFiacre.g:18392:2: '='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getEqualsSignKeyword_1_0_0_1()); 
            }
            match(input,82,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getEqualsSignKeyword_1_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_0__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_1__0"
    // InternalFiacre.g:18402:1: rule__Comparison__Group_1_0_1__0 : rule__Comparison__Group_1_0_1__0__Impl rule__Comparison__Group_1_0_1__1 ;
    public final void rule__Comparison__Group_1_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18406:1: ( rule__Comparison__Group_1_0_1__0__Impl rule__Comparison__Group_1_0_1__1 )
            // InternalFiacre.g:18407:2: rule__Comparison__Group_1_0_1__0__Impl rule__Comparison__Group_1_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_100);
            rule__Comparison__Group_1_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_1__0"


    // $ANTLR start "rule__Comparison__Group_1_0_1__0__Impl"
    // InternalFiacre.g:18414:1: rule__Comparison__Group_1_0_1__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18418:1: ( ( () ) )
            // InternalFiacre.g:18419:1: ( () )
            {
            // InternalFiacre.g:18419:1: ( () )
            // InternalFiacre.g:18420:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonNotEqualLeftAction_1_0_1_0()); 
            }
            // InternalFiacre.g:18421:2: ()
            // InternalFiacre.g:18421:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonNotEqualLeftAction_1_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_1__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_1__1"
    // InternalFiacre.g:18429:1: rule__Comparison__Group_1_0_1__1 : rule__Comparison__Group_1_0_1__1__Impl ;
    public final void rule__Comparison__Group_1_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18433:1: ( rule__Comparison__Group_1_0_1__1__Impl )
            // InternalFiacre.g:18434:2: rule__Comparison__Group_1_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_1__1"


    // $ANTLR start "rule__Comparison__Group_1_0_1__1__Impl"
    // InternalFiacre.g:18440:1: rule__Comparison__Group_1_0_1__1__Impl : ( '<>' ) ;
    public final void rule__Comparison__Group_1_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18444:1: ( ( '<>' ) )
            // InternalFiacre.g:18445:1: ( '<>' )
            {
            // InternalFiacre.g:18445:1: ( '<>' )
            // InternalFiacre.g:18446:2: '<>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getLessThanSignGreaterThanSignKeyword_1_0_1_1()); 
            }
            match(input,83,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getLessThanSignGreaterThanSignKeyword_1_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_1__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_2__0"
    // InternalFiacre.g:18456:1: rule__Comparison__Group_1_0_2__0 : rule__Comparison__Group_1_0_2__0__Impl rule__Comparison__Group_1_0_2__1 ;
    public final void rule__Comparison__Group_1_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18460:1: ( rule__Comparison__Group_1_0_2__0__Impl rule__Comparison__Group_1_0_2__1 )
            // InternalFiacre.g:18461:2: rule__Comparison__Group_1_0_2__0__Impl rule__Comparison__Group_1_0_2__1
            {
            pushFollow(FollowSets000.FOLLOW_101);
            rule__Comparison__Group_1_0_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_2__0"


    // $ANTLR start "rule__Comparison__Group_1_0_2__0__Impl"
    // InternalFiacre.g:18468:1: rule__Comparison__Group_1_0_2__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18472:1: ( ( () ) )
            // InternalFiacre.g:18473:1: ( () )
            {
            // InternalFiacre.g:18473:1: ( () )
            // InternalFiacre.g:18474:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonLesserLeftAction_1_0_2_0()); 
            }
            // InternalFiacre.g:18475:2: ()
            // InternalFiacre.g:18475:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonLesserLeftAction_1_0_2_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_2__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_2__1"
    // InternalFiacre.g:18483:1: rule__Comparison__Group_1_0_2__1 : rule__Comparison__Group_1_0_2__1__Impl ;
    public final void rule__Comparison__Group_1_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18487:1: ( rule__Comparison__Group_1_0_2__1__Impl )
            // InternalFiacre.g:18488:2: rule__Comparison__Group_1_0_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_2__1"


    // $ANTLR start "rule__Comparison__Group_1_0_2__1__Impl"
    // InternalFiacre.g:18494:1: rule__Comparison__Group_1_0_2__1__Impl : ( '<' ) ;
    public final void rule__Comparison__Group_1_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18498:1: ( ( '<' ) )
            // InternalFiacre.g:18499:1: ( '<' )
            {
            // InternalFiacre.g:18499:1: ( '<' )
            // InternalFiacre.g:18500:2: '<'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getLessThanSignKeyword_1_0_2_1()); 
            }
            match(input,84,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getLessThanSignKeyword_1_0_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_2__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_3__0"
    // InternalFiacre.g:18510:1: rule__Comparison__Group_1_0_3__0 : rule__Comparison__Group_1_0_3__0__Impl rule__Comparison__Group_1_0_3__1 ;
    public final void rule__Comparison__Group_1_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18514:1: ( rule__Comparison__Group_1_0_3__0__Impl rule__Comparison__Group_1_0_3__1 )
            // InternalFiacre.g:18515:2: rule__Comparison__Group_1_0_3__0__Impl rule__Comparison__Group_1_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_102);
            rule__Comparison__Group_1_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_3__0"


    // $ANTLR start "rule__Comparison__Group_1_0_3__0__Impl"
    // InternalFiacre.g:18522:1: rule__Comparison__Group_1_0_3__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18526:1: ( ( () ) )
            // InternalFiacre.g:18527:1: ( () )
            {
            // InternalFiacre.g:18527:1: ( () )
            // InternalFiacre.g:18528:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonLesserEqualLeftAction_1_0_3_0()); 
            }
            // InternalFiacre.g:18529:2: ()
            // InternalFiacre.g:18529:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonLesserEqualLeftAction_1_0_3_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_3__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_3__1"
    // InternalFiacre.g:18537:1: rule__Comparison__Group_1_0_3__1 : rule__Comparison__Group_1_0_3__1__Impl ;
    public final void rule__Comparison__Group_1_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18541:1: ( rule__Comparison__Group_1_0_3__1__Impl )
            // InternalFiacre.g:18542:2: rule__Comparison__Group_1_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_3__1"


    // $ANTLR start "rule__Comparison__Group_1_0_3__1__Impl"
    // InternalFiacre.g:18548:1: rule__Comparison__Group_1_0_3__1__Impl : ( '<=' ) ;
    public final void rule__Comparison__Group_1_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18552:1: ( ( '<=' ) )
            // InternalFiacre.g:18553:1: ( '<=' )
            {
            // InternalFiacre.g:18553:1: ( '<=' )
            // InternalFiacre.g:18554:2: '<='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getLessThanSignEqualsSignKeyword_1_0_3_1()); 
            }
            match(input,85,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getLessThanSignEqualsSignKeyword_1_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_3__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_4__0"
    // InternalFiacre.g:18564:1: rule__Comparison__Group_1_0_4__0 : rule__Comparison__Group_1_0_4__0__Impl rule__Comparison__Group_1_0_4__1 ;
    public final void rule__Comparison__Group_1_0_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18568:1: ( rule__Comparison__Group_1_0_4__0__Impl rule__Comparison__Group_1_0_4__1 )
            // InternalFiacre.g:18569:2: rule__Comparison__Group_1_0_4__0__Impl rule__Comparison__Group_1_0_4__1
            {
            pushFollow(FollowSets000.FOLLOW_8);
            rule__Comparison__Group_1_0_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_4__0"


    // $ANTLR start "rule__Comparison__Group_1_0_4__0__Impl"
    // InternalFiacre.g:18576:1: rule__Comparison__Group_1_0_4__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18580:1: ( ( () ) )
            // InternalFiacre.g:18581:1: ( () )
            {
            // InternalFiacre.g:18581:1: ( () )
            // InternalFiacre.g:18582:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonGreaterLeftAction_1_0_4_0()); 
            }
            // InternalFiacre.g:18583:2: ()
            // InternalFiacre.g:18583:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonGreaterLeftAction_1_0_4_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_4__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_4__1"
    // InternalFiacre.g:18591:1: rule__Comparison__Group_1_0_4__1 : rule__Comparison__Group_1_0_4__1__Impl ;
    public final void rule__Comparison__Group_1_0_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18595:1: ( rule__Comparison__Group_1_0_4__1__Impl )
            // InternalFiacre.g:18596:2: rule__Comparison__Group_1_0_4__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_4__1"


    // $ANTLR start "rule__Comparison__Group_1_0_4__1__Impl"
    // InternalFiacre.g:18602:1: rule__Comparison__Group_1_0_4__1__Impl : ( '>' ) ;
    public final void rule__Comparison__Group_1_0_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18606:1: ( ( '>' ) )
            // InternalFiacre.g:18607:1: ( '>' )
            {
            // InternalFiacre.g:18607:1: ( '>' )
            // InternalFiacre.g:18608:2: '>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getGreaterThanSignKeyword_1_0_4_1()); 
            }
            match(input,16,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getGreaterThanSignKeyword_1_0_4_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_4__1__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_5__0"
    // InternalFiacre.g:18618:1: rule__Comparison__Group_1_0_5__0 : rule__Comparison__Group_1_0_5__0__Impl rule__Comparison__Group_1_0_5__1 ;
    public final void rule__Comparison__Group_1_0_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18622:1: ( rule__Comparison__Group_1_0_5__0__Impl rule__Comparison__Group_1_0_5__1 )
            // InternalFiacre.g:18623:2: rule__Comparison__Group_1_0_5__0__Impl rule__Comparison__Group_1_0_5__1
            {
            pushFollow(FollowSets000.FOLLOW_98);
            rule__Comparison__Group_1_0_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_5__0"


    // $ANTLR start "rule__Comparison__Group_1_0_5__0__Impl"
    // InternalFiacre.g:18630:1: rule__Comparison__Group_1_0_5__0__Impl : ( () ) ;
    public final void rule__Comparison__Group_1_0_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18634:1: ( ( () ) )
            // InternalFiacre.g:18635:1: ( () )
            {
            // InternalFiacre.g:18635:1: ( () )
            // InternalFiacre.g:18636:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getComparisonGreaterEqualLeftAction_1_0_5_0()); 
            }
            // InternalFiacre.g:18637:2: ()
            // InternalFiacre.g:18637:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getComparisonGreaterEqualLeftAction_1_0_5_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_5__0__Impl"


    // $ANTLR start "rule__Comparison__Group_1_0_5__1"
    // InternalFiacre.g:18645:1: rule__Comparison__Group_1_0_5__1 : rule__Comparison__Group_1_0_5__1__Impl ;
    public final void rule__Comparison__Group_1_0_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18649:1: ( rule__Comparison__Group_1_0_5__1__Impl )
            // InternalFiacre.g:18650:2: rule__Comparison__Group_1_0_5__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Comparison__Group_1_0_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_5__1"


    // $ANTLR start "rule__Comparison__Group_1_0_5__1__Impl"
    // InternalFiacre.g:18656:1: rule__Comparison__Group_1_0_5__1__Impl : ( '>=' ) ;
    public final void rule__Comparison__Group_1_0_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18660:1: ( ( '>=' ) )
            // InternalFiacre.g:18661:1: ( '>=' )
            {
            // InternalFiacre.g:18661:1: ( '>=' )
            // InternalFiacre.g:18662:2: '>='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getGreaterThanSignEqualsSignKeyword_1_0_5_1()); 
            }
            match(input,86,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getGreaterThanSignEqualsSignKeyword_1_0_5_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__Group_1_0_5__1__Impl"


    // $ANTLR start "rule__Addition__Group__0"
    // InternalFiacre.g:18672:1: rule__Addition__Group__0 : rule__Addition__Group__0__Impl rule__Addition__Group__1 ;
    public final void rule__Addition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18676:1: ( rule__Addition__Group__0__Impl rule__Addition__Group__1 )
            // InternalFiacre.g:18677:2: rule__Addition__Group__0__Impl rule__Addition__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_103);
            rule__Addition__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__0"


    // $ANTLR start "rule__Addition__Group__0__Impl"
    // InternalFiacre.g:18684:1: rule__Addition__Group__0__Impl : ( ruleSubstraction ) ;
    public final void rule__Addition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18688:1: ( ( ruleSubstraction ) )
            // InternalFiacre.g:18689:1: ( ruleSubstraction )
            {
            // InternalFiacre.g:18689:1: ( ruleSubstraction )
            // InternalFiacre.g:18690:2: ruleSubstraction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getSubstractionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleSubstraction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getSubstractionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__0__Impl"


    // $ANTLR start "rule__Addition__Group__1"
    // InternalFiacre.g:18699:1: rule__Addition__Group__1 : rule__Addition__Group__1__Impl ;
    public final void rule__Addition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18703:1: ( rule__Addition__Group__1__Impl )
            // InternalFiacre.g:18704:2: rule__Addition__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__1"


    // $ANTLR start "rule__Addition__Group__1__Impl"
    // InternalFiacre.g:18710:1: rule__Addition__Group__1__Impl : ( ( rule__Addition__Group_1__0 )* ) ;
    public final void rule__Addition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18714:1: ( ( ( rule__Addition__Group_1__0 )* ) )
            // InternalFiacre.g:18715:1: ( ( rule__Addition__Group_1__0 )* )
            {
            // InternalFiacre.g:18715:1: ( ( rule__Addition__Group_1__0 )* )
            // InternalFiacre.g:18716:2: ( rule__Addition__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18717:2: ( rule__Addition__Group_1__0 )*
            loop160:
            do {
                int alt160=2;
                int LA160_0 = input.LA(1);

                if ( (LA160_0==14) ) {
                    int LA160_2 = input.LA(2);

                    if ( (LA160_2==RULE_ID||LA160_2==14||LA160_2==22||LA160_2==42||LA160_2==87||(LA160_2>=91 && LA160_2<=97)||(LA160_2>=99 && LA160_2<=100)||LA160_2==102||(LA160_2>=104 && LA160_2<=107)) ) {
                        alt160=1;
                    }
                    else if ( (LA160_2==RULE_INT) ) {
                        int LA160_4 = input.LA(3);

                        if ( (synpred230_InternalFiacre()) ) {
                            alt160=1;
                        }


                    }


                }


                switch (alt160) {
            	case 1 :
            	    // InternalFiacre.g:18717:3: rule__Addition__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_104);
            	    rule__Addition__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop160;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__1__Impl"


    // $ANTLR start "rule__Addition__Group_1__0"
    // InternalFiacre.g:18726:1: rule__Addition__Group_1__0 : rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 ;
    public final void rule__Addition__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18730:1: ( rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 )
            // InternalFiacre.g:18731:2: rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_103);
            rule__Addition__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__0"


    // $ANTLR start "rule__Addition__Group_1__0__Impl"
    // InternalFiacre.g:18738:1: rule__Addition__Group_1__0__Impl : ( () ) ;
    public final void rule__Addition__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18742:1: ( ( () ) )
            // InternalFiacre.g:18743:1: ( () )
            {
            // InternalFiacre.g:18743:1: ( () )
            // InternalFiacre.g:18744:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getAdditionLeftAction_1_0()); 
            }
            // InternalFiacre.g:18745:2: ()
            // InternalFiacre.g:18745:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getAdditionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__0__Impl"


    // $ANTLR start "rule__Addition__Group_1__1"
    // InternalFiacre.g:18753:1: rule__Addition__Group_1__1 : rule__Addition__Group_1__1__Impl rule__Addition__Group_1__2 ;
    public final void rule__Addition__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18757:1: ( rule__Addition__Group_1__1__Impl rule__Addition__Group_1__2 )
            // InternalFiacre.g:18758:2: rule__Addition__Group_1__1__Impl rule__Addition__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Addition__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__1"


    // $ANTLR start "rule__Addition__Group_1__1__Impl"
    // InternalFiacre.g:18765:1: rule__Addition__Group_1__1__Impl : ( '+' ) ;
    public final void rule__Addition__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18769:1: ( ( '+' ) )
            // InternalFiacre.g:18770:1: ( '+' )
            {
            // InternalFiacre.g:18770:1: ( '+' )
            // InternalFiacre.g:18771:2: '+'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_1()); 
            }
            match(input,14,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__1__Impl"


    // $ANTLR start "rule__Addition__Group_1__2"
    // InternalFiacre.g:18780:1: rule__Addition__Group_1__2 : rule__Addition__Group_1__2__Impl ;
    public final void rule__Addition__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18784:1: ( rule__Addition__Group_1__2__Impl )
            // InternalFiacre.g:18785:2: rule__Addition__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__2"


    // $ANTLR start "rule__Addition__Group_1__2__Impl"
    // InternalFiacre.g:18791:1: rule__Addition__Group_1__2__Impl : ( ( rule__Addition__RightAssignment_1_2 ) ) ;
    public final void rule__Addition__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18795:1: ( ( ( rule__Addition__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:18796:1: ( ( rule__Addition__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:18796:1: ( ( rule__Addition__RightAssignment_1_2 ) )
            // InternalFiacre.g:18797:2: ( rule__Addition__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:18798:2: ( rule__Addition__RightAssignment_1_2 )
            // InternalFiacre.g:18798:3: rule__Addition__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Addition__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__2__Impl"


    // $ANTLR start "rule__Substraction__Group__0"
    // InternalFiacre.g:18807:1: rule__Substraction__Group__0 : rule__Substraction__Group__0__Impl rule__Substraction__Group__1 ;
    public final void rule__Substraction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18811:1: ( rule__Substraction__Group__0__Impl rule__Substraction__Group__1 )
            // InternalFiacre.g:18812:2: rule__Substraction__Group__0__Impl rule__Substraction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_105);
            rule__Substraction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group__0"


    // $ANTLR start "rule__Substraction__Group__0__Impl"
    // InternalFiacre.g:18819:1: rule__Substraction__Group__0__Impl : ( ruleMultiplication ) ;
    public final void rule__Substraction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18823:1: ( ( ruleMultiplication ) )
            // InternalFiacre.g:18824:1: ( ruleMultiplication )
            {
            // InternalFiacre.g:18824:1: ( ruleMultiplication )
            // InternalFiacre.g:18825:2: ruleMultiplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getMultiplicationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleMultiplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getMultiplicationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group__0__Impl"


    // $ANTLR start "rule__Substraction__Group__1"
    // InternalFiacre.g:18834:1: rule__Substraction__Group__1 : rule__Substraction__Group__1__Impl ;
    public final void rule__Substraction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18838:1: ( rule__Substraction__Group__1__Impl )
            // InternalFiacre.g:18839:2: rule__Substraction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group__1"


    // $ANTLR start "rule__Substraction__Group__1__Impl"
    // InternalFiacre.g:18845:1: rule__Substraction__Group__1__Impl : ( ( rule__Substraction__Group_1__0 )* ) ;
    public final void rule__Substraction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18849:1: ( ( ( rule__Substraction__Group_1__0 )* ) )
            // InternalFiacre.g:18850:1: ( ( rule__Substraction__Group_1__0 )* )
            {
            // InternalFiacre.g:18850:1: ( ( rule__Substraction__Group_1__0 )* )
            // InternalFiacre.g:18851:2: ( rule__Substraction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18852:2: ( rule__Substraction__Group_1__0 )*
            loop161:
            do {
                int alt161=2;
                int LA161_0 = input.LA(1);

                if ( (LA161_0==87) ) {
                    int LA161_2 = input.LA(2);

                    if ( (LA161_2==RULE_ID||LA161_2==14||LA161_2==22||LA161_2==42||LA161_2==87||(LA161_2>=91 && LA161_2<=97)||(LA161_2>=99 && LA161_2<=100)||LA161_2==102||(LA161_2>=104 && LA161_2<=107)) ) {
                        alt161=1;
                    }
                    else if ( (LA161_2==RULE_INT) ) {
                        int LA161_4 = input.LA(3);

                        if ( (synpred231_InternalFiacre()) ) {
                            alt161=1;
                        }


                    }


                }


                switch (alt161) {
            	case 1 :
            	    // InternalFiacre.g:18852:3: rule__Substraction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_106);
            	    rule__Substraction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop161;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group__1__Impl"


    // $ANTLR start "rule__Substraction__Group_1__0"
    // InternalFiacre.g:18861:1: rule__Substraction__Group_1__0 : rule__Substraction__Group_1__0__Impl rule__Substraction__Group_1__1 ;
    public final void rule__Substraction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18865:1: ( rule__Substraction__Group_1__0__Impl rule__Substraction__Group_1__1 )
            // InternalFiacre.g:18866:2: rule__Substraction__Group_1__0__Impl rule__Substraction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_105);
            rule__Substraction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__0"


    // $ANTLR start "rule__Substraction__Group_1__0__Impl"
    // InternalFiacre.g:18873:1: rule__Substraction__Group_1__0__Impl : ( () ) ;
    public final void rule__Substraction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18877:1: ( ( () ) )
            // InternalFiacre.g:18878:1: ( () )
            {
            // InternalFiacre.g:18878:1: ( () )
            // InternalFiacre.g:18879:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getSubstractionLeftAction_1_0()); 
            }
            // InternalFiacre.g:18880:2: ()
            // InternalFiacre.g:18880:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getSubstractionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__0__Impl"


    // $ANTLR start "rule__Substraction__Group_1__1"
    // InternalFiacre.g:18888:1: rule__Substraction__Group_1__1 : rule__Substraction__Group_1__1__Impl rule__Substraction__Group_1__2 ;
    public final void rule__Substraction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18892:1: ( rule__Substraction__Group_1__1__Impl rule__Substraction__Group_1__2 )
            // InternalFiacre.g:18893:2: rule__Substraction__Group_1__1__Impl rule__Substraction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Substraction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__1"


    // $ANTLR start "rule__Substraction__Group_1__1__Impl"
    // InternalFiacre.g:18900:1: rule__Substraction__Group_1__1__Impl : ( '-' ) ;
    public final void rule__Substraction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18904:1: ( ( '-' ) )
            // InternalFiacre.g:18905:1: ( '-' )
            {
            // InternalFiacre.g:18905:1: ( '-' )
            // InternalFiacre.g:18906:2: '-'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getHyphenMinusKeyword_1_1()); 
            }
            match(input,87,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getHyphenMinusKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__1__Impl"


    // $ANTLR start "rule__Substraction__Group_1__2"
    // InternalFiacre.g:18915:1: rule__Substraction__Group_1__2 : rule__Substraction__Group_1__2__Impl ;
    public final void rule__Substraction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18919:1: ( rule__Substraction__Group_1__2__Impl )
            // InternalFiacre.g:18920:2: rule__Substraction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__2"


    // $ANTLR start "rule__Substraction__Group_1__2__Impl"
    // InternalFiacre.g:18926:1: rule__Substraction__Group_1__2__Impl : ( ( rule__Substraction__RightAssignment_1_2 ) ) ;
    public final void rule__Substraction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18930:1: ( ( ( rule__Substraction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:18931:1: ( ( rule__Substraction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:18931:1: ( ( rule__Substraction__RightAssignment_1_2 ) )
            // InternalFiacre.g:18932:2: ( rule__Substraction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:18933:2: ( rule__Substraction__RightAssignment_1_2 )
            // InternalFiacre.g:18933:3: rule__Substraction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Substraction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__Group_1__2__Impl"


    // $ANTLR start "rule__Multiplication__Group__0"
    // InternalFiacre.g:18942:1: rule__Multiplication__Group__0 : rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 ;
    public final void rule__Multiplication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18946:1: ( rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 )
            // InternalFiacre.g:18947:2: rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_107);
            rule__Multiplication__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__0"


    // $ANTLR start "rule__Multiplication__Group__0__Impl"
    // InternalFiacre.g:18954:1: rule__Multiplication__Group__0__Impl : ( ruleDivision ) ;
    public final void rule__Multiplication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18958:1: ( ( ruleDivision ) )
            // InternalFiacre.g:18959:1: ( ruleDivision )
            {
            // InternalFiacre.g:18959:1: ( ruleDivision )
            // InternalFiacre.g:18960:2: ruleDivision
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getDivisionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDivision();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getDivisionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__0__Impl"


    // $ANTLR start "rule__Multiplication__Group__1"
    // InternalFiacre.g:18969:1: rule__Multiplication__Group__1 : rule__Multiplication__Group__1__Impl ;
    public final void rule__Multiplication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18973:1: ( rule__Multiplication__Group__1__Impl )
            // InternalFiacre.g:18974:2: rule__Multiplication__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__1"


    // $ANTLR start "rule__Multiplication__Group__1__Impl"
    // InternalFiacre.g:18980:1: rule__Multiplication__Group__1__Impl : ( ( rule__Multiplication__Group_1__0 )* ) ;
    public final void rule__Multiplication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:18984:1: ( ( ( rule__Multiplication__Group_1__0 )* ) )
            // InternalFiacre.g:18985:1: ( ( rule__Multiplication__Group_1__0 )* )
            {
            // InternalFiacre.g:18985:1: ( ( rule__Multiplication__Group_1__0 )* )
            // InternalFiacre.g:18986:2: ( rule__Multiplication__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:18987:2: ( rule__Multiplication__Group_1__0 )*
            loop162:
            do {
                int alt162=2;
                int LA162_0 = input.LA(1);

                if ( (LA162_0==88) ) {
                    alt162=1;
                }


                switch (alt162) {
            	case 1 :
            	    // InternalFiacre.g:18987:3: rule__Multiplication__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_108);
            	    rule__Multiplication__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop162;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1__0"
    // InternalFiacre.g:18996:1: rule__Multiplication__Group_1__0 : rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 ;
    public final void rule__Multiplication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19000:1: ( rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 )
            // InternalFiacre.g:19001:2: rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_107);
            rule__Multiplication__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__0"


    // $ANTLR start "rule__Multiplication__Group_1__0__Impl"
    // InternalFiacre.g:19008:1: rule__Multiplication__Group_1__0__Impl : ( () ) ;
    public final void rule__Multiplication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19012:1: ( ( () ) )
            // InternalFiacre.g:19013:1: ( () )
            {
            // InternalFiacre.g:19013:1: ( () )
            // InternalFiacre.g:19014:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getMultiplicationLeftAction_1_0()); 
            }
            // InternalFiacre.g:19015:2: ()
            // InternalFiacre.g:19015:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getMultiplicationLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__0__Impl"


    // $ANTLR start "rule__Multiplication__Group_1__1"
    // InternalFiacre.g:19023:1: rule__Multiplication__Group_1__1 : rule__Multiplication__Group_1__1__Impl rule__Multiplication__Group_1__2 ;
    public final void rule__Multiplication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19027:1: ( rule__Multiplication__Group_1__1__Impl rule__Multiplication__Group_1__2 )
            // InternalFiacre.g:19028:2: rule__Multiplication__Group_1__1__Impl rule__Multiplication__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Multiplication__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__1"


    // $ANTLR start "rule__Multiplication__Group_1__1__Impl"
    // InternalFiacre.g:19035:1: rule__Multiplication__Group_1__1__Impl : ( '*' ) ;
    public final void rule__Multiplication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19039:1: ( ( '*' ) )
            // InternalFiacre.g:19040:1: ( '*' )
            {
            // InternalFiacre.g:19040:1: ( '*' )
            // InternalFiacre.g:19041:2: '*'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_1()); 
            }
            match(input,88,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1__2"
    // InternalFiacre.g:19050:1: rule__Multiplication__Group_1__2 : rule__Multiplication__Group_1__2__Impl ;
    public final void rule__Multiplication__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19054:1: ( rule__Multiplication__Group_1__2__Impl )
            // InternalFiacre.g:19055:2: rule__Multiplication__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__2"


    // $ANTLR start "rule__Multiplication__Group_1__2__Impl"
    // InternalFiacre.g:19061:1: rule__Multiplication__Group_1__2__Impl : ( ( rule__Multiplication__RightAssignment_1_2 ) ) ;
    public final void rule__Multiplication__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19065:1: ( ( ( rule__Multiplication__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:19066:1: ( ( rule__Multiplication__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:19066:1: ( ( rule__Multiplication__RightAssignment_1_2 ) )
            // InternalFiacre.g:19067:2: ( rule__Multiplication__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:19068:2: ( rule__Multiplication__RightAssignment_1_2 )
            // InternalFiacre.g:19068:3: rule__Multiplication__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Multiplication__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__2__Impl"


    // $ANTLR start "rule__Division__Group__0"
    // InternalFiacre.g:19077:1: rule__Division__Group__0 : rule__Division__Group__0__Impl rule__Division__Group__1 ;
    public final void rule__Division__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19081:1: ( rule__Division__Group__0__Impl rule__Division__Group__1 )
            // InternalFiacre.g:19082:2: rule__Division__Group__0__Impl rule__Division__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_109);
            rule__Division__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group__0"


    // $ANTLR start "rule__Division__Group__0__Impl"
    // InternalFiacre.g:19089:1: rule__Division__Group__0__Impl : ( ruleModulo ) ;
    public final void rule__Division__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19093:1: ( ( ruleModulo ) )
            // InternalFiacre.g:19094:1: ( ruleModulo )
            {
            // InternalFiacre.g:19094:1: ( ruleModulo )
            // InternalFiacre.g:19095:2: ruleModulo
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getModuloParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleModulo();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getModuloParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group__0__Impl"


    // $ANTLR start "rule__Division__Group__1"
    // InternalFiacre.g:19104:1: rule__Division__Group__1 : rule__Division__Group__1__Impl ;
    public final void rule__Division__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19108:1: ( rule__Division__Group__1__Impl )
            // InternalFiacre.g:19109:2: rule__Division__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group__1"


    // $ANTLR start "rule__Division__Group__1__Impl"
    // InternalFiacre.g:19115:1: rule__Division__Group__1__Impl : ( ( rule__Division__Group_1__0 )* ) ;
    public final void rule__Division__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19119:1: ( ( ( rule__Division__Group_1__0 )* ) )
            // InternalFiacre.g:19120:1: ( ( rule__Division__Group_1__0 )* )
            {
            // InternalFiacre.g:19120:1: ( ( rule__Division__Group_1__0 )* )
            // InternalFiacre.g:19121:2: ( rule__Division__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:19122:2: ( rule__Division__Group_1__0 )*
            loop163:
            do {
                int alt163=2;
                int LA163_0 = input.LA(1);

                if ( (LA163_0==89) ) {
                    alt163=1;
                }


                switch (alt163) {
            	case 1 :
            	    // InternalFiacre.g:19122:3: rule__Division__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_110);
            	    rule__Division__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop163;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group__1__Impl"


    // $ANTLR start "rule__Division__Group_1__0"
    // InternalFiacre.g:19131:1: rule__Division__Group_1__0 : rule__Division__Group_1__0__Impl rule__Division__Group_1__1 ;
    public final void rule__Division__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19135:1: ( rule__Division__Group_1__0__Impl rule__Division__Group_1__1 )
            // InternalFiacre.g:19136:2: rule__Division__Group_1__0__Impl rule__Division__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_109);
            rule__Division__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__0"


    // $ANTLR start "rule__Division__Group_1__0__Impl"
    // InternalFiacre.g:19143:1: rule__Division__Group_1__0__Impl : ( () ) ;
    public final void rule__Division__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19147:1: ( ( () ) )
            // InternalFiacre.g:19148:1: ( () )
            {
            // InternalFiacre.g:19148:1: ( () )
            // InternalFiacre.g:19149:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getDivisionLeftAction_1_0()); 
            }
            // InternalFiacre.g:19150:2: ()
            // InternalFiacre.g:19150:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getDivisionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__0__Impl"


    // $ANTLR start "rule__Division__Group_1__1"
    // InternalFiacre.g:19158:1: rule__Division__Group_1__1 : rule__Division__Group_1__1__Impl rule__Division__Group_1__2 ;
    public final void rule__Division__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19162:1: ( rule__Division__Group_1__1__Impl rule__Division__Group_1__2 )
            // InternalFiacre.g:19163:2: rule__Division__Group_1__1__Impl rule__Division__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Division__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__1"


    // $ANTLR start "rule__Division__Group_1__1__Impl"
    // InternalFiacre.g:19170:1: rule__Division__Group_1__1__Impl : ( '/' ) ;
    public final void rule__Division__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19174:1: ( ( '/' ) )
            // InternalFiacre.g:19175:1: ( '/' )
            {
            // InternalFiacre.g:19175:1: ( '/' )
            // InternalFiacre.g:19176:2: '/'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getSolidusKeyword_1_1()); 
            }
            match(input,89,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getSolidusKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__1__Impl"


    // $ANTLR start "rule__Division__Group_1__2"
    // InternalFiacre.g:19185:1: rule__Division__Group_1__2 : rule__Division__Group_1__2__Impl ;
    public final void rule__Division__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19189:1: ( rule__Division__Group_1__2__Impl )
            // InternalFiacre.g:19190:2: rule__Division__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__2"


    // $ANTLR start "rule__Division__Group_1__2__Impl"
    // InternalFiacre.g:19196:1: rule__Division__Group_1__2__Impl : ( ( rule__Division__RightAssignment_1_2 ) ) ;
    public final void rule__Division__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19200:1: ( ( ( rule__Division__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:19201:1: ( ( rule__Division__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:19201:1: ( ( rule__Division__RightAssignment_1_2 ) )
            // InternalFiacre.g:19202:2: ( rule__Division__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:19203:2: ( rule__Division__RightAssignment_1_2 )
            // InternalFiacre.g:19203:3: rule__Division__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Division__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__Group_1__2__Impl"


    // $ANTLR start "rule__Modulo__Group__0"
    // InternalFiacre.g:19212:1: rule__Modulo__Group__0 : rule__Modulo__Group__0__Impl rule__Modulo__Group__1 ;
    public final void rule__Modulo__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19216:1: ( rule__Modulo__Group__0__Impl rule__Modulo__Group__1 )
            // InternalFiacre.g:19217:2: rule__Modulo__Group__0__Impl rule__Modulo__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_111);
            rule__Modulo__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group__0"


    // $ANTLR start "rule__Modulo__Group__0__Impl"
    // InternalFiacre.g:19224:1: rule__Modulo__Group__0__Impl : ( ruleUnaryExpression ) ;
    public final void rule__Modulo__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19228:1: ( ( ruleUnaryExpression ) )
            // InternalFiacre.g:19229:1: ( ruleUnaryExpression )
            {
            // InternalFiacre.g:19229:1: ( ruleUnaryExpression )
            // InternalFiacre.g:19230:2: ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getUnaryExpressionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getUnaryExpressionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group__0__Impl"


    // $ANTLR start "rule__Modulo__Group__1"
    // InternalFiacre.g:19239:1: rule__Modulo__Group__1 : rule__Modulo__Group__1__Impl ;
    public final void rule__Modulo__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19243:1: ( rule__Modulo__Group__1__Impl )
            // InternalFiacre.g:19244:2: rule__Modulo__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group__1"


    // $ANTLR start "rule__Modulo__Group__1__Impl"
    // InternalFiacre.g:19250:1: rule__Modulo__Group__1__Impl : ( ( rule__Modulo__Group_1__0 )* ) ;
    public final void rule__Modulo__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19254:1: ( ( ( rule__Modulo__Group_1__0 )* ) )
            // InternalFiacre.g:19255:1: ( ( rule__Modulo__Group_1__0 )* )
            {
            // InternalFiacre.g:19255:1: ( ( rule__Modulo__Group_1__0 )* )
            // InternalFiacre.g:19256:2: ( rule__Modulo__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getGroup_1()); 
            }
            // InternalFiacre.g:19257:2: ( rule__Modulo__Group_1__0 )*
            loop164:
            do {
                int alt164=2;
                int LA164_0 = input.LA(1);

                if ( (LA164_0==90) ) {
                    alt164=1;
                }


                switch (alt164) {
            	case 1 :
            	    // InternalFiacre.g:19257:3: rule__Modulo__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_112);
            	    rule__Modulo__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop164;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group__1__Impl"


    // $ANTLR start "rule__Modulo__Group_1__0"
    // InternalFiacre.g:19266:1: rule__Modulo__Group_1__0 : rule__Modulo__Group_1__0__Impl rule__Modulo__Group_1__1 ;
    public final void rule__Modulo__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19270:1: ( rule__Modulo__Group_1__0__Impl rule__Modulo__Group_1__1 )
            // InternalFiacre.g:19271:2: rule__Modulo__Group_1__0__Impl rule__Modulo__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_111);
            rule__Modulo__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__0"


    // $ANTLR start "rule__Modulo__Group_1__0__Impl"
    // InternalFiacre.g:19278:1: rule__Modulo__Group_1__0__Impl : ( () ) ;
    public final void rule__Modulo__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19282:1: ( ( () ) )
            // InternalFiacre.g:19283:1: ( () )
            {
            // InternalFiacre.g:19283:1: ( () )
            // InternalFiacre.g:19284:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getModuloLeftAction_1_0()); 
            }
            // InternalFiacre.g:19285:2: ()
            // InternalFiacre.g:19285:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getModuloLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__0__Impl"


    // $ANTLR start "rule__Modulo__Group_1__1"
    // InternalFiacre.g:19293:1: rule__Modulo__Group_1__1 : rule__Modulo__Group_1__1__Impl rule__Modulo__Group_1__2 ;
    public final void rule__Modulo__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19297:1: ( rule__Modulo__Group_1__1__Impl rule__Modulo__Group_1__2 )
            // InternalFiacre.g:19298:2: rule__Modulo__Group_1__1__Impl rule__Modulo__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Modulo__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__1"


    // $ANTLR start "rule__Modulo__Group_1__1__Impl"
    // InternalFiacre.g:19305:1: rule__Modulo__Group_1__1__Impl : ( '%' ) ;
    public final void rule__Modulo__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19309:1: ( ( '%' ) )
            // InternalFiacre.g:19310:1: ( '%' )
            {
            // InternalFiacre.g:19310:1: ( '%' )
            // InternalFiacre.g:19311:2: '%'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getPercentSignKeyword_1_1()); 
            }
            match(input,90,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getPercentSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__1__Impl"


    // $ANTLR start "rule__Modulo__Group_1__2"
    // InternalFiacre.g:19320:1: rule__Modulo__Group_1__2 : rule__Modulo__Group_1__2__Impl ;
    public final void rule__Modulo__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19324:1: ( rule__Modulo__Group_1__2__Impl )
            // InternalFiacre.g:19325:2: rule__Modulo__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__2"


    // $ANTLR start "rule__Modulo__Group_1__2__Impl"
    // InternalFiacre.g:19331:1: rule__Modulo__Group_1__2__Impl : ( ( rule__Modulo__RightAssignment_1_2 ) ) ;
    public final void rule__Modulo__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19335:1: ( ( ( rule__Modulo__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:19336:1: ( ( rule__Modulo__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:19336:1: ( ( rule__Modulo__RightAssignment_1_2 ) )
            // InternalFiacre.g:19337:2: ( rule__Modulo__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:19338:2: ( rule__Modulo__RightAssignment_1_2 )
            // InternalFiacre.g:19338:3: rule__Modulo__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Modulo__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__Group_1__2__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0__0"
    // InternalFiacre.g:19347:1: rule__UnaryExpression__Group_0__0 : rule__UnaryExpression__Group_0__0__Impl rule__UnaryExpression__Group_0__1 ;
    public final void rule__UnaryExpression__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19351:1: ( rule__UnaryExpression__Group_0__0__Impl rule__UnaryExpression__Group_0__1 )
            // InternalFiacre.g:19352:2: rule__UnaryExpression__Group_0__0__Impl rule__UnaryExpression__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__UnaryExpression__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0__0"


    // $ANTLR start "rule__UnaryExpression__Group_0__0__Impl"
    // InternalFiacre.g:19359:1: rule__UnaryExpression__Group_0__0__Impl : ( ( rule__UnaryExpression__Alternatives_0_0 ) ) ;
    public final void rule__UnaryExpression__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19363:1: ( ( ( rule__UnaryExpression__Alternatives_0_0 ) ) )
            // InternalFiacre.g:19364:1: ( ( rule__UnaryExpression__Alternatives_0_0 ) )
            {
            // InternalFiacre.g:19364:1: ( ( rule__UnaryExpression__Alternatives_0_0 ) )
            // InternalFiacre.g:19365:2: ( rule__UnaryExpression__Alternatives_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getAlternatives_0_0()); 
            }
            // InternalFiacre.g:19366:2: ( rule__UnaryExpression__Alternatives_0_0 )
            // InternalFiacre.g:19366:3: rule__UnaryExpression__Alternatives_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Alternatives_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getAlternatives_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0__1"
    // InternalFiacre.g:19374:1: rule__UnaryExpression__Group_0__1 : rule__UnaryExpression__Group_0__1__Impl ;
    public final void rule__UnaryExpression__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19378:1: ( rule__UnaryExpression__Group_0__1__Impl )
            // InternalFiacre.g:19379:2: rule__UnaryExpression__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0__1"


    // $ANTLR start "rule__UnaryExpression__Group_0__1__Impl"
    // InternalFiacre.g:19385:1: rule__UnaryExpression__Group_0__1__Impl : ( ( rule__UnaryExpression__ChildAssignment_0_1 ) ) ;
    public final void rule__UnaryExpression__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19389:1: ( ( ( rule__UnaryExpression__ChildAssignment_0_1 ) ) )
            // InternalFiacre.g:19390:1: ( ( rule__UnaryExpression__ChildAssignment_0_1 ) )
            {
            // InternalFiacre.g:19390:1: ( ( rule__UnaryExpression__ChildAssignment_0_1 ) )
            // InternalFiacre.g:19391:2: ( rule__UnaryExpression__ChildAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getChildAssignment_0_1()); 
            }
            // InternalFiacre.g:19392:2: ( rule__UnaryExpression__ChildAssignment_0_1 )
            // InternalFiacre.g:19392:3: rule__UnaryExpression__ChildAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__ChildAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getChildAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_0__0"
    // InternalFiacre.g:19401:1: rule__UnaryExpression__Group_0_0_0__0 : rule__UnaryExpression__Group_0_0_0__0__Impl rule__UnaryExpression__Group_0_0_0__1 ;
    public final void rule__UnaryExpression__Group_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19405:1: ( rule__UnaryExpression__Group_0_0_0__0__Impl rule__UnaryExpression__Group_0_0_0__1 )
            // InternalFiacre.g:19406:2: rule__UnaryExpression__Group_0_0_0__0__Impl rule__UnaryExpression__Group_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_103);
            rule__UnaryExpression__Group_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_0__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_0__0__Impl"
    // InternalFiacre.g:19413:1: rule__UnaryExpression__Group_0_0_0__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19417:1: ( ( () ) )
            // InternalFiacre.g:19418:1: ( () )
            {
            // InternalFiacre.g:19418:1: ( () )
            // InternalFiacre.g:19419:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryPlusExpressionAction_0_0_0_0()); 
            }
            // InternalFiacre.g:19420:2: ()
            // InternalFiacre.g:19420:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryPlusExpressionAction_0_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_0__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_0__1"
    // InternalFiacre.g:19428:1: rule__UnaryExpression__Group_0_0_0__1 : rule__UnaryExpression__Group_0_0_0__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19432:1: ( rule__UnaryExpression__Group_0_0_0__1__Impl )
            // InternalFiacre.g:19433:2: rule__UnaryExpression__Group_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_0__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_0__1__Impl"
    // InternalFiacre.g:19439:1: rule__UnaryExpression__Group_0_0_0__1__Impl : ( '+' ) ;
    public final void rule__UnaryExpression__Group_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19443:1: ( ( '+' ) )
            // InternalFiacre.g:19444:1: ( '+' )
            {
            // InternalFiacre.g:19444:1: ( '+' )
            // InternalFiacre.g:19445:2: '+'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getPlusSignKeyword_0_0_0_1()); 
            }
            match(input,14,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getPlusSignKeyword_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_0__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_1__0"
    // InternalFiacre.g:19455:1: rule__UnaryExpression__Group_0_0_1__0 : rule__UnaryExpression__Group_0_0_1__0__Impl rule__UnaryExpression__Group_0_0_1__1 ;
    public final void rule__UnaryExpression__Group_0_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19459:1: ( rule__UnaryExpression__Group_0_0_1__0__Impl rule__UnaryExpression__Group_0_0_1__1 )
            // InternalFiacre.g:19460:2: rule__UnaryExpression__Group_0_0_1__0__Impl rule__UnaryExpression__Group_0_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_105);
            rule__UnaryExpression__Group_0_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_1__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_1__0__Impl"
    // InternalFiacre.g:19467:1: rule__UnaryExpression__Group_0_0_1__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19471:1: ( ( () ) )
            // InternalFiacre.g:19472:1: ( () )
            {
            // InternalFiacre.g:19472:1: ( () )
            // InternalFiacre.g:19473:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryMinusExpressionAction_0_0_1_0()); 
            }
            // InternalFiacre.g:19474:2: ()
            // InternalFiacre.g:19474:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryMinusExpressionAction_0_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_1__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_1__1"
    // InternalFiacre.g:19482:1: rule__UnaryExpression__Group_0_0_1__1 : rule__UnaryExpression__Group_0_0_1__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19486:1: ( rule__UnaryExpression__Group_0_0_1__1__Impl )
            // InternalFiacre.g:19487:2: rule__UnaryExpression__Group_0_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_1__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_1__1__Impl"
    // InternalFiacre.g:19493:1: rule__UnaryExpression__Group_0_0_1__1__Impl : ( '-' ) ;
    public final void rule__UnaryExpression__Group_0_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19497:1: ( ( '-' ) )
            // InternalFiacre.g:19498:1: ( '-' )
            {
            // InternalFiacre.g:19498:1: ( '-' )
            // InternalFiacre.g:19499:2: '-'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getHyphenMinusKeyword_0_0_1_1()); 
            }
            match(input,87,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getHyphenMinusKeyword_0_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_1__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_2__0"
    // InternalFiacre.g:19509:1: rule__UnaryExpression__Group_0_0_2__0 : rule__UnaryExpression__Group_0_0_2__0__Impl rule__UnaryExpression__Group_0_0_2__1 ;
    public final void rule__UnaryExpression__Group_0_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19513:1: ( rule__UnaryExpression__Group_0_0_2__0__Impl rule__UnaryExpression__Group_0_0_2__1 )
            // InternalFiacre.g:19514:2: rule__UnaryExpression__Group_0_0_2__0__Impl rule__UnaryExpression__Group_0_0_2__1
            {
            pushFollow(FollowSets000.FOLLOW_113);
            rule__UnaryExpression__Group_0_0_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_2__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_2__0__Impl"
    // InternalFiacre.g:19521:1: rule__UnaryExpression__Group_0_0_2__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19525:1: ( ( () ) )
            // InternalFiacre.g:19526:1: ( () )
            {
            // InternalFiacre.g:19526:1: ( () )
            // InternalFiacre.g:19527:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryNegationExpressionAction_0_0_2_0()); 
            }
            // InternalFiacre.g:19528:2: ()
            // InternalFiacre.g:19528:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryNegationExpressionAction_0_0_2_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_2__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_2__1"
    // InternalFiacre.g:19536:1: rule__UnaryExpression__Group_0_0_2__1 : rule__UnaryExpression__Group_0_0_2__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19540:1: ( rule__UnaryExpression__Group_0_0_2__1__Impl )
            // InternalFiacre.g:19541:2: rule__UnaryExpression__Group_0_0_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_2__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_2__1__Impl"
    // InternalFiacre.g:19547:1: rule__UnaryExpression__Group_0_0_2__1__Impl : ( 'not' ) ;
    public final void rule__UnaryExpression__Group_0_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19551:1: ( ( 'not' ) )
            // InternalFiacre.g:19552:1: ( 'not' )
            {
            // InternalFiacre.g:19552:1: ( 'not' )
            // InternalFiacre.g:19553:2: 'not'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getNotKeyword_0_0_2_1()); 
            }
            match(input,91,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getNotKeyword_0_0_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_2__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_3__0"
    // InternalFiacre.g:19563:1: rule__UnaryExpression__Group_0_0_3__0 : rule__UnaryExpression__Group_0_0_3__0__Impl rule__UnaryExpression__Group_0_0_3__1 ;
    public final void rule__UnaryExpression__Group_0_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19567:1: ( rule__UnaryExpression__Group_0_0_3__0__Impl rule__UnaryExpression__Group_0_0_3__1 )
            // InternalFiacre.g:19568:2: rule__UnaryExpression__Group_0_0_3__0__Impl rule__UnaryExpression__Group_0_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_114);
            rule__UnaryExpression__Group_0_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_3__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_3__0__Impl"
    // InternalFiacre.g:19575:1: rule__UnaryExpression__Group_0_0_3__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19579:1: ( ( () ) )
            // InternalFiacre.g:19580:1: ( () )
            {
            // InternalFiacre.g:19580:1: ( () )
            // InternalFiacre.g:19581:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryFirstExpressionAction_0_0_3_0()); 
            }
            // InternalFiacre.g:19582:2: ()
            // InternalFiacre.g:19582:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryFirstExpressionAction_0_0_3_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_3__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_3__1"
    // InternalFiacre.g:19590:1: rule__UnaryExpression__Group_0_0_3__1 : rule__UnaryExpression__Group_0_0_3__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19594:1: ( rule__UnaryExpression__Group_0_0_3__1__Impl )
            // InternalFiacre.g:19595:2: rule__UnaryExpression__Group_0_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_3__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_3__1__Impl"
    // InternalFiacre.g:19601:1: rule__UnaryExpression__Group_0_0_3__1__Impl : ( 'first' ) ;
    public final void rule__UnaryExpression__Group_0_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19605:1: ( ( 'first' ) )
            // InternalFiacre.g:19606:1: ( 'first' )
            {
            // InternalFiacre.g:19606:1: ( 'first' )
            // InternalFiacre.g:19607:2: 'first'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getFirstKeyword_0_0_3_1()); 
            }
            match(input,92,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getFirstKeyword_0_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_3__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_4__0"
    // InternalFiacre.g:19617:1: rule__UnaryExpression__Group_0_0_4__0 : rule__UnaryExpression__Group_0_0_4__0__Impl rule__UnaryExpression__Group_0_0_4__1 ;
    public final void rule__UnaryExpression__Group_0_0_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19621:1: ( rule__UnaryExpression__Group_0_0_4__0__Impl rule__UnaryExpression__Group_0_0_4__1 )
            // InternalFiacre.g:19622:2: rule__UnaryExpression__Group_0_0_4__0__Impl rule__UnaryExpression__Group_0_0_4__1
            {
            pushFollow(FollowSets000.FOLLOW_115);
            rule__UnaryExpression__Group_0_0_4__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_4__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_4__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_4__0__Impl"
    // InternalFiacre.g:19629:1: rule__UnaryExpression__Group_0_0_4__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19633:1: ( ( () ) )
            // InternalFiacre.g:19634:1: ( () )
            {
            // InternalFiacre.g:19634:1: ( () )
            // InternalFiacre.g:19635:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryLengthExpressionAction_0_0_4_0()); 
            }
            // InternalFiacre.g:19636:2: ()
            // InternalFiacre.g:19636:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryLengthExpressionAction_0_0_4_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_4__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_4__1"
    // InternalFiacre.g:19644:1: rule__UnaryExpression__Group_0_0_4__1 : rule__UnaryExpression__Group_0_0_4__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19648:1: ( rule__UnaryExpression__Group_0_0_4__1__Impl )
            // InternalFiacre.g:19649:2: rule__UnaryExpression__Group_0_0_4__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_4__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_4__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_4__1__Impl"
    // InternalFiacre.g:19655:1: rule__UnaryExpression__Group_0_0_4__1__Impl : ( 'length' ) ;
    public final void rule__UnaryExpression__Group_0_0_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19659:1: ( ( 'length' ) )
            // InternalFiacre.g:19660:1: ( 'length' )
            {
            // InternalFiacre.g:19660:1: ( 'length' )
            // InternalFiacre.g:19661:2: 'length'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getLengthKeyword_0_0_4_1()); 
            }
            match(input,93,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getLengthKeyword_0_0_4_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_4__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_5__0"
    // InternalFiacre.g:19671:1: rule__UnaryExpression__Group_0_0_5__0 : rule__UnaryExpression__Group_0_0_5__0__Impl rule__UnaryExpression__Group_0_0_5__1 ;
    public final void rule__UnaryExpression__Group_0_0_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19675:1: ( rule__UnaryExpression__Group_0_0_5__0__Impl rule__UnaryExpression__Group_0_0_5__1 )
            // InternalFiacre.g:19676:2: rule__UnaryExpression__Group_0_0_5__0__Impl rule__UnaryExpression__Group_0_0_5__1
            {
            pushFollow(FollowSets000.FOLLOW_116);
            rule__UnaryExpression__Group_0_0_5__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_5__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_5__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_5__0__Impl"
    // InternalFiacre.g:19683:1: rule__UnaryExpression__Group_0_0_5__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19687:1: ( ( () ) )
            // InternalFiacre.g:19688:1: ( () )
            {
            // InternalFiacre.g:19688:1: ( () )
            // InternalFiacre.g:19689:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryCoerceExpressionAction_0_0_5_0()); 
            }
            // InternalFiacre.g:19690:2: ()
            // InternalFiacre.g:19690:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryCoerceExpressionAction_0_0_5_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_5__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_5__1"
    // InternalFiacre.g:19698:1: rule__UnaryExpression__Group_0_0_5__1 : rule__UnaryExpression__Group_0_0_5__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19702:1: ( rule__UnaryExpression__Group_0_0_5__1__Impl )
            // InternalFiacre.g:19703:2: rule__UnaryExpression__Group_0_0_5__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_5__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_5__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_5__1__Impl"
    // InternalFiacre.g:19709:1: rule__UnaryExpression__Group_0_0_5__1__Impl : ( '$' ) ;
    public final void rule__UnaryExpression__Group_0_0_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19713:1: ( ( '$' ) )
            // InternalFiacre.g:19714:1: ( '$' )
            {
            // InternalFiacre.g:19714:1: ( '$' )
            // InternalFiacre.g:19715:2: '$'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getDollarSignKeyword_0_0_5_1()); 
            }
            match(input,94,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getDollarSignKeyword_0_0_5_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_5__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_6__0"
    // InternalFiacre.g:19725:1: rule__UnaryExpression__Group_0_0_6__0 : rule__UnaryExpression__Group_0_0_6__0__Impl rule__UnaryExpression__Group_0_0_6__1 ;
    public final void rule__UnaryExpression__Group_0_0_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19729:1: ( rule__UnaryExpression__Group_0_0_6__0__Impl rule__UnaryExpression__Group_0_0_6__1 )
            // InternalFiacre.g:19730:2: rule__UnaryExpression__Group_0_0_6__0__Impl rule__UnaryExpression__Group_0_0_6__1
            {
            pushFollow(FollowSets000.FOLLOW_117);
            rule__UnaryExpression__Group_0_0_6__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_6__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_6__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_6__0__Impl"
    // InternalFiacre.g:19737:1: rule__UnaryExpression__Group_0_0_6__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19741:1: ( ( () ) )
            // InternalFiacre.g:19742:1: ( () )
            {
            // InternalFiacre.g:19742:1: ( () )
            // InternalFiacre.g:19743:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryFullExpressionAction_0_0_6_0()); 
            }
            // InternalFiacre.g:19744:2: ()
            // InternalFiacre.g:19744:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryFullExpressionAction_0_0_6_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_6__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_6__1"
    // InternalFiacre.g:19752:1: rule__UnaryExpression__Group_0_0_6__1 : rule__UnaryExpression__Group_0_0_6__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19756:1: ( rule__UnaryExpression__Group_0_0_6__1__Impl )
            // InternalFiacre.g:19757:2: rule__UnaryExpression__Group_0_0_6__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_6__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_6__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_6__1__Impl"
    // InternalFiacre.g:19763:1: rule__UnaryExpression__Group_0_0_6__1__Impl : ( 'full' ) ;
    public final void rule__UnaryExpression__Group_0_0_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19767:1: ( ( 'full' ) )
            // InternalFiacre.g:19768:1: ( 'full' )
            {
            // InternalFiacre.g:19768:1: ( 'full' )
            // InternalFiacre.g:19769:2: 'full'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getFullKeyword_0_0_6_1()); 
            }
            match(input,95,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getFullKeyword_0_0_6_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_6__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_7__0"
    // InternalFiacre.g:19779:1: rule__UnaryExpression__Group_0_0_7__0 : rule__UnaryExpression__Group_0_0_7__0__Impl rule__UnaryExpression__Group_0_0_7__1 ;
    public final void rule__UnaryExpression__Group_0_0_7__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19783:1: ( rule__UnaryExpression__Group_0_0_7__0__Impl rule__UnaryExpression__Group_0_0_7__1 )
            // InternalFiacre.g:19784:2: rule__UnaryExpression__Group_0_0_7__0__Impl rule__UnaryExpression__Group_0_0_7__1
            {
            pushFollow(FollowSets000.FOLLOW_118);
            rule__UnaryExpression__Group_0_0_7__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_7__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_7__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_7__0__Impl"
    // InternalFiacre.g:19791:1: rule__UnaryExpression__Group_0_0_7__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_7__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19795:1: ( ( () ) )
            // InternalFiacre.g:19796:1: ( () )
            {
            // InternalFiacre.g:19796:1: ( () )
            // InternalFiacre.g:19797:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryDeQueueExpressionAction_0_0_7_0()); 
            }
            // InternalFiacre.g:19798:2: ()
            // InternalFiacre.g:19798:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryDeQueueExpressionAction_0_0_7_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_7__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_7__1"
    // InternalFiacre.g:19806:1: rule__UnaryExpression__Group_0_0_7__1 : rule__UnaryExpression__Group_0_0_7__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_7__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19810:1: ( rule__UnaryExpression__Group_0_0_7__1__Impl )
            // InternalFiacre.g:19811:2: rule__UnaryExpression__Group_0_0_7__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_7__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_7__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_7__1__Impl"
    // InternalFiacre.g:19817:1: rule__UnaryExpression__Group_0_0_7__1__Impl : ( 'dequeue' ) ;
    public final void rule__UnaryExpression__Group_0_0_7__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19821:1: ( ( 'dequeue' ) )
            // InternalFiacre.g:19822:1: ( 'dequeue' )
            {
            // InternalFiacre.g:19822:1: ( 'dequeue' )
            // InternalFiacre.g:19823:2: 'dequeue'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getDequeueKeyword_0_0_7_1()); 
            }
            match(input,96,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getDequeueKeyword_0_0_7_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_7__1__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_8__0"
    // InternalFiacre.g:19833:1: rule__UnaryExpression__Group_0_0_8__0 : rule__UnaryExpression__Group_0_0_8__0__Impl rule__UnaryExpression__Group_0_0_8__1 ;
    public final void rule__UnaryExpression__Group_0_0_8__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19837:1: ( rule__UnaryExpression__Group_0_0_8__0__Impl rule__UnaryExpression__Group_0_0_8__1 )
            // InternalFiacre.g:19838:2: rule__UnaryExpression__Group_0_0_8__0__Impl rule__UnaryExpression__Group_0_0_8__1
            {
            pushFollow(FollowSets000.FOLLOW_119);
            rule__UnaryExpression__Group_0_0_8__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_8__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_8__0"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_8__0__Impl"
    // InternalFiacre.g:19845:1: rule__UnaryExpression__Group_0_0_8__0__Impl : ( () ) ;
    public final void rule__UnaryExpression__Group_0_0_8__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19849:1: ( ( () ) )
            // InternalFiacre.g:19850:1: ( () )
            {
            // InternalFiacre.g:19850:1: ( () )
            // InternalFiacre.g:19851:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getUnaryEmptyExpressionAction_0_0_8_0()); 
            }
            // InternalFiacre.g:19852:2: ()
            // InternalFiacre.g:19852:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getUnaryEmptyExpressionAction_0_0_8_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_8__0__Impl"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_8__1"
    // InternalFiacre.g:19860:1: rule__UnaryExpression__Group_0_0_8__1 : rule__UnaryExpression__Group_0_0_8__1__Impl ;
    public final void rule__UnaryExpression__Group_0_0_8__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19864:1: ( rule__UnaryExpression__Group_0_0_8__1__Impl )
            // InternalFiacre.g:19865:2: rule__UnaryExpression__Group_0_0_8__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UnaryExpression__Group_0_0_8__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_8__1"


    // $ANTLR start "rule__UnaryExpression__Group_0_0_8__1__Impl"
    // InternalFiacre.g:19871:1: rule__UnaryExpression__Group_0_0_8__1__Impl : ( 'empty' ) ;
    public final void rule__UnaryExpression__Group_0_0_8__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19875:1: ( ( 'empty' ) )
            // InternalFiacre.g:19876:1: ( 'empty' )
            {
            // InternalFiacre.g:19876:1: ( 'empty' )
            // InternalFiacre.g:19877:2: 'empty'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getEmptyKeyword_0_0_8_1()); 
            }
            match(input,97,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getEmptyKeyword_0_0_8_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__Group_0_0_8__1__Impl"


    // $ANTLR start "rule__Projection__Group__0"
    // InternalFiacre.g:19887:1: rule__Projection__Group__0 : rule__Projection__Group__0__Impl rule__Projection__Group__1 ;
    public final void rule__Projection__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19891:1: ( rule__Projection__Group__0__Impl rule__Projection__Group__1 )
            // InternalFiacre.g:19892:2: rule__Projection__Group__0__Impl rule__Projection__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_120);
            rule__Projection__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group__0"


    // $ANTLR start "rule__Projection__Group__0__Impl"
    // InternalFiacre.g:19899:1: rule__Projection__Group__0__Impl : ( ruleAtomicExpression ) ;
    public final void rule__Projection__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19903:1: ( ( ruleAtomicExpression ) )
            // InternalFiacre.g:19904:1: ( ruleAtomicExpression )
            {
            // InternalFiacre.g:19904:1: ( ruleAtomicExpression )
            // InternalFiacre.g:19905:2: ruleAtomicExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getAtomicExpressionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getAtomicExpressionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group__0__Impl"


    // $ANTLR start "rule__Projection__Group__1"
    // InternalFiacre.g:19914:1: rule__Projection__Group__1 : rule__Projection__Group__1__Impl ;
    public final void rule__Projection__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19918:1: ( rule__Projection__Group__1__Impl )
            // InternalFiacre.g:19919:2: rule__Projection__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group__1"


    // $ANTLR start "rule__Projection__Group__1__Impl"
    // InternalFiacre.g:19925:1: rule__Projection__Group__1__Impl : ( ( rule__Projection__Group_1__0 )? ) ;
    public final void rule__Projection__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19929:1: ( ( ( rule__Projection__Group_1__0 )? ) )
            // InternalFiacre.g:19930:1: ( ( rule__Projection__Group_1__0 )? )
            {
            // InternalFiacre.g:19930:1: ( ( rule__Projection__Group_1__0 )? )
            // InternalFiacre.g:19931:2: ( rule__Projection__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:19932:2: ( rule__Projection__Group_1__0 )?
            int alt165=2;
            int LA165_0 = input.LA(1);

            if ( (LA165_0==98) ) {
                alt165=1;
            }
            switch (alt165) {
                case 1 :
                    // InternalFiacre.g:19932:3: rule__Projection__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Projection__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group__1__Impl"


    // $ANTLR start "rule__Projection__Group_1__0"
    // InternalFiacre.g:19941:1: rule__Projection__Group_1__0 : rule__Projection__Group_1__0__Impl rule__Projection__Group_1__1 ;
    public final void rule__Projection__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19945:1: ( rule__Projection__Group_1__0__Impl rule__Projection__Group_1__1 )
            // InternalFiacre.g:19946:2: rule__Projection__Group_1__0__Impl rule__Projection__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_120);
            rule__Projection__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__0"


    // $ANTLR start "rule__Projection__Group_1__0__Impl"
    // InternalFiacre.g:19953:1: rule__Projection__Group_1__0__Impl : ( () ) ;
    public final void rule__Projection__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19957:1: ( ( () ) )
            // InternalFiacre.g:19958:1: ( () )
            {
            // InternalFiacre.g:19958:1: ( () )
            // InternalFiacre.g:19959:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getProjectionChannelAction_1_0()); 
            }
            // InternalFiacre.g:19960:2: ()
            // InternalFiacre.g:19960:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getProjectionChannelAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__0__Impl"


    // $ANTLR start "rule__Projection__Group_1__1"
    // InternalFiacre.g:19968:1: rule__Projection__Group_1__1 : rule__Projection__Group_1__1__Impl rule__Projection__Group_1__2 ;
    public final void rule__Projection__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19972:1: ( rule__Projection__Group_1__1__Impl rule__Projection__Group_1__2 )
            // InternalFiacre.g:19973:2: rule__Projection__Group_1__1__Impl rule__Projection__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__Projection__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__1"


    // $ANTLR start "rule__Projection__Group_1__1__Impl"
    // InternalFiacre.g:19980:1: rule__Projection__Group_1__1__Impl : ( '^' ) ;
    public final void rule__Projection__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19984:1: ( ( '^' ) )
            // InternalFiacre.g:19985:1: ( '^' )
            {
            // InternalFiacre.g:19985:1: ( '^' )
            // InternalFiacre.g:19986:2: '^'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getCircumflexAccentKeyword_1_1()); 
            }
            match(input,98,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getCircumflexAccentKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__1__Impl"


    // $ANTLR start "rule__Projection__Group_1__2"
    // InternalFiacre.g:19995:1: rule__Projection__Group_1__2 : rule__Projection__Group_1__2__Impl ;
    public final void rule__Projection__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:19999:1: ( rule__Projection__Group_1__2__Impl )
            // InternalFiacre.g:20000:2: rule__Projection__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__2"


    // $ANTLR start "rule__Projection__Group_1__2__Impl"
    // InternalFiacre.g:20006:1: rule__Projection__Group_1__2__Impl : ( ( rule__Projection__FieldAssignment_1_2 ) ) ;
    public final void rule__Projection__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20010:1: ( ( ( rule__Projection__FieldAssignment_1_2 ) ) )
            // InternalFiacre.g:20011:1: ( ( rule__Projection__FieldAssignment_1_2 ) )
            {
            // InternalFiacre.g:20011:1: ( ( rule__Projection__FieldAssignment_1_2 ) )
            // InternalFiacre.g:20012:2: ( rule__Projection__FieldAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getFieldAssignment_1_2()); 
            }
            // InternalFiacre.g:20013:2: ( rule__Projection__FieldAssignment_1_2 )
            // InternalFiacre.g:20013:3: rule__Projection__FieldAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Projection__FieldAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getFieldAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__Group_1__2__Impl"


    // $ANTLR start "rule__AtomicExpression__Group_8__0"
    // InternalFiacre.g:20022:1: rule__AtomicExpression__Group_8__0 : rule__AtomicExpression__Group_8__0__Impl rule__AtomicExpression__Group_8__1 ;
    public final void rule__AtomicExpression__Group_8__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20026:1: ( rule__AtomicExpression__Group_8__0__Impl rule__AtomicExpression__Group_8__1 )
            // InternalFiacre.g:20027:2: rule__AtomicExpression__Group_8__0__Impl rule__AtomicExpression__Group_8__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__AtomicExpression__Group_8__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicExpression__Group_8__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__0"


    // $ANTLR start "rule__AtomicExpression__Group_8__0__Impl"
    // InternalFiacre.g:20034:1: rule__AtomicExpression__Group_8__0__Impl : ( '(' ) ;
    public final void rule__AtomicExpression__Group_8__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20038:1: ( ( '(' ) )
            // InternalFiacre.g:20039:1: ( '(' )
            {
            // InternalFiacre.g:20039:1: ( '(' )
            // InternalFiacre.g:20040:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_8_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_8_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__0__Impl"


    // $ANTLR start "rule__AtomicExpression__Group_8__1"
    // InternalFiacre.g:20049:1: rule__AtomicExpression__Group_8__1 : rule__AtomicExpression__Group_8__1__Impl rule__AtomicExpression__Group_8__2 ;
    public final void rule__AtomicExpression__Group_8__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20053:1: ( rule__AtomicExpression__Group_8__1__Impl rule__AtomicExpression__Group_8__2 )
            // InternalFiacre.g:20054:2: rule__AtomicExpression__Group_8__1__Impl rule__AtomicExpression__Group_8__2
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__AtomicExpression__Group_8__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicExpression__Group_8__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__1"


    // $ANTLR start "rule__AtomicExpression__Group_8__1__Impl"
    // InternalFiacre.g:20061:1: rule__AtomicExpression__Group_8__1__Impl : ( ruleExpression ) ;
    public final void rule__AtomicExpression__Group_8__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20065:1: ( ( ruleExpression ) )
            // InternalFiacre.g:20066:1: ( ruleExpression )
            {
            // InternalFiacre.g:20066:1: ( ruleExpression )
            // InternalFiacre.g:20067:2: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicExpressionAccess().getExpressionParserRuleCall_8_1()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicExpressionAccess().getExpressionParserRuleCall_8_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__1__Impl"


    // $ANTLR start "rule__AtomicExpression__Group_8__2"
    // InternalFiacre.g:20076:1: rule__AtomicExpression__Group_8__2 : rule__AtomicExpression__Group_8__2__Impl ;
    public final void rule__AtomicExpression__Group_8__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20080:1: ( rule__AtomicExpression__Group_8__2__Impl )
            // InternalFiacre.g:20081:2: rule__AtomicExpression__Group_8__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicExpression__Group_8__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__2"


    // $ANTLR start "rule__AtomicExpression__Group_8__2__Impl"
    // InternalFiacre.g:20087:1: rule__AtomicExpression__Group_8__2__Impl : ( ')' ) ;
    public final void rule__AtomicExpression__Group_8__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20091:1: ( ( ')' ) )
            // InternalFiacre.g:20092:1: ( ')' )
            {
            // InternalFiacre.g:20092:1: ( ')' )
            // InternalFiacre.g:20093:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_8_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_8_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicExpression__Group_8__2__Impl"


    // $ANTLR start "rule__ReferenceExpression__Group__0"
    // InternalFiacre.g:20103:1: rule__ReferenceExpression__Group__0 : rule__ReferenceExpression__Group__0__Impl rule__ReferenceExpression__Group__1 ;
    public final void rule__ReferenceExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20107:1: ( rule__ReferenceExpression__Group__0__Impl rule__ReferenceExpression__Group__1 )
            // InternalFiacre.g:20108:2: rule__ReferenceExpression__Group__0__Impl rule__ReferenceExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__ReferenceExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReferenceExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferenceExpression__Group__0"


    // $ANTLR start "rule__ReferenceExpression__Group__0__Impl"
    // InternalFiacre.g:20115:1: rule__ReferenceExpression__Group__0__Impl : ( '&' ) ;
    public final void rule__ReferenceExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20119:1: ( ( '&' ) )
            // InternalFiacre.g:20120:1: ( '&' )
            {
            // InternalFiacre.g:20120:1: ( '&' )
            // InternalFiacre.g:20121:2: '&'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionAccess().getAmpersandKeyword_0()); 
            }
            match(input,99,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionAccess().getAmpersandKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferenceExpression__Group__0__Impl"


    // $ANTLR start "rule__ReferenceExpression__Group__1"
    // InternalFiacre.g:20130:1: rule__ReferenceExpression__Group__1 : rule__ReferenceExpression__Group__1__Impl ;
    public final void rule__ReferenceExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20134:1: ( rule__ReferenceExpression__Group__1__Impl )
            // InternalFiacre.g:20135:2: rule__ReferenceExpression__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReferenceExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferenceExpression__Group__1"


    // $ANTLR start "rule__ReferenceExpression__Group__1__Impl"
    // InternalFiacre.g:20141:1: rule__ReferenceExpression__Group__1__Impl : ( ( rule__ReferenceExpression__DeclarationAssignment_1 ) ) ;
    public final void rule__ReferenceExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20145:1: ( ( ( rule__ReferenceExpression__DeclarationAssignment_1 ) ) )
            // InternalFiacre.g:20146:1: ( ( rule__ReferenceExpression__DeclarationAssignment_1 ) )
            {
            // InternalFiacre.g:20146:1: ( ( rule__ReferenceExpression__DeclarationAssignment_1 ) )
            // InternalFiacre.g:20147:2: ( rule__ReferenceExpression__DeclarationAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionAccess().getDeclarationAssignment_1()); 
            }
            // InternalFiacre.g:20148:2: ( rule__ReferenceExpression__DeclarationAssignment_1 )
            // InternalFiacre.g:20148:3: rule__ReferenceExpression__DeclarationAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ReferenceExpression__DeclarationAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionAccess().getDeclarationAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferenceExpression__Group__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0__0"
    // InternalFiacre.g:20157:1: rule__IdentifierExpression__Group_0__0 : rule__IdentifierExpression__Group_0__0__Impl rule__IdentifierExpression__Group_0__1 ;
    public final void rule__IdentifierExpression__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20161:1: ( rule__IdentifierExpression__Group_0__0__Impl rule__IdentifierExpression__Group_0__1 )
            // InternalFiacre.g:20162:2: rule__IdentifierExpression__Group_0__0__Impl rule__IdentifierExpression__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierExpression__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__0"


    // $ANTLR start "rule__IdentifierExpression__Group_0__0__Impl"
    // InternalFiacre.g:20169:1: rule__IdentifierExpression__Group_0__0__Impl : ( () ) ;
    public final void rule__IdentifierExpression__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20173:1: ( ( () ) )
            // InternalFiacre.g:20174:1: ( () )
            {
            // InternalFiacre.g:20174:1: ( () )
            // InternalFiacre.g:20175:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getConstructionExpressionAction_0_0()); 
            }
            // InternalFiacre.g:20176:2: ()
            // InternalFiacre.g:20176:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getConstructionExpressionAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0__1"
    // InternalFiacre.g:20184:1: rule__IdentifierExpression__Group_0__1 : rule__IdentifierExpression__Group_0__1__Impl rule__IdentifierExpression__Group_0__2 ;
    public final void rule__IdentifierExpression__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20188:1: ( rule__IdentifierExpression__Group_0__1__Impl rule__IdentifierExpression__Group_0__2 )
            // InternalFiacre.g:20189:2: rule__IdentifierExpression__Group_0__1__Impl rule__IdentifierExpression__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_13);
            rule__IdentifierExpression__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__1"


    // $ANTLR start "rule__IdentifierExpression__Group_0__1__Impl"
    // InternalFiacre.g:20196:1: rule__IdentifierExpression__Group_0__1__Impl : ( ( rule__IdentifierExpression__DeclarationAssignment_0_1 ) ) ;
    public final void rule__IdentifierExpression__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20200:1: ( ( ( rule__IdentifierExpression__DeclarationAssignment_0_1 ) ) )
            // InternalFiacre.g:20201:1: ( ( rule__IdentifierExpression__DeclarationAssignment_0_1 ) )
            {
            // InternalFiacre.g:20201:1: ( ( rule__IdentifierExpression__DeclarationAssignment_0_1 ) )
            // InternalFiacre.g:20202:2: ( rule__IdentifierExpression__DeclarationAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationAssignment_0_1()); 
            }
            // InternalFiacre.g:20203:2: ( rule__IdentifierExpression__DeclarationAssignment_0_1 )
            // InternalFiacre.g:20203:3: rule__IdentifierExpression__DeclarationAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__DeclarationAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0__2"
    // InternalFiacre.g:20211:1: rule__IdentifierExpression__Group_0__2 : rule__IdentifierExpression__Group_0__2__Impl rule__IdentifierExpression__Group_0__3 ;
    public final void rule__IdentifierExpression__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20215:1: ( rule__IdentifierExpression__Group_0__2__Impl rule__IdentifierExpression__Group_0__3 )
            // InternalFiacre.g:20216:2: rule__IdentifierExpression__Group_0__2__Impl rule__IdentifierExpression__Group_0__3
            {
            pushFollow(FollowSets000.FOLLOW_121);
            rule__IdentifierExpression__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__2"


    // $ANTLR start "rule__IdentifierExpression__Group_0__2__Impl"
    // InternalFiacre.g:20223:1: rule__IdentifierExpression__Group_0__2__Impl : ( '(' ) ;
    public final void rule__IdentifierExpression__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20227:1: ( ( '(' ) )
            // InternalFiacre.g:20228:1: ( '(' )
            {
            // InternalFiacre.g:20228:1: ( '(' )
            // InternalFiacre.g:20229:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getLeftParenthesisKeyword_0_2()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getLeftParenthesisKeyword_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__2__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0__3"
    // InternalFiacre.g:20238:1: rule__IdentifierExpression__Group_0__3 : rule__IdentifierExpression__Group_0__3__Impl rule__IdentifierExpression__Group_0__4 ;
    public final void rule__IdentifierExpression__Group_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20242:1: ( rule__IdentifierExpression__Group_0__3__Impl rule__IdentifierExpression__Group_0__4 )
            // InternalFiacre.g:20243:2: rule__IdentifierExpression__Group_0__3__Impl rule__IdentifierExpression__Group_0__4
            {
            pushFollow(FollowSets000.FOLLOW_121);
            rule__IdentifierExpression__Group_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__3"


    // $ANTLR start "rule__IdentifierExpression__Group_0__3__Impl"
    // InternalFiacre.g:20250:1: rule__IdentifierExpression__Group_0__3__Impl : ( ( rule__IdentifierExpression__Group_0_3__0 )? ) ;
    public final void rule__IdentifierExpression__Group_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20254:1: ( ( ( rule__IdentifierExpression__Group_0_3__0 )? ) )
            // InternalFiacre.g:20255:1: ( ( rule__IdentifierExpression__Group_0_3__0 )? )
            {
            // InternalFiacre.g:20255:1: ( ( rule__IdentifierExpression__Group_0_3__0 )? )
            // InternalFiacre.g:20256:2: ( rule__IdentifierExpression__Group_0_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getGroup_0_3()); 
            }
            // InternalFiacre.g:20257:2: ( rule__IdentifierExpression__Group_0_3__0 )?
            int alt166=2;
            int LA166_0 = input.LA(1);

            if ( (LA166_0==RULE_ID||LA166_0==RULE_INT||LA166_0==14||LA166_0==22||LA166_0==42||(LA166_0>=77 && LA166_0<=78)||LA166_0==87||(LA166_0>=91 && LA166_0<=97)||(LA166_0>=99 && LA166_0<=100)||LA166_0==102||(LA166_0>=104 && LA166_0<=107)) ) {
                alt166=1;
            }
            switch (alt166) {
                case 1 :
                    // InternalFiacre.g:20257:3: rule__IdentifierExpression__Group_0_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__IdentifierExpression__Group_0_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getGroup_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__3__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0__4"
    // InternalFiacre.g:20265:1: rule__IdentifierExpression__Group_0__4 : rule__IdentifierExpression__Group_0__4__Impl ;
    public final void rule__IdentifierExpression__Group_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20269:1: ( rule__IdentifierExpression__Group_0__4__Impl )
            // InternalFiacre.g:20270:2: rule__IdentifierExpression__Group_0__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__4"


    // $ANTLR start "rule__IdentifierExpression__Group_0__4__Impl"
    // InternalFiacre.g:20276:1: rule__IdentifierExpression__Group_0__4__Impl : ( ')' ) ;
    public final void rule__IdentifierExpression__Group_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20280:1: ( ( ')' ) )
            // InternalFiacre.g:20281:1: ( ')' )
            {
            // InternalFiacre.g:20281:1: ( ')' )
            // InternalFiacre.g:20282:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getRightParenthesisKeyword_0_4()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getRightParenthesisKeyword_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0__4__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3__0"
    // InternalFiacre.g:20292:1: rule__IdentifierExpression__Group_0_3__0 : rule__IdentifierExpression__Group_0_3__0__Impl rule__IdentifierExpression__Group_0_3__1 ;
    public final void rule__IdentifierExpression__Group_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20296:1: ( rule__IdentifierExpression__Group_0_3__0__Impl rule__IdentifierExpression__Group_0_3__1 )
            // InternalFiacre.g:20297:2: rule__IdentifierExpression__Group_0_3__0__Impl rule__IdentifierExpression__Group_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__IdentifierExpression__Group_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3__0"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3__0__Impl"
    // InternalFiacre.g:20304:1: rule__IdentifierExpression__Group_0_3__0__Impl : ( ( rule__IdentifierExpression__ParametersAssignment_0_3_0 ) ) ;
    public final void rule__IdentifierExpression__Group_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20308:1: ( ( ( rule__IdentifierExpression__ParametersAssignment_0_3_0 ) ) )
            // InternalFiacre.g:20309:1: ( ( rule__IdentifierExpression__ParametersAssignment_0_3_0 ) )
            {
            // InternalFiacre.g:20309:1: ( ( rule__IdentifierExpression__ParametersAssignment_0_3_0 ) )
            // InternalFiacre.g:20310:2: ( rule__IdentifierExpression__ParametersAssignment_0_3_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getParametersAssignment_0_3_0()); 
            }
            // InternalFiacre.g:20311:2: ( rule__IdentifierExpression__ParametersAssignment_0_3_0 )
            // InternalFiacre.g:20311:3: rule__IdentifierExpression__ParametersAssignment_0_3_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__ParametersAssignment_0_3_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getParametersAssignment_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3__1"
    // InternalFiacre.g:20319:1: rule__IdentifierExpression__Group_0_3__1 : rule__IdentifierExpression__Group_0_3__1__Impl ;
    public final void rule__IdentifierExpression__Group_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20323:1: ( rule__IdentifierExpression__Group_0_3__1__Impl )
            // InternalFiacre.g:20324:2: rule__IdentifierExpression__Group_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3__1"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3__1__Impl"
    // InternalFiacre.g:20330:1: rule__IdentifierExpression__Group_0_3__1__Impl : ( ( rule__IdentifierExpression__Group_0_3_1__0 )* ) ;
    public final void rule__IdentifierExpression__Group_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20334:1: ( ( ( rule__IdentifierExpression__Group_0_3_1__0 )* ) )
            // InternalFiacre.g:20335:1: ( ( rule__IdentifierExpression__Group_0_3_1__0 )* )
            {
            // InternalFiacre.g:20335:1: ( ( rule__IdentifierExpression__Group_0_3_1__0 )* )
            // InternalFiacre.g:20336:2: ( rule__IdentifierExpression__Group_0_3_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getGroup_0_3_1()); 
            }
            // InternalFiacre.g:20337:2: ( rule__IdentifierExpression__Group_0_3_1__0 )*
            loop167:
            do {
                int alt167=2;
                int LA167_0 = input.LA(1);

                if ( (LA167_0==24) ) {
                    alt167=1;
                }


                switch (alt167) {
            	case 1 :
            	    // InternalFiacre.g:20337:3: rule__IdentifierExpression__Group_0_3_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__IdentifierExpression__Group_0_3_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop167;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getGroup_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3_1__0"
    // InternalFiacre.g:20346:1: rule__IdentifierExpression__Group_0_3_1__0 : rule__IdentifierExpression__Group_0_3_1__0__Impl rule__IdentifierExpression__Group_0_3_1__1 ;
    public final void rule__IdentifierExpression__Group_0_3_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20350:1: ( rule__IdentifierExpression__Group_0_3_1__0__Impl rule__IdentifierExpression__Group_0_3_1__1 )
            // InternalFiacre.g:20351:2: rule__IdentifierExpression__Group_0_3_1__0__Impl rule__IdentifierExpression__Group_0_3_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierExpression__Group_0_3_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0_3_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3_1__0"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3_1__0__Impl"
    // InternalFiacre.g:20358:1: rule__IdentifierExpression__Group_0_3_1__0__Impl : ( ',' ) ;
    public final void rule__IdentifierExpression__Group_0_3_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20362:1: ( ( ',' ) )
            // InternalFiacre.g:20363:1: ( ',' )
            {
            // InternalFiacre.g:20363:1: ( ',' )
            // InternalFiacre.g:20364:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getCommaKeyword_0_3_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getCommaKeyword_0_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3_1__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3_1__1"
    // InternalFiacre.g:20373:1: rule__IdentifierExpression__Group_0_3_1__1 : rule__IdentifierExpression__Group_0_3_1__1__Impl ;
    public final void rule__IdentifierExpression__Group_0_3_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20377:1: ( rule__IdentifierExpression__Group_0_3_1__1__Impl )
            // InternalFiacre.g:20378:2: rule__IdentifierExpression__Group_0_3_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_0_3_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3_1__1"


    // $ANTLR start "rule__IdentifierExpression__Group_0_3_1__1__Impl"
    // InternalFiacre.g:20384:1: rule__IdentifierExpression__Group_0_3_1__1__Impl : ( ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 ) ) ;
    public final void rule__IdentifierExpression__Group_0_3_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20388:1: ( ( ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 ) ) )
            // InternalFiacre.g:20389:1: ( ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 ) )
            {
            // InternalFiacre.g:20389:1: ( ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 ) )
            // InternalFiacre.g:20390:2: ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getParametersAssignment_0_3_1_1()); 
            }
            // InternalFiacre.g:20391:2: ( rule__IdentifierExpression__ParametersAssignment_0_3_1_1 )
            // InternalFiacre.g:20391:3: rule__IdentifierExpression__ParametersAssignment_0_3_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__ParametersAssignment_0_3_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getParametersAssignment_0_3_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_0_3_1__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1__0"
    // InternalFiacre.g:20400:1: rule__IdentifierExpression__Group_1__0 : rule__IdentifierExpression__Group_1__0__Impl rule__IdentifierExpression__Group_1__1 ;
    public final void rule__IdentifierExpression__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20404:1: ( rule__IdentifierExpression__Group_1__0__Impl rule__IdentifierExpression__Group_1__1 )
            // InternalFiacre.g:20405:2: rule__IdentifierExpression__Group_1__0__Impl rule__IdentifierExpression__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_71);
            rule__IdentifierExpression__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1__0"


    // $ANTLR start "rule__IdentifierExpression__Group_1__0__Impl"
    // InternalFiacre.g:20412:1: rule__IdentifierExpression__Group_1__0__Impl : ( ( rule__IdentifierExpression__DeclarationAssignment_1_0 ) ) ;
    public final void rule__IdentifierExpression__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20416:1: ( ( ( rule__IdentifierExpression__DeclarationAssignment_1_0 ) ) )
            // InternalFiacre.g:20417:1: ( ( rule__IdentifierExpression__DeclarationAssignment_1_0 ) )
            {
            // InternalFiacre.g:20417:1: ( ( rule__IdentifierExpression__DeclarationAssignment_1_0 ) )
            // InternalFiacre.g:20418:2: ( rule__IdentifierExpression__DeclarationAssignment_1_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationAssignment_1_0()); 
            }
            // InternalFiacre.g:20419:2: ( rule__IdentifierExpression__DeclarationAssignment_1_0 )
            // InternalFiacre.g:20419:3: rule__IdentifierExpression__DeclarationAssignment_1_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__DeclarationAssignment_1_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationAssignment_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1__1"
    // InternalFiacre.g:20427:1: rule__IdentifierExpression__Group_1__1 : rule__IdentifierExpression__Group_1__1__Impl ;
    public final void rule__IdentifierExpression__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20431:1: ( rule__IdentifierExpression__Group_1__1__Impl )
            // InternalFiacre.g:20432:2: rule__IdentifierExpression__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1__1"


    // $ANTLR start "rule__IdentifierExpression__Group_1__1__Impl"
    // InternalFiacre.g:20438:1: rule__IdentifierExpression__Group_1__1__Impl : ( ( rule__IdentifierExpression__Alternatives_1_1 )* ) ;
    public final void rule__IdentifierExpression__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20442:1: ( ( ( rule__IdentifierExpression__Alternatives_1_1 )* ) )
            // InternalFiacre.g:20443:1: ( ( rule__IdentifierExpression__Alternatives_1_1 )* )
            {
            // InternalFiacre.g:20443:1: ( ( rule__IdentifierExpression__Alternatives_1_1 )* )
            // InternalFiacre.g:20444:2: ( rule__IdentifierExpression__Alternatives_1_1 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getAlternatives_1_1()); 
            }
            // InternalFiacre.g:20445:2: ( rule__IdentifierExpression__Alternatives_1_1 )*
            loop168:
            do {
                int alt168=2;
                int LA168_0 = input.LA(1);

                if ( (LA168_0==61) ) {
                    int LA168_2 = input.LA(2);

                    if ( (LA168_2==RULE_ID) ) {
                        int LA168_4 = input.LA(3);

                        if ( (synpred238_InternalFiacre()) ) {
                            alt168=1;
                        }


                    }


                }
                else if ( (LA168_0==42) ) {
                    alt168=1;
                }


                switch (alt168) {
            	case 1 :
            	    // InternalFiacre.g:20445:3: rule__IdentifierExpression__Alternatives_1_1
            	    {
            	    pushFollow(FollowSets000.FOLLOW_72);
            	    rule__IdentifierExpression__Alternatives_1_1();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop168;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getAlternatives_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__0"
    // InternalFiacre.g:20454:1: rule__IdentifierExpression__Group_1_1_0__0 : rule__IdentifierExpression__Group_1_1_0__0__Impl rule__IdentifierExpression__Group_1_1_0__1 ;
    public final void rule__IdentifierExpression__Group_1_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20458:1: ( rule__IdentifierExpression__Group_1_1_0__0__Impl rule__IdentifierExpression__Group_1_1_0__1 )
            // InternalFiacre.g:20459:2: rule__IdentifierExpression__Group_1_1_0__0__Impl rule__IdentifierExpression__Group_1_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierExpression__Group_1_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__0"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__0__Impl"
    // InternalFiacre.g:20466:1: rule__IdentifierExpression__Group_1_1_0__0__Impl : ( '[' ) ;
    public final void rule__IdentifierExpression__Group_1_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20470:1: ( ( '[' ) )
            // InternalFiacre.g:20471:1: ( '[' )
            {
            // InternalFiacre.g:20471:1: ( '[' )
            // InternalFiacre.g:20472:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getLeftSquareBracketKeyword_1_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getLeftSquareBracketKeyword_1_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__1"
    // InternalFiacre.g:20481:1: rule__IdentifierExpression__Group_1_1_0__1 : rule__IdentifierExpression__Group_1_1_0__1__Impl rule__IdentifierExpression__Group_1_1_0__2 ;
    public final void rule__IdentifierExpression__Group_1_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20485:1: ( rule__IdentifierExpression__Group_1_1_0__1__Impl rule__IdentifierExpression__Group_1_1_0__2 )
            // InternalFiacre.g:20486:2: rule__IdentifierExpression__Group_1_1_0__1__Impl rule__IdentifierExpression__Group_1_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierExpression__Group_1_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__1"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__1__Impl"
    // InternalFiacre.g:20493:1: rule__IdentifierExpression__Group_1_1_0__1__Impl : ( () ) ;
    public final void rule__IdentifierExpression__Group_1_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20497:1: ( ( () ) )
            // InternalFiacre.g:20498:1: ( () )
            {
            // InternalFiacre.g:20498:1: ( () )
            // InternalFiacre.g:20499:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getArrayAccessExpressionChildAction_1_1_0_1()); 
            }
            // InternalFiacre.g:20500:2: ()
            // InternalFiacre.g:20500:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getArrayAccessExpressionChildAction_1_1_0_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__2"
    // InternalFiacre.g:20508:1: rule__IdentifierExpression__Group_1_1_0__2 : rule__IdentifierExpression__Group_1_1_0__2__Impl rule__IdentifierExpression__Group_1_1_0__3 ;
    public final void rule__IdentifierExpression__Group_1_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20512:1: ( rule__IdentifierExpression__Group_1_1_0__2__Impl rule__IdentifierExpression__Group_1_1_0__3 )
            // InternalFiacre.g:20513:2: rule__IdentifierExpression__Group_1_1_0__2__Impl rule__IdentifierExpression__Group_1_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__IdentifierExpression__Group_1_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__2"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__2__Impl"
    // InternalFiacre.g:20520:1: rule__IdentifierExpression__Group_1_1_0__2__Impl : ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 ) ) ;
    public final void rule__IdentifierExpression__Group_1_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20524:1: ( ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 ) ) )
            // InternalFiacre.g:20525:1: ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 ) )
            {
            // InternalFiacre.g:20525:1: ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 ) )
            // InternalFiacre.g:20526:2: ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getIndexesAssignment_1_1_0_2()); 
            }
            // InternalFiacre.g:20527:2: ( rule__IdentifierExpression__IndexesAssignment_1_1_0_2 )
            // InternalFiacre.g:20527:3: rule__IdentifierExpression__IndexesAssignment_1_1_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__IndexesAssignment_1_1_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getIndexesAssignment_1_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__2__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__3"
    // InternalFiacre.g:20535:1: rule__IdentifierExpression__Group_1_1_0__3 : rule__IdentifierExpression__Group_1_1_0__3__Impl rule__IdentifierExpression__Group_1_1_0__4 ;
    public final void rule__IdentifierExpression__Group_1_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20539:1: ( rule__IdentifierExpression__Group_1_1_0__3__Impl rule__IdentifierExpression__Group_1_1_0__4 )
            // InternalFiacre.g:20540:2: rule__IdentifierExpression__Group_1_1_0__3__Impl rule__IdentifierExpression__Group_1_1_0__4
            {
            pushFollow(FollowSets000.FOLLOW_43);
            rule__IdentifierExpression__Group_1_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__3"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__3__Impl"
    // InternalFiacre.g:20547:1: rule__IdentifierExpression__Group_1_1_0__3__Impl : ( ( rule__IdentifierExpression__Group_1_1_0_3__0 )* ) ;
    public final void rule__IdentifierExpression__Group_1_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20551:1: ( ( ( rule__IdentifierExpression__Group_1_1_0_3__0 )* ) )
            // InternalFiacre.g:20552:1: ( ( rule__IdentifierExpression__Group_1_1_0_3__0 )* )
            {
            // InternalFiacre.g:20552:1: ( ( rule__IdentifierExpression__Group_1_1_0_3__0 )* )
            // InternalFiacre.g:20553:2: ( rule__IdentifierExpression__Group_1_1_0_3__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_0_3()); 
            }
            // InternalFiacre.g:20554:2: ( rule__IdentifierExpression__Group_1_1_0_3__0 )*
            loop169:
            do {
                int alt169=2;
                int LA169_0 = input.LA(1);

                if ( (LA169_0==24) ) {
                    alt169=1;
                }


                switch (alt169) {
            	case 1 :
            	    // InternalFiacre.g:20554:3: rule__IdentifierExpression__Group_1_1_0_3__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__IdentifierExpression__Group_1_1_0_3__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop169;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getGroup_1_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__3__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__4"
    // InternalFiacre.g:20562:1: rule__IdentifierExpression__Group_1_1_0__4 : rule__IdentifierExpression__Group_1_1_0__4__Impl ;
    public final void rule__IdentifierExpression__Group_1_1_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20566:1: ( rule__IdentifierExpression__Group_1_1_0__4__Impl )
            // InternalFiacre.g:20567:2: rule__IdentifierExpression__Group_1_1_0__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__4"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0__4__Impl"
    // InternalFiacre.g:20573:1: rule__IdentifierExpression__Group_1_1_0__4__Impl : ( ']' ) ;
    public final void rule__IdentifierExpression__Group_1_1_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20577:1: ( ( ']' ) )
            // InternalFiacre.g:20578:1: ( ']' )
            {
            // InternalFiacre.g:20578:1: ( ']' )
            // InternalFiacre.g:20579:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getRightSquareBracketKeyword_1_1_0_4()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getRightSquareBracketKeyword_1_1_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0__4__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0_3__0"
    // InternalFiacre.g:20589:1: rule__IdentifierExpression__Group_1_1_0_3__0 : rule__IdentifierExpression__Group_1_1_0_3__0__Impl rule__IdentifierExpression__Group_1_1_0_3__1 ;
    public final void rule__IdentifierExpression__Group_1_1_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20593:1: ( rule__IdentifierExpression__Group_1_1_0_3__0__Impl rule__IdentifierExpression__Group_1_1_0_3__1 )
            // InternalFiacre.g:20594:2: rule__IdentifierExpression__Group_1_1_0_3__0__Impl rule__IdentifierExpression__Group_1_1_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__IdentifierExpression__Group_1_1_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0_3__0"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0_3__0__Impl"
    // InternalFiacre.g:20601:1: rule__IdentifierExpression__Group_1_1_0_3__0__Impl : ( ',' ) ;
    public final void rule__IdentifierExpression__Group_1_1_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20605:1: ( ( ',' ) )
            // InternalFiacre.g:20606:1: ( ',' )
            {
            // InternalFiacre.g:20606:1: ( ',' )
            // InternalFiacre.g:20607:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getCommaKeyword_1_1_0_3_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getCommaKeyword_1_1_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0_3__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0_3__1"
    // InternalFiacre.g:20616:1: rule__IdentifierExpression__Group_1_1_0_3__1 : rule__IdentifierExpression__Group_1_1_0_3__1__Impl ;
    public final void rule__IdentifierExpression__Group_1_1_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20620:1: ( rule__IdentifierExpression__Group_1_1_0_3__1__Impl )
            // InternalFiacre.g:20621:2: rule__IdentifierExpression__Group_1_1_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0_3__1"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_0_3__1__Impl"
    // InternalFiacre.g:20627:1: rule__IdentifierExpression__Group_1_1_0_3__1__Impl : ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 ) ) ;
    public final void rule__IdentifierExpression__Group_1_1_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20631:1: ( ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 ) ) )
            // InternalFiacre.g:20632:1: ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 ) )
            {
            // InternalFiacre.g:20632:1: ( ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 ) )
            // InternalFiacre.g:20633:2: ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getIndexesAssignment_1_1_0_3_1()); 
            }
            // InternalFiacre.g:20634:2: ( rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 )
            // InternalFiacre.g:20634:3: rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getIndexesAssignment_1_1_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_0_3__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__0"
    // InternalFiacre.g:20643:1: rule__IdentifierExpression__Group_1_1_1__0 : rule__IdentifierExpression__Group_1_1_1__0__Impl rule__IdentifierExpression__Group_1_1_1__1 ;
    public final void rule__IdentifierExpression__Group_1_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20647:1: ( rule__IdentifierExpression__Group_1_1_1__0__Impl rule__IdentifierExpression__Group_1_1_1__1 )
            // InternalFiacre.g:20648:2: rule__IdentifierExpression__Group_1_1_1__0__Impl rule__IdentifierExpression__Group_1_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierExpression__Group_1_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__0"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__0__Impl"
    // InternalFiacre.g:20655:1: rule__IdentifierExpression__Group_1_1_1__0__Impl : ( '.' ) ;
    public final void rule__IdentifierExpression__Group_1_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20659:1: ( ( '.' ) )
            // InternalFiacre.g:20660:1: ( '.' )
            {
            // InternalFiacre.g:20660:1: ( '.' )
            // InternalFiacre.g:20661:2: '.'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getFullStopKeyword_1_1_1_0()); 
            }
            match(input,61,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getFullStopKeyword_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__0__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__1"
    // InternalFiacre.g:20670:1: rule__IdentifierExpression__Group_1_1_1__1 : rule__IdentifierExpression__Group_1_1_1__1__Impl rule__IdentifierExpression__Group_1_1_1__2 ;
    public final void rule__IdentifierExpression__Group_1_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20674:1: ( rule__IdentifierExpression__Group_1_1_1__1__Impl rule__IdentifierExpression__Group_1_1_1__2 )
            // InternalFiacre.g:20675:2: rule__IdentifierExpression__Group_1_1_1__1__Impl rule__IdentifierExpression__Group_1_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__IdentifierExpression__Group_1_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__1"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__1__Impl"
    // InternalFiacre.g:20682:1: rule__IdentifierExpression__Group_1_1_1__1__Impl : ( () ) ;
    public final void rule__IdentifierExpression__Group_1_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20686:1: ( ( () ) )
            // InternalFiacre.g:20687:1: ( () )
            {
            // InternalFiacre.g:20687:1: ( () )
            // InternalFiacre.g:20688:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getRecordAccessExpressionChildAction_1_1_1_1()); 
            }
            // InternalFiacre.g:20689:2: ()
            // InternalFiacre.g:20689:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getRecordAccessExpressionChildAction_1_1_1_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__1__Impl"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__2"
    // InternalFiacre.g:20697:1: rule__IdentifierExpression__Group_1_1_1__2 : rule__IdentifierExpression__Group_1_1_1__2__Impl ;
    public final void rule__IdentifierExpression__Group_1_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20701:1: ( rule__IdentifierExpression__Group_1_1_1__2__Impl )
            // InternalFiacre.g:20702:2: rule__IdentifierExpression__Group_1_1_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__Group_1_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__2"


    // $ANTLR start "rule__IdentifierExpression__Group_1_1_1__2__Impl"
    // InternalFiacre.g:20708:1: rule__IdentifierExpression__Group_1_1_1__2__Impl : ( ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 ) ) ;
    public final void rule__IdentifierExpression__Group_1_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20712:1: ( ( ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 ) ) )
            // InternalFiacre.g:20713:1: ( ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 ) )
            {
            // InternalFiacre.g:20713:1: ( ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 ) )
            // InternalFiacre.g:20714:2: ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getFieldAssignment_1_1_1_2()); 
            }
            // InternalFiacre.g:20715:2: ( rule__IdentifierExpression__FieldAssignment_1_1_1_2 )
            // InternalFiacre.g:20715:3: rule__IdentifierExpression__FieldAssignment_1_1_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__IdentifierExpression__FieldAssignment_1_1_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getFieldAssignment_1_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__Group_1_1_1__2__Impl"


    // $ANTLR start "rule__RecordExpression__Group__0"
    // InternalFiacre.g:20724:1: rule__RecordExpression__Group__0 : rule__RecordExpression__Group__0__Impl rule__RecordExpression__Group__1 ;
    public final void rule__RecordExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20728:1: ( rule__RecordExpression__Group__0__Impl rule__RecordExpression__Group__1 )
            // InternalFiacre.g:20729:2: rule__RecordExpression__Group__0__Impl rule__RecordExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__RecordExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__0"


    // $ANTLR start "rule__RecordExpression__Group__0__Impl"
    // InternalFiacre.g:20736:1: rule__RecordExpression__Group__0__Impl : ( '{' ) ;
    public final void rule__RecordExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20740:1: ( ( '{' ) )
            // InternalFiacre.g:20741:1: ( '{' )
            {
            // InternalFiacre.g:20741:1: ( '{' )
            // InternalFiacre.g:20742:2: '{'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getLeftCurlyBracketKeyword_0()); 
            }
            match(input,100,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getLeftCurlyBracketKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__0__Impl"


    // $ANTLR start "rule__RecordExpression__Group__1"
    // InternalFiacre.g:20751:1: rule__RecordExpression__Group__1 : rule__RecordExpression__Group__1__Impl rule__RecordExpression__Group__2 ;
    public final void rule__RecordExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20755:1: ( rule__RecordExpression__Group__1__Impl rule__RecordExpression__Group__2 )
            // InternalFiacre.g:20756:2: rule__RecordExpression__Group__1__Impl rule__RecordExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_122);
            rule__RecordExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__1"


    // $ANTLR start "rule__RecordExpression__Group__1__Impl"
    // InternalFiacre.g:20763:1: rule__RecordExpression__Group__1__Impl : ( ( rule__RecordExpression__FieldsAssignment_1 ) ) ;
    public final void rule__RecordExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20767:1: ( ( ( rule__RecordExpression__FieldsAssignment_1 ) ) )
            // InternalFiacre.g:20768:1: ( ( rule__RecordExpression__FieldsAssignment_1 ) )
            {
            // InternalFiacre.g:20768:1: ( ( rule__RecordExpression__FieldsAssignment_1 ) )
            // InternalFiacre.g:20769:2: ( rule__RecordExpression__FieldsAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getFieldsAssignment_1()); 
            }
            // InternalFiacre.g:20770:2: ( rule__RecordExpression__FieldsAssignment_1 )
            // InternalFiacre.g:20770:3: rule__RecordExpression__FieldsAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__FieldsAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getFieldsAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__1__Impl"


    // $ANTLR start "rule__RecordExpression__Group__2"
    // InternalFiacre.g:20778:1: rule__RecordExpression__Group__2 : rule__RecordExpression__Group__2__Impl rule__RecordExpression__Group__3 ;
    public final void rule__RecordExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20782:1: ( rule__RecordExpression__Group__2__Impl rule__RecordExpression__Group__3 )
            // InternalFiacre.g:20783:2: rule__RecordExpression__Group__2__Impl rule__RecordExpression__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_122);
            rule__RecordExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__2"


    // $ANTLR start "rule__RecordExpression__Group__2__Impl"
    // InternalFiacre.g:20790:1: rule__RecordExpression__Group__2__Impl : ( ( rule__RecordExpression__Group_2__0 )* ) ;
    public final void rule__RecordExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20794:1: ( ( ( rule__RecordExpression__Group_2__0 )* ) )
            // InternalFiacre.g:20795:1: ( ( rule__RecordExpression__Group_2__0 )* )
            {
            // InternalFiacre.g:20795:1: ( ( rule__RecordExpression__Group_2__0 )* )
            // InternalFiacre.g:20796:2: ( rule__RecordExpression__Group_2__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getGroup_2()); 
            }
            // InternalFiacre.g:20797:2: ( rule__RecordExpression__Group_2__0 )*
            loop170:
            do {
                int alt170=2;
                int LA170_0 = input.LA(1);

                if ( (LA170_0==24) ) {
                    alt170=1;
                }


                switch (alt170) {
            	case 1 :
            	    // InternalFiacre.g:20797:3: rule__RecordExpression__Group_2__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__RecordExpression__Group_2__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop170;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__2__Impl"


    // $ANTLR start "rule__RecordExpression__Group__3"
    // InternalFiacre.g:20805:1: rule__RecordExpression__Group__3 : rule__RecordExpression__Group__3__Impl ;
    public final void rule__RecordExpression__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20809:1: ( rule__RecordExpression__Group__3__Impl )
            // InternalFiacre.g:20810:2: rule__RecordExpression__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__3"


    // $ANTLR start "rule__RecordExpression__Group__3__Impl"
    // InternalFiacre.g:20816:1: rule__RecordExpression__Group__3__Impl : ( '}' ) ;
    public final void rule__RecordExpression__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20820:1: ( ( '}' ) )
            // InternalFiacre.g:20821:1: ( '}' )
            {
            // InternalFiacre.g:20821:1: ( '}' )
            // InternalFiacre.g:20822:2: '}'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getRightCurlyBracketKeyword_3()); 
            }
            match(input,101,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getRightCurlyBracketKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group__3__Impl"


    // $ANTLR start "rule__RecordExpression__Group_2__0"
    // InternalFiacre.g:20832:1: rule__RecordExpression__Group_2__0 : rule__RecordExpression__Group_2__0__Impl rule__RecordExpression__Group_2__1 ;
    public final void rule__RecordExpression__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20836:1: ( rule__RecordExpression__Group_2__0__Impl rule__RecordExpression__Group_2__1 )
            // InternalFiacre.g:20837:2: rule__RecordExpression__Group_2__0__Impl rule__RecordExpression__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__RecordExpression__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group_2__0"


    // $ANTLR start "rule__RecordExpression__Group_2__0__Impl"
    // InternalFiacre.g:20844:1: rule__RecordExpression__Group_2__0__Impl : ( ',' ) ;
    public final void rule__RecordExpression__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20848:1: ( ( ',' ) )
            // InternalFiacre.g:20849:1: ( ',' )
            {
            // InternalFiacre.g:20849:1: ( ',' )
            // InternalFiacre.g:20850:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getCommaKeyword_2_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getCommaKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group_2__0__Impl"


    // $ANTLR start "rule__RecordExpression__Group_2__1"
    // InternalFiacre.g:20859:1: rule__RecordExpression__Group_2__1 : rule__RecordExpression__Group_2__1__Impl ;
    public final void rule__RecordExpression__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20863:1: ( rule__RecordExpression__Group_2__1__Impl )
            // InternalFiacre.g:20864:2: rule__RecordExpression__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group_2__1"


    // $ANTLR start "rule__RecordExpression__Group_2__1__Impl"
    // InternalFiacre.g:20870:1: rule__RecordExpression__Group_2__1__Impl : ( ( rule__RecordExpression__FieldsAssignment_2_1 ) ) ;
    public final void rule__RecordExpression__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20874:1: ( ( ( rule__RecordExpression__FieldsAssignment_2_1 ) ) )
            // InternalFiacre.g:20875:1: ( ( rule__RecordExpression__FieldsAssignment_2_1 ) )
            {
            // InternalFiacre.g:20875:1: ( ( rule__RecordExpression__FieldsAssignment_2_1 ) )
            // InternalFiacre.g:20876:2: ( rule__RecordExpression__FieldsAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getFieldsAssignment_2_1()); 
            }
            // InternalFiacre.g:20877:2: ( rule__RecordExpression__FieldsAssignment_2_1 )
            // InternalFiacre.g:20877:3: rule__RecordExpression__FieldsAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__RecordExpression__FieldsAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getFieldsAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__Group_2__1__Impl"


    // $ANTLR start "rule__FieldExpression__Group__0"
    // InternalFiacre.g:20886:1: rule__FieldExpression__Group__0 : rule__FieldExpression__Group__0__Impl rule__FieldExpression__Group__1 ;
    public final void rule__FieldExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20890:1: ( rule__FieldExpression__Group__0__Impl rule__FieldExpression__Group__1 )
            // InternalFiacre.g:20891:2: rule__FieldExpression__Group__0__Impl rule__FieldExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_99);
            rule__FieldExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__0"


    // $ANTLR start "rule__FieldExpression__Group__0__Impl"
    // InternalFiacre.g:20898:1: rule__FieldExpression__Group__0__Impl : ( ( rule__FieldExpression__FieldAssignment_0 ) ) ;
    public final void rule__FieldExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20902:1: ( ( ( rule__FieldExpression__FieldAssignment_0 ) ) )
            // InternalFiacre.g:20903:1: ( ( rule__FieldExpression__FieldAssignment_0 ) )
            {
            // InternalFiacre.g:20903:1: ( ( rule__FieldExpression__FieldAssignment_0 ) )
            // InternalFiacre.g:20904:2: ( rule__FieldExpression__FieldAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getFieldAssignment_0()); 
            }
            // InternalFiacre.g:20905:2: ( rule__FieldExpression__FieldAssignment_0 )
            // InternalFiacre.g:20905:3: rule__FieldExpression__FieldAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__FieldAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getFieldAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__0__Impl"


    // $ANTLR start "rule__FieldExpression__Group__1"
    // InternalFiacre.g:20913:1: rule__FieldExpression__Group__1 : rule__FieldExpression__Group__1__Impl rule__FieldExpression__Group__2 ;
    public final void rule__FieldExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20917:1: ( rule__FieldExpression__Group__1__Impl rule__FieldExpression__Group__2 )
            // InternalFiacre.g:20918:2: rule__FieldExpression__Group__1__Impl rule__FieldExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__FieldExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__1"


    // $ANTLR start "rule__FieldExpression__Group__1__Impl"
    // InternalFiacre.g:20925:1: rule__FieldExpression__Group__1__Impl : ( '=' ) ;
    public final void rule__FieldExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20929:1: ( ( '=' ) )
            // InternalFiacre.g:20930:1: ( '=' )
            {
            // InternalFiacre.g:20930:1: ( '=' )
            // InternalFiacre.g:20931:2: '='
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getEqualsSignKeyword_1()); 
            }
            match(input,82,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getEqualsSignKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__1__Impl"


    // $ANTLR start "rule__FieldExpression__Group__2"
    // InternalFiacre.g:20940:1: rule__FieldExpression__Group__2 : rule__FieldExpression__Group__2__Impl ;
    public final void rule__FieldExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20944:1: ( rule__FieldExpression__Group__2__Impl )
            // InternalFiacre.g:20945:2: rule__FieldExpression__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__2"


    // $ANTLR start "rule__FieldExpression__Group__2__Impl"
    // InternalFiacre.g:20951:1: rule__FieldExpression__Group__2__Impl : ( ( rule__FieldExpression__ValueAssignment_2 ) ) ;
    public final void rule__FieldExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20955:1: ( ( ( rule__FieldExpression__ValueAssignment_2 ) ) )
            // InternalFiacre.g:20956:1: ( ( rule__FieldExpression__ValueAssignment_2 ) )
            {
            // InternalFiacre.g:20956:1: ( ( rule__FieldExpression__ValueAssignment_2 ) )
            // InternalFiacre.g:20957:2: ( rule__FieldExpression__ValueAssignment_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getValueAssignment_2()); 
            }
            // InternalFiacre.g:20958:2: ( rule__FieldExpression__ValueAssignment_2 )
            // InternalFiacre.g:20958:3: rule__FieldExpression__ValueAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__FieldExpression__ValueAssignment_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getValueAssignment_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__Group__2__Impl"


    // $ANTLR start "rule__ArrayExpression__Group__0"
    // InternalFiacre.g:20967:1: rule__ArrayExpression__Group__0 : rule__ArrayExpression__Group__0__Impl rule__ArrayExpression__Group__1 ;
    public final void rule__ArrayExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20971:1: ( rule__ArrayExpression__Group__0__Impl rule__ArrayExpression__Group__1 )
            // InternalFiacre.g:20972:2: rule__ArrayExpression__Group__0__Impl rule__ArrayExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_50);
            rule__ArrayExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__0"


    // $ANTLR start "rule__ArrayExpression__Group__0__Impl"
    // InternalFiacre.g:20979:1: rule__ArrayExpression__Group__0__Impl : ( () ) ;
    public final void rule__ArrayExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20983:1: ( ( () ) )
            // InternalFiacre.g:20984:1: ( () )
            {
            // InternalFiacre.g:20984:1: ( () )
            // InternalFiacre.g:20985:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getArrayExpressionAction_0()); 
            }
            // InternalFiacre.g:20986:2: ()
            // InternalFiacre.g:20986:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getArrayExpressionAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__0__Impl"


    // $ANTLR start "rule__ArrayExpression__Group__1"
    // InternalFiacre.g:20994:1: rule__ArrayExpression__Group__1 : rule__ArrayExpression__Group__1__Impl rule__ArrayExpression__Group__2 ;
    public final void rule__ArrayExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:20998:1: ( rule__ArrayExpression__Group__1__Impl rule__ArrayExpression__Group__2 )
            // InternalFiacre.g:20999:2: rule__ArrayExpression__Group__1__Impl rule__ArrayExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_123);
            rule__ArrayExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__1"


    // $ANTLR start "rule__ArrayExpression__Group__1__Impl"
    // InternalFiacre.g:21006:1: rule__ArrayExpression__Group__1__Impl : ( '[' ) ;
    public final void rule__ArrayExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21010:1: ( ( '[' ) )
            // InternalFiacre.g:21011:1: ( '[' )
            {
            // InternalFiacre.g:21011:1: ( '[' )
            // InternalFiacre.g:21012:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getLeftSquareBracketKeyword_1()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getLeftSquareBracketKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__1__Impl"


    // $ANTLR start "rule__ArrayExpression__Group__2"
    // InternalFiacre.g:21021:1: rule__ArrayExpression__Group__2 : rule__ArrayExpression__Group__2__Impl rule__ArrayExpression__Group__3 ;
    public final void rule__ArrayExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21025:1: ( rule__ArrayExpression__Group__2__Impl rule__ArrayExpression__Group__3 )
            // InternalFiacre.g:21026:2: rule__ArrayExpression__Group__2__Impl rule__ArrayExpression__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_123);
            rule__ArrayExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__2"


    // $ANTLR start "rule__ArrayExpression__Group__2__Impl"
    // InternalFiacre.g:21033:1: rule__ArrayExpression__Group__2__Impl : ( ( rule__ArrayExpression__Group_2__0 )? ) ;
    public final void rule__ArrayExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21037:1: ( ( ( rule__ArrayExpression__Group_2__0 )? ) )
            // InternalFiacre.g:21038:1: ( ( rule__ArrayExpression__Group_2__0 )? )
            {
            // InternalFiacre.g:21038:1: ( ( rule__ArrayExpression__Group_2__0 )? )
            // InternalFiacre.g:21039:2: ( rule__ArrayExpression__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getGroup_2()); 
            }
            // InternalFiacre.g:21040:2: ( rule__ArrayExpression__Group_2__0 )?
            int alt171=2;
            int LA171_0 = input.LA(1);

            if ( (LA171_0==RULE_ID||LA171_0==RULE_INT||LA171_0==14||LA171_0==22||LA171_0==42||(LA171_0>=77 && LA171_0<=78)||LA171_0==87||(LA171_0>=91 && LA171_0<=97)||(LA171_0>=99 && LA171_0<=100)||LA171_0==102||(LA171_0>=104 && LA171_0<=107)) ) {
                alt171=1;
            }
            switch (alt171) {
                case 1 :
                    // InternalFiacre.g:21040:3: rule__ArrayExpression__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ArrayExpression__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__2__Impl"


    // $ANTLR start "rule__ArrayExpression__Group__3"
    // InternalFiacre.g:21048:1: rule__ArrayExpression__Group__3 : rule__ArrayExpression__Group__3__Impl ;
    public final void rule__ArrayExpression__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21052:1: ( rule__ArrayExpression__Group__3__Impl )
            // InternalFiacre.g:21053:2: rule__ArrayExpression__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__3"


    // $ANTLR start "rule__ArrayExpression__Group__3__Impl"
    // InternalFiacre.g:21059:1: rule__ArrayExpression__Group__3__Impl : ( ']' ) ;
    public final void rule__ArrayExpression__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21063:1: ( ( ']' ) )
            // InternalFiacre.g:21064:1: ( ']' )
            {
            // InternalFiacre.g:21064:1: ( ']' )
            // InternalFiacre.g:21065:2: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getRightSquareBracketKeyword_3()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getRightSquareBracketKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group__3__Impl"


    // $ANTLR start "rule__ArrayExpression__Group_2__0"
    // InternalFiacre.g:21075:1: rule__ArrayExpression__Group_2__0 : rule__ArrayExpression__Group_2__0__Impl rule__ArrayExpression__Group_2__1 ;
    public final void rule__ArrayExpression__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21079:1: ( rule__ArrayExpression__Group_2__0__Impl rule__ArrayExpression__Group_2__1 )
            // InternalFiacre.g:21080:2: rule__ArrayExpression__Group_2__0__Impl rule__ArrayExpression__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__ArrayExpression__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2__0"


    // $ANTLR start "rule__ArrayExpression__Group_2__0__Impl"
    // InternalFiacre.g:21087:1: rule__ArrayExpression__Group_2__0__Impl : ( ( rule__ArrayExpression__ValuesAssignment_2_0 ) ) ;
    public final void rule__ArrayExpression__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21091:1: ( ( ( rule__ArrayExpression__ValuesAssignment_2_0 ) ) )
            // InternalFiacre.g:21092:1: ( ( rule__ArrayExpression__ValuesAssignment_2_0 ) )
            {
            // InternalFiacre.g:21092:1: ( ( rule__ArrayExpression__ValuesAssignment_2_0 ) )
            // InternalFiacre.g:21093:2: ( rule__ArrayExpression__ValuesAssignment_2_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getValuesAssignment_2_0()); 
            }
            // InternalFiacre.g:21094:2: ( rule__ArrayExpression__ValuesAssignment_2_0 )
            // InternalFiacre.g:21094:3: rule__ArrayExpression__ValuesAssignment_2_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__ValuesAssignment_2_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getValuesAssignment_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2__0__Impl"


    // $ANTLR start "rule__ArrayExpression__Group_2__1"
    // InternalFiacre.g:21102:1: rule__ArrayExpression__Group_2__1 : rule__ArrayExpression__Group_2__1__Impl ;
    public final void rule__ArrayExpression__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21106:1: ( rule__ArrayExpression__Group_2__1__Impl )
            // InternalFiacre.g:21107:2: rule__ArrayExpression__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2__1"


    // $ANTLR start "rule__ArrayExpression__Group_2__1__Impl"
    // InternalFiacre.g:21113:1: rule__ArrayExpression__Group_2__1__Impl : ( ( rule__ArrayExpression__Group_2_1__0 )* ) ;
    public final void rule__ArrayExpression__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21117:1: ( ( ( rule__ArrayExpression__Group_2_1__0 )* ) )
            // InternalFiacre.g:21118:1: ( ( rule__ArrayExpression__Group_2_1__0 )* )
            {
            // InternalFiacre.g:21118:1: ( ( rule__ArrayExpression__Group_2_1__0 )* )
            // InternalFiacre.g:21119:2: ( rule__ArrayExpression__Group_2_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getGroup_2_1()); 
            }
            // InternalFiacre.g:21120:2: ( rule__ArrayExpression__Group_2_1__0 )*
            loop172:
            do {
                int alt172=2;
                int LA172_0 = input.LA(1);

                if ( (LA172_0==24) ) {
                    alt172=1;
                }


                switch (alt172) {
            	case 1 :
            	    // InternalFiacre.g:21120:3: rule__ArrayExpression__Group_2_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__ArrayExpression__Group_2_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop172;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getGroup_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2__1__Impl"


    // $ANTLR start "rule__ArrayExpression__Group_2_1__0"
    // InternalFiacre.g:21129:1: rule__ArrayExpression__Group_2_1__0 : rule__ArrayExpression__Group_2_1__0__Impl rule__ArrayExpression__Group_2_1__1 ;
    public final void rule__ArrayExpression__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21133:1: ( rule__ArrayExpression__Group_2_1__0__Impl rule__ArrayExpression__Group_2_1__1 )
            // InternalFiacre.g:21134:2: rule__ArrayExpression__Group_2_1__0__Impl rule__ArrayExpression__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ArrayExpression__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2_1__0"


    // $ANTLR start "rule__ArrayExpression__Group_2_1__0__Impl"
    // InternalFiacre.g:21141:1: rule__ArrayExpression__Group_2_1__0__Impl : ( ',' ) ;
    public final void rule__ArrayExpression__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21145:1: ( ( ',' ) )
            // InternalFiacre.g:21146:1: ( ',' )
            {
            // InternalFiacre.g:21146:1: ( ',' )
            // InternalFiacre.g:21147:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getCommaKeyword_2_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getCommaKeyword_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2_1__0__Impl"


    // $ANTLR start "rule__ArrayExpression__Group_2_1__1"
    // InternalFiacre.g:21156:1: rule__ArrayExpression__Group_2_1__1 : rule__ArrayExpression__Group_2_1__1__Impl ;
    public final void rule__ArrayExpression__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21160:1: ( rule__ArrayExpression__Group_2_1__1__Impl )
            // InternalFiacre.g:21161:2: rule__ArrayExpression__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__Group_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2_1__1"


    // $ANTLR start "rule__ArrayExpression__Group_2_1__1__Impl"
    // InternalFiacre.g:21167:1: rule__ArrayExpression__Group_2_1__1__Impl : ( ( rule__ArrayExpression__ValuesAssignment_2_1_1 ) ) ;
    public final void rule__ArrayExpression__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21171:1: ( ( ( rule__ArrayExpression__ValuesAssignment_2_1_1 ) ) )
            // InternalFiacre.g:21172:1: ( ( rule__ArrayExpression__ValuesAssignment_2_1_1 ) )
            {
            // InternalFiacre.g:21172:1: ( ( rule__ArrayExpression__ValuesAssignment_2_1_1 ) )
            // InternalFiacre.g:21173:2: ( rule__ArrayExpression__ValuesAssignment_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getValuesAssignment_2_1_1()); 
            }
            // InternalFiacre.g:21174:2: ( rule__ArrayExpression__ValuesAssignment_2_1_1 )
            // InternalFiacre.g:21174:3: rule__ArrayExpression__ValuesAssignment_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ArrayExpression__ValuesAssignment_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getValuesAssignment_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__Group_2_1__1__Impl"


    // $ANTLR start "rule__QueueExpression__Group__0"
    // InternalFiacre.g:21183:1: rule__QueueExpression__Group__0 : rule__QueueExpression__Group__0__Impl rule__QueueExpression__Group__1 ;
    public final void rule__QueueExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21187:1: ( rule__QueueExpression__Group__0__Impl rule__QueueExpression__Group__1 )
            // InternalFiacre.g:21188:2: rule__QueueExpression__Group__0__Impl rule__QueueExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_124);
            rule__QueueExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__0"


    // $ANTLR start "rule__QueueExpression__Group__0__Impl"
    // InternalFiacre.g:21195:1: rule__QueueExpression__Group__0__Impl : ( () ) ;
    public final void rule__QueueExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21199:1: ( ( () ) )
            // InternalFiacre.g:21200:1: ( () )
            {
            // InternalFiacre.g:21200:1: ( () )
            // InternalFiacre.g:21201:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getQueueExpressionAction_0()); 
            }
            // InternalFiacre.g:21202:2: ()
            // InternalFiacre.g:21202:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getQueueExpressionAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__0__Impl"


    // $ANTLR start "rule__QueueExpression__Group__1"
    // InternalFiacre.g:21210:1: rule__QueueExpression__Group__1 : rule__QueueExpression__Group__1__Impl rule__QueueExpression__Group__2 ;
    public final void rule__QueueExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21214:1: ( rule__QueueExpression__Group__1__Impl rule__QueueExpression__Group__2 )
            // InternalFiacre.g:21215:2: rule__QueueExpression__Group__1__Impl rule__QueueExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_125);
            rule__QueueExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__1"


    // $ANTLR start "rule__QueueExpression__Group__1__Impl"
    // InternalFiacre.g:21222:1: rule__QueueExpression__Group__1__Impl : ( '{|' ) ;
    public final void rule__QueueExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21226:1: ( ( '{|' ) )
            // InternalFiacre.g:21227:1: ( '{|' )
            {
            // InternalFiacre.g:21227:1: ( '{|' )
            // InternalFiacre.g:21228:2: '{|'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getLeftCurlyBracketVerticalLineKeyword_1()); 
            }
            match(input,102,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getLeftCurlyBracketVerticalLineKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__1__Impl"


    // $ANTLR start "rule__QueueExpression__Group__2"
    // InternalFiacre.g:21237:1: rule__QueueExpression__Group__2 : rule__QueueExpression__Group__2__Impl rule__QueueExpression__Group__3 ;
    public final void rule__QueueExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21241:1: ( rule__QueueExpression__Group__2__Impl rule__QueueExpression__Group__3 )
            // InternalFiacre.g:21242:2: rule__QueueExpression__Group__2__Impl rule__QueueExpression__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_125);
            rule__QueueExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__2"


    // $ANTLR start "rule__QueueExpression__Group__2__Impl"
    // InternalFiacre.g:21249:1: rule__QueueExpression__Group__2__Impl : ( ( rule__QueueExpression__Group_2__0 )? ) ;
    public final void rule__QueueExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21253:1: ( ( ( rule__QueueExpression__Group_2__0 )? ) )
            // InternalFiacre.g:21254:1: ( ( rule__QueueExpression__Group_2__0 )? )
            {
            // InternalFiacre.g:21254:1: ( ( rule__QueueExpression__Group_2__0 )? )
            // InternalFiacre.g:21255:2: ( rule__QueueExpression__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getGroup_2()); 
            }
            // InternalFiacre.g:21256:2: ( rule__QueueExpression__Group_2__0 )?
            int alt173=2;
            int LA173_0 = input.LA(1);

            if ( (LA173_0==RULE_ID||LA173_0==RULE_INT||LA173_0==14||LA173_0==22||LA173_0==42||(LA173_0>=77 && LA173_0<=78)||LA173_0==87||(LA173_0>=91 && LA173_0<=97)||(LA173_0>=99 && LA173_0<=100)||LA173_0==102||(LA173_0>=104 && LA173_0<=107)) ) {
                alt173=1;
            }
            switch (alt173) {
                case 1 :
                    // InternalFiacre.g:21256:3: rule__QueueExpression__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__QueueExpression__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__2__Impl"


    // $ANTLR start "rule__QueueExpression__Group__3"
    // InternalFiacre.g:21264:1: rule__QueueExpression__Group__3 : rule__QueueExpression__Group__3__Impl ;
    public final void rule__QueueExpression__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21268:1: ( rule__QueueExpression__Group__3__Impl )
            // InternalFiacre.g:21269:2: rule__QueueExpression__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__3"


    // $ANTLR start "rule__QueueExpression__Group__3__Impl"
    // InternalFiacre.g:21275:1: rule__QueueExpression__Group__3__Impl : ( '|}' ) ;
    public final void rule__QueueExpression__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21279:1: ( ( '|}' ) )
            // InternalFiacre.g:21280:1: ( '|}' )
            {
            // InternalFiacre.g:21280:1: ( '|}' )
            // InternalFiacre.g:21281:2: '|}'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getVerticalLineRightCurlyBracketKeyword_3()); 
            }
            match(input,103,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getVerticalLineRightCurlyBracketKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group__3__Impl"


    // $ANTLR start "rule__QueueExpression__Group_2__0"
    // InternalFiacre.g:21291:1: rule__QueueExpression__Group_2__0 : rule__QueueExpression__Group_2__0__Impl rule__QueueExpression__Group_2__1 ;
    public final void rule__QueueExpression__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21295:1: ( rule__QueueExpression__Group_2__0__Impl rule__QueueExpression__Group_2__1 )
            // InternalFiacre.g:21296:2: rule__QueueExpression__Group_2__0__Impl rule__QueueExpression__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__QueueExpression__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2__0"


    // $ANTLR start "rule__QueueExpression__Group_2__0__Impl"
    // InternalFiacre.g:21303:1: rule__QueueExpression__Group_2__0__Impl : ( ( rule__QueueExpression__ValuesAssignment_2_0 ) ) ;
    public final void rule__QueueExpression__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21307:1: ( ( ( rule__QueueExpression__ValuesAssignment_2_0 ) ) )
            // InternalFiacre.g:21308:1: ( ( rule__QueueExpression__ValuesAssignment_2_0 ) )
            {
            // InternalFiacre.g:21308:1: ( ( rule__QueueExpression__ValuesAssignment_2_0 ) )
            // InternalFiacre.g:21309:2: ( rule__QueueExpression__ValuesAssignment_2_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getValuesAssignment_2_0()); 
            }
            // InternalFiacre.g:21310:2: ( rule__QueueExpression__ValuesAssignment_2_0 )
            // InternalFiacre.g:21310:3: rule__QueueExpression__ValuesAssignment_2_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__ValuesAssignment_2_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getValuesAssignment_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2__0__Impl"


    // $ANTLR start "rule__QueueExpression__Group_2__1"
    // InternalFiacre.g:21318:1: rule__QueueExpression__Group_2__1 : rule__QueueExpression__Group_2__1__Impl ;
    public final void rule__QueueExpression__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21322:1: ( rule__QueueExpression__Group_2__1__Impl )
            // InternalFiacre.g:21323:2: rule__QueueExpression__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2__1"


    // $ANTLR start "rule__QueueExpression__Group_2__1__Impl"
    // InternalFiacre.g:21329:1: rule__QueueExpression__Group_2__1__Impl : ( ( rule__QueueExpression__Group_2_1__0 )* ) ;
    public final void rule__QueueExpression__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21333:1: ( ( ( rule__QueueExpression__Group_2_1__0 )* ) )
            // InternalFiacre.g:21334:1: ( ( rule__QueueExpression__Group_2_1__0 )* )
            {
            // InternalFiacre.g:21334:1: ( ( rule__QueueExpression__Group_2_1__0 )* )
            // InternalFiacre.g:21335:2: ( rule__QueueExpression__Group_2_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getGroup_2_1()); 
            }
            // InternalFiacre.g:21336:2: ( rule__QueueExpression__Group_2_1__0 )*
            loop174:
            do {
                int alt174=2;
                int LA174_0 = input.LA(1);

                if ( (LA174_0==24) ) {
                    alt174=1;
                }


                switch (alt174) {
            	case 1 :
            	    // InternalFiacre.g:21336:3: rule__QueueExpression__Group_2_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_20);
            	    rule__QueueExpression__Group_2_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop174;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getGroup_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2__1__Impl"


    // $ANTLR start "rule__QueueExpression__Group_2_1__0"
    // InternalFiacre.g:21345:1: rule__QueueExpression__Group_2_1__0 : rule__QueueExpression__Group_2_1__0__Impl rule__QueueExpression__Group_2_1__1 ;
    public final void rule__QueueExpression__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21349:1: ( rule__QueueExpression__Group_2_1__0__Impl rule__QueueExpression__Group_2_1__1 )
            // InternalFiacre.g:21350:2: rule__QueueExpression__Group_2_1__0__Impl rule__QueueExpression__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__QueueExpression__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2_1__0"


    // $ANTLR start "rule__QueueExpression__Group_2_1__0__Impl"
    // InternalFiacre.g:21357:1: rule__QueueExpression__Group_2_1__0__Impl : ( ',' ) ;
    public final void rule__QueueExpression__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21361:1: ( ( ',' ) )
            // InternalFiacre.g:21362:1: ( ',' )
            {
            // InternalFiacre.g:21362:1: ( ',' )
            // InternalFiacre.g:21363:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getCommaKeyword_2_1_0()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getCommaKeyword_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2_1__0__Impl"


    // $ANTLR start "rule__QueueExpression__Group_2_1__1"
    // InternalFiacre.g:21372:1: rule__QueueExpression__Group_2_1__1 : rule__QueueExpression__Group_2_1__1__Impl ;
    public final void rule__QueueExpression__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21376:1: ( rule__QueueExpression__Group_2_1__1__Impl )
            // InternalFiacre.g:21377:2: rule__QueueExpression__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__Group_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2_1__1"


    // $ANTLR start "rule__QueueExpression__Group_2_1__1__Impl"
    // InternalFiacre.g:21383:1: rule__QueueExpression__Group_2_1__1__Impl : ( ( rule__QueueExpression__ValuesAssignment_2_1_1 ) ) ;
    public final void rule__QueueExpression__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21387:1: ( ( ( rule__QueueExpression__ValuesAssignment_2_1_1 ) ) )
            // InternalFiacre.g:21388:1: ( ( rule__QueueExpression__ValuesAssignment_2_1_1 ) )
            {
            // InternalFiacre.g:21388:1: ( ( rule__QueueExpression__ValuesAssignment_2_1_1 ) )
            // InternalFiacre.g:21389:2: ( rule__QueueExpression__ValuesAssignment_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getValuesAssignment_2_1_1()); 
            }
            // InternalFiacre.g:21390:2: ( rule__QueueExpression__ValuesAssignment_2_1_1 )
            // InternalFiacre.g:21390:3: rule__QueueExpression__ValuesAssignment_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QueueExpression__ValuesAssignment_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getValuesAssignment_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__Group_2_1__1__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__0"
    // InternalFiacre.g:21399:1: rule__EnqueueExpression__Group__0 : rule__EnqueueExpression__Group__0__Impl rule__EnqueueExpression__Group__1 ;
    public final void rule__EnqueueExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21403:1: ( rule__EnqueueExpression__Group__0__Impl rule__EnqueueExpression__Group__1 )
            // InternalFiacre.g:21404:2: rule__EnqueueExpression__Group__0__Impl rule__EnqueueExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_13);
            rule__EnqueueExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__0"


    // $ANTLR start "rule__EnqueueExpression__Group__0__Impl"
    // InternalFiacre.g:21411:1: rule__EnqueueExpression__Group__0__Impl : ( 'enqueue' ) ;
    public final void rule__EnqueueExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21415:1: ( ( 'enqueue' ) )
            // InternalFiacre.g:21416:1: ( 'enqueue' )
            {
            // InternalFiacre.g:21416:1: ( 'enqueue' )
            // InternalFiacre.g:21417:2: 'enqueue'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getEnqueueKeyword_0()); 
            }
            match(input,104,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getEnqueueKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__0__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__1"
    // InternalFiacre.g:21426:1: rule__EnqueueExpression__Group__1 : rule__EnqueueExpression__Group__1__Impl rule__EnqueueExpression__Group__2 ;
    public final void rule__EnqueueExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21430:1: ( rule__EnqueueExpression__Group__1__Impl rule__EnqueueExpression__Group__2 )
            // InternalFiacre.g:21431:2: rule__EnqueueExpression__Group__1__Impl rule__EnqueueExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__EnqueueExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__1"


    // $ANTLR start "rule__EnqueueExpression__Group__1__Impl"
    // InternalFiacre.g:21438:1: rule__EnqueueExpression__Group__1__Impl : ( '(' ) ;
    public final void rule__EnqueueExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21442:1: ( ( '(' ) )
            // InternalFiacre.g:21443:1: ( '(' )
            {
            // InternalFiacre.g:21443:1: ( '(' )
            // InternalFiacre.g:21444:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getLeftParenthesisKeyword_1()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getLeftParenthesisKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__1__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__2"
    // InternalFiacre.g:21453:1: rule__EnqueueExpression__Group__2 : rule__EnqueueExpression__Group__2__Impl rule__EnqueueExpression__Group__3 ;
    public final void rule__EnqueueExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21457:1: ( rule__EnqueueExpression__Group__2__Impl rule__EnqueueExpression__Group__3 )
            // InternalFiacre.g:21458:2: rule__EnqueueExpression__Group__2__Impl rule__EnqueueExpression__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__EnqueueExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__2"


    // $ANTLR start "rule__EnqueueExpression__Group__2__Impl"
    // InternalFiacre.g:21465:1: rule__EnqueueExpression__Group__2__Impl : ( ( rule__EnqueueExpression__ElementAssignment_2 ) ) ;
    public final void rule__EnqueueExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21469:1: ( ( ( rule__EnqueueExpression__ElementAssignment_2 ) ) )
            // InternalFiacre.g:21470:1: ( ( rule__EnqueueExpression__ElementAssignment_2 ) )
            {
            // InternalFiacre.g:21470:1: ( ( rule__EnqueueExpression__ElementAssignment_2 ) )
            // InternalFiacre.g:21471:2: ( rule__EnqueueExpression__ElementAssignment_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getElementAssignment_2()); 
            }
            // InternalFiacre.g:21472:2: ( rule__EnqueueExpression__ElementAssignment_2 )
            // InternalFiacre.g:21472:3: rule__EnqueueExpression__ElementAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__ElementAssignment_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getElementAssignment_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__2__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__3"
    // InternalFiacre.g:21480:1: rule__EnqueueExpression__Group__3 : rule__EnqueueExpression__Group__3__Impl rule__EnqueueExpression__Group__4 ;
    public final void rule__EnqueueExpression__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21484:1: ( rule__EnqueueExpression__Group__3__Impl rule__EnqueueExpression__Group__4 )
            // InternalFiacre.g:21485:2: rule__EnqueueExpression__Group__3__Impl rule__EnqueueExpression__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__EnqueueExpression__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__3"


    // $ANTLR start "rule__EnqueueExpression__Group__3__Impl"
    // InternalFiacre.g:21492:1: rule__EnqueueExpression__Group__3__Impl : ( ',' ) ;
    public final void rule__EnqueueExpression__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21496:1: ( ( ',' ) )
            // InternalFiacre.g:21497:1: ( ',' )
            {
            // InternalFiacre.g:21497:1: ( ',' )
            // InternalFiacre.g:21498:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getCommaKeyword_3()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getCommaKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__3__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__4"
    // InternalFiacre.g:21507:1: rule__EnqueueExpression__Group__4 : rule__EnqueueExpression__Group__4__Impl rule__EnqueueExpression__Group__5 ;
    public final void rule__EnqueueExpression__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21511:1: ( rule__EnqueueExpression__Group__4__Impl rule__EnqueueExpression__Group__5 )
            // InternalFiacre.g:21512:2: rule__EnqueueExpression__Group__4__Impl rule__EnqueueExpression__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__EnqueueExpression__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__4"


    // $ANTLR start "rule__EnqueueExpression__Group__4__Impl"
    // InternalFiacre.g:21519:1: rule__EnqueueExpression__Group__4__Impl : ( ( rule__EnqueueExpression__QueueAssignment_4 ) ) ;
    public final void rule__EnqueueExpression__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21523:1: ( ( ( rule__EnqueueExpression__QueueAssignment_4 ) ) )
            // InternalFiacre.g:21524:1: ( ( rule__EnqueueExpression__QueueAssignment_4 ) )
            {
            // InternalFiacre.g:21524:1: ( ( rule__EnqueueExpression__QueueAssignment_4 ) )
            // InternalFiacre.g:21525:2: ( rule__EnqueueExpression__QueueAssignment_4 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getQueueAssignment_4()); 
            }
            // InternalFiacre.g:21526:2: ( rule__EnqueueExpression__QueueAssignment_4 )
            // InternalFiacre.g:21526:3: rule__EnqueueExpression__QueueAssignment_4
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__QueueAssignment_4();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getQueueAssignment_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__4__Impl"


    // $ANTLR start "rule__EnqueueExpression__Group__5"
    // InternalFiacre.g:21534:1: rule__EnqueueExpression__Group__5 : rule__EnqueueExpression__Group__5__Impl ;
    public final void rule__EnqueueExpression__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21538:1: ( rule__EnqueueExpression__Group__5__Impl )
            // InternalFiacre.g:21539:2: rule__EnqueueExpression__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnqueueExpression__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__5"


    // $ANTLR start "rule__EnqueueExpression__Group__5__Impl"
    // InternalFiacre.g:21545:1: rule__EnqueueExpression__Group__5__Impl : ( ')' ) ;
    public final void rule__EnqueueExpression__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21549:1: ( ( ')' ) )
            // InternalFiacre.g:21550:1: ( ')' )
            {
            // InternalFiacre.g:21550:1: ( ')' )
            // InternalFiacre.g:21551:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getRightParenthesisKeyword_5()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getRightParenthesisKeyword_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__Group__5__Impl"


    // $ANTLR start "rule__AppendExpression__Group__0"
    // InternalFiacre.g:21561:1: rule__AppendExpression__Group__0 : rule__AppendExpression__Group__0__Impl rule__AppendExpression__Group__1 ;
    public final void rule__AppendExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21565:1: ( rule__AppendExpression__Group__0__Impl rule__AppendExpression__Group__1 )
            // InternalFiacre.g:21566:2: rule__AppendExpression__Group__0__Impl rule__AppendExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_13);
            rule__AppendExpression__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__0"


    // $ANTLR start "rule__AppendExpression__Group__0__Impl"
    // InternalFiacre.g:21573:1: rule__AppendExpression__Group__0__Impl : ( 'append' ) ;
    public final void rule__AppendExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21577:1: ( ( 'append' ) )
            // InternalFiacre.g:21578:1: ( 'append' )
            {
            // InternalFiacre.g:21578:1: ( 'append' )
            // InternalFiacre.g:21579:2: 'append'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getAppendKeyword_0()); 
            }
            match(input,105,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getAppendKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__0__Impl"


    // $ANTLR start "rule__AppendExpression__Group__1"
    // InternalFiacre.g:21588:1: rule__AppendExpression__Group__1 : rule__AppendExpression__Group__1__Impl rule__AppendExpression__Group__2 ;
    public final void rule__AppendExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21592:1: ( rule__AppendExpression__Group__1__Impl rule__AppendExpression__Group__2 )
            // InternalFiacre.g:21593:2: rule__AppendExpression__Group__1__Impl rule__AppendExpression__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__AppendExpression__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__1"


    // $ANTLR start "rule__AppendExpression__Group__1__Impl"
    // InternalFiacre.g:21600:1: rule__AppendExpression__Group__1__Impl : ( '(' ) ;
    public final void rule__AppendExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21604:1: ( ( '(' ) )
            // InternalFiacre.g:21605:1: ( '(' )
            {
            // InternalFiacre.g:21605:1: ( '(' )
            // InternalFiacre.g:21606:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getLeftParenthesisKeyword_1()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getLeftParenthesisKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__1__Impl"


    // $ANTLR start "rule__AppendExpression__Group__2"
    // InternalFiacre.g:21615:1: rule__AppendExpression__Group__2 : rule__AppendExpression__Group__2__Impl rule__AppendExpression__Group__3 ;
    public final void rule__AppendExpression__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21619:1: ( rule__AppendExpression__Group__2__Impl rule__AppendExpression__Group__3 )
            // InternalFiacre.g:21620:2: rule__AppendExpression__Group__2__Impl rule__AppendExpression__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__AppendExpression__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__2"


    // $ANTLR start "rule__AppendExpression__Group__2__Impl"
    // InternalFiacre.g:21627:1: rule__AppendExpression__Group__2__Impl : ( ( rule__AppendExpression__LeftAssignment_2 ) ) ;
    public final void rule__AppendExpression__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21631:1: ( ( ( rule__AppendExpression__LeftAssignment_2 ) ) )
            // InternalFiacre.g:21632:1: ( ( rule__AppendExpression__LeftAssignment_2 ) )
            {
            // InternalFiacre.g:21632:1: ( ( rule__AppendExpression__LeftAssignment_2 ) )
            // InternalFiacre.g:21633:2: ( rule__AppendExpression__LeftAssignment_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getLeftAssignment_2()); 
            }
            // InternalFiacre.g:21634:2: ( rule__AppendExpression__LeftAssignment_2 )
            // InternalFiacre.g:21634:3: rule__AppendExpression__LeftAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__LeftAssignment_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getLeftAssignment_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__2__Impl"


    // $ANTLR start "rule__AppendExpression__Group__3"
    // InternalFiacre.g:21642:1: rule__AppendExpression__Group__3 : rule__AppendExpression__Group__3__Impl rule__AppendExpression__Group__4 ;
    public final void rule__AppendExpression__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21646:1: ( rule__AppendExpression__Group__3__Impl rule__AppendExpression__Group__4 )
            // InternalFiacre.g:21647:2: rule__AppendExpression__Group__3__Impl rule__AppendExpression__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__AppendExpression__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__3"


    // $ANTLR start "rule__AppendExpression__Group__3__Impl"
    // InternalFiacre.g:21654:1: rule__AppendExpression__Group__3__Impl : ( ',' ) ;
    public final void rule__AppendExpression__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21658:1: ( ( ',' ) )
            // InternalFiacre.g:21659:1: ( ',' )
            {
            // InternalFiacre.g:21659:1: ( ',' )
            // InternalFiacre.g:21660:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getCommaKeyword_3()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getCommaKeyword_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__3__Impl"


    // $ANTLR start "rule__AppendExpression__Group__4"
    // InternalFiacre.g:21669:1: rule__AppendExpression__Group__4 : rule__AppendExpression__Group__4__Impl rule__AppendExpression__Group__5 ;
    public final void rule__AppendExpression__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21673:1: ( rule__AppendExpression__Group__4__Impl rule__AppendExpression__Group__5 )
            // InternalFiacre.g:21674:2: rule__AppendExpression__Group__4__Impl rule__AppendExpression__Group__5
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__AppendExpression__Group__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__4"


    // $ANTLR start "rule__AppendExpression__Group__4__Impl"
    // InternalFiacre.g:21681:1: rule__AppendExpression__Group__4__Impl : ( ( rule__AppendExpression__RightAssignment_4 ) ) ;
    public final void rule__AppendExpression__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21685:1: ( ( ( rule__AppendExpression__RightAssignment_4 ) ) )
            // InternalFiacre.g:21686:1: ( ( rule__AppendExpression__RightAssignment_4 ) )
            {
            // InternalFiacre.g:21686:1: ( ( rule__AppendExpression__RightAssignment_4 ) )
            // InternalFiacre.g:21687:2: ( rule__AppendExpression__RightAssignment_4 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getRightAssignment_4()); 
            }
            // InternalFiacre.g:21688:2: ( rule__AppendExpression__RightAssignment_4 )
            // InternalFiacre.g:21688:3: rule__AppendExpression__RightAssignment_4
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__RightAssignment_4();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getRightAssignment_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__4__Impl"


    // $ANTLR start "rule__AppendExpression__Group__5"
    // InternalFiacre.g:21696:1: rule__AppendExpression__Group__5 : rule__AppendExpression__Group__5__Impl ;
    public final void rule__AppendExpression__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21700:1: ( rule__AppendExpression__Group__5__Impl )
            // InternalFiacre.g:21701:2: rule__AppendExpression__Group__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AppendExpression__Group__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__5"


    // $ANTLR start "rule__AppendExpression__Group__5__Impl"
    // InternalFiacre.g:21707:1: rule__AppendExpression__Group__5__Impl : ( ')' ) ;
    public final void rule__AppendExpression__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21711:1: ( ( ')' ) )
            // InternalFiacre.g:21712:1: ( ')' )
            {
            // InternalFiacre.g:21712:1: ( ')' )
            // InternalFiacre.g:21713:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getRightParenthesisKeyword_5()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getRightParenthesisKeyword_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__Group__5__Impl"


    // $ANTLR start "rule__BooleanLiteral__Group_0__0"
    // InternalFiacre.g:21723:1: rule__BooleanLiteral__Group_0__0 : rule__BooleanLiteral__Group_0__0__Impl rule__BooleanLiteral__Group_0__1 ;
    public final void rule__BooleanLiteral__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21727:1: ( rule__BooleanLiteral__Group_0__0__Impl rule__BooleanLiteral__Group_0__1 )
            // InternalFiacre.g:21728:2: rule__BooleanLiteral__Group_0__0__Impl rule__BooleanLiteral__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_126);
            rule__BooleanLiteral__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BooleanLiteral__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_0__0"


    // $ANTLR start "rule__BooleanLiteral__Group_0__0__Impl"
    // InternalFiacre.g:21735:1: rule__BooleanLiteral__Group_0__0__Impl : ( () ) ;
    public final void rule__BooleanLiteral__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21739:1: ( ( () ) )
            // InternalFiacre.g:21740:1: ( () )
            {
            // InternalFiacre.g:21740:1: ( () )
            // InternalFiacre.g:21741:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralAccess().getTrueLiteralAction_0_0()); 
            }
            // InternalFiacre.g:21742:2: ()
            // InternalFiacre.g:21742:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralAccess().getTrueLiteralAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_0__0__Impl"


    // $ANTLR start "rule__BooleanLiteral__Group_0__1"
    // InternalFiacre.g:21750:1: rule__BooleanLiteral__Group_0__1 : rule__BooleanLiteral__Group_0__1__Impl ;
    public final void rule__BooleanLiteral__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21754:1: ( rule__BooleanLiteral__Group_0__1__Impl )
            // InternalFiacre.g:21755:2: rule__BooleanLiteral__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BooleanLiteral__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_0__1"


    // $ANTLR start "rule__BooleanLiteral__Group_0__1__Impl"
    // InternalFiacre.g:21761:1: rule__BooleanLiteral__Group_0__1__Impl : ( 'true' ) ;
    public final void rule__BooleanLiteral__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21765:1: ( ( 'true' ) )
            // InternalFiacre.g:21766:1: ( 'true' )
            {
            // InternalFiacre.g:21766:1: ( 'true' )
            // InternalFiacre.g:21767:2: 'true'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralAccess().getTrueKeyword_0_1()); 
            }
            match(input,106,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralAccess().getTrueKeyword_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_0__1__Impl"


    // $ANTLR start "rule__BooleanLiteral__Group_1__0"
    // InternalFiacre.g:21777:1: rule__BooleanLiteral__Group_1__0 : rule__BooleanLiteral__Group_1__0__Impl rule__BooleanLiteral__Group_1__1 ;
    public final void rule__BooleanLiteral__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21781:1: ( rule__BooleanLiteral__Group_1__0__Impl rule__BooleanLiteral__Group_1__1 )
            // InternalFiacre.g:21782:2: rule__BooleanLiteral__Group_1__0__Impl rule__BooleanLiteral__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_127);
            rule__BooleanLiteral__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BooleanLiteral__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_1__0"


    // $ANTLR start "rule__BooleanLiteral__Group_1__0__Impl"
    // InternalFiacre.g:21789:1: rule__BooleanLiteral__Group_1__0__Impl : ( () ) ;
    public final void rule__BooleanLiteral__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21793:1: ( ( () ) )
            // InternalFiacre.g:21794:1: ( () )
            {
            // InternalFiacre.g:21794:1: ( () )
            // InternalFiacre.g:21795:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralAccess().getFalseLiteralAction_1_0()); 
            }
            // InternalFiacre.g:21796:2: ()
            // InternalFiacre.g:21796:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralAccess().getFalseLiteralAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_1__0__Impl"


    // $ANTLR start "rule__BooleanLiteral__Group_1__1"
    // InternalFiacre.g:21804:1: rule__BooleanLiteral__Group_1__1 : rule__BooleanLiteral__Group_1__1__Impl ;
    public final void rule__BooleanLiteral__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21808:1: ( rule__BooleanLiteral__Group_1__1__Impl )
            // InternalFiacre.g:21809:2: rule__BooleanLiteral__Group_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__BooleanLiteral__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_1__1"


    // $ANTLR start "rule__BooleanLiteral__Group_1__1__Impl"
    // InternalFiacre.g:21815:1: rule__BooleanLiteral__Group_1__1__Impl : ( 'false' ) ;
    public final void rule__BooleanLiteral__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21819:1: ( ( 'false' ) )
            // InternalFiacre.g:21820:1: ( 'false' )
            {
            // InternalFiacre.g:21820:1: ( 'false' )
            // InternalFiacre.g:21821:2: 'false'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBooleanLiteralAccess().getFalseKeyword_1_1()); 
            }
            match(input,107,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBooleanLiteralAccess().getFalseKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BooleanLiteral__Group_1__1__Impl"


    // $ANTLR start "rule__NaturalLowerBound__Group__0"
    // InternalFiacre.g:21831:1: rule__NaturalLowerBound__Group__0 : rule__NaturalLowerBound__Group__0__Impl rule__NaturalLowerBound__Group__1 ;
    public final void rule__NaturalLowerBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21835:1: ( rule__NaturalLowerBound__Group__0__Impl rule__NaturalLowerBound__Group__1 )
            // InternalFiacre.g:21836:2: rule__NaturalLowerBound__Group__0__Impl rule__NaturalLowerBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_69);
            rule__NaturalLowerBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLowerBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__Group__0"


    // $ANTLR start "rule__NaturalLowerBound__Group__0__Impl"
    // InternalFiacre.g:21843:1: rule__NaturalLowerBound__Group__0__Impl : ( ( rule__NaturalLowerBound__Alternatives_0 ) ) ;
    public final void rule__NaturalLowerBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21847:1: ( ( ( rule__NaturalLowerBound__Alternatives_0 ) ) )
            // InternalFiacre.g:21848:1: ( ( rule__NaturalLowerBound__Alternatives_0 ) )
            {
            // InternalFiacre.g:21848:1: ( ( rule__NaturalLowerBound__Alternatives_0 ) )
            // InternalFiacre.g:21849:2: ( rule__NaturalLowerBound__Alternatives_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:21850:2: ( rule__NaturalLowerBound__Alternatives_0 )
            // InternalFiacre.g:21850:3: rule__NaturalLowerBound__Alternatives_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLowerBound__Alternatives_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__Group__0__Impl"


    // $ANTLR start "rule__NaturalLowerBound__Group__1"
    // InternalFiacre.g:21858:1: rule__NaturalLowerBound__Group__1 : rule__NaturalLowerBound__Group__1__Impl ;
    public final void rule__NaturalLowerBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21862:1: ( rule__NaturalLowerBound__Group__1__Impl )
            // InternalFiacre.g:21863:2: rule__NaturalLowerBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLowerBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__Group__1"


    // $ANTLR start "rule__NaturalLowerBound__Group__1__Impl"
    // InternalFiacre.g:21869:1: rule__NaturalLowerBound__Group__1__Impl : ( ( rule__NaturalLowerBound__ValueAssignment_1 ) ) ;
    public final void rule__NaturalLowerBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21873:1: ( ( ( rule__NaturalLowerBound__ValueAssignment_1 ) ) )
            // InternalFiacre.g:21874:1: ( ( rule__NaturalLowerBound__ValueAssignment_1 ) )
            {
            // InternalFiacre.g:21874:1: ( ( rule__NaturalLowerBound__ValueAssignment_1 ) )
            // InternalFiacre.g:21875:2: ( rule__NaturalLowerBound__ValueAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getValueAssignment_1()); 
            }
            // InternalFiacre.g:21876:2: ( rule__NaturalLowerBound__ValueAssignment_1 )
            // InternalFiacre.g:21876:3: rule__NaturalLowerBound__ValueAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalLowerBound__ValueAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getValueAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__Group__1__Impl"


    // $ANTLR start "rule__NaturalUpperBound__Group__0"
    // InternalFiacre.g:21885:1: rule__NaturalUpperBound__Group__0 : rule__NaturalUpperBound__Group__0__Impl rule__NaturalUpperBound__Group__1 ;
    public final void rule__NaturalUpperBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21889:1: ( rule__NaturalUpperBound__Group__0__Impl rule__NaturalUpperBound__Group__1 )
            // InternalFiacre.g:21890:2: rule__NaturalUpperBound__Group__0__Impl rule__NaturalUpperBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__NaturalUpperBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalUpperBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__Group__0"


    // $ANTLR start "rule__NaturalUpperBound__Group__0__Impl"
    // InternalFiacre.g:21897:1: rule__NaturalUpperBound__Group__0__Impl : ( ( rule__NaturalUpperBound__ValueAssignment_0 ) ) ;
    public final void rule__NaturalUpperBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21901:1: ( ( ( rule__NaturalUpperBound__ValueAssignment_0 ) ) )
            // InternalFiacre.g:21902:1: ( ( rule__NaturalUpperBound__ValueAssignment_0 ) )
            {
            // InternalFiacre.g:21902:1: ( ( rule__NaturalUpperBound__ValueAssignment_0 ) )
            // InternalFiacre.g:21903:2: ( rule__NaturalUpperBound__ValueAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getValueAssignment_0()); 
            }
            // InternalFiacre.g:21904:2: ( rule__NaturalUpperBound__ValueAssignment_0 )
            // InternalFiacre.g:21904:3: rule__NaturalUpperBound__ValueAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalUpperBound__ValueAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getValueAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__Group__0__Impl"


    // $ANTLR start "rule__NaturalUpperBound__Group__1"
    // InternalFiacre.g:21912:1: rule__NaturalUpperBound__Group__1 : rule__NaturalUpperBound__Group__1__Impl ;
    public final void rule__NaturalUpperBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21916:1: ( rule__NaturalUpperBound__Group__1__Impl )
            // InternalFiacre.g:21917:2: rule__NaturalUpperBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalUpperBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__Group__1"


    // $ANTLR start "rule__NaturalUpperBound__Group__1__Impl"
    // InternalFiacre.g:21923:1: rule__NaturalUpperBound__Group__1__Impl : ( ( rule__NaturalUpperBound__Alternatives_1 ) ) ;
    public final void rule__NaturalUpperBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21927:1: ( ( ( rule__NaturalUpperBound__Alternatives_1 ) ) )
            // InternalFiacre.g:21928:1: ( ( rule__NaturalUpperBound__Alternatives_1 ) )
            {
            // InternalFiacre.g:21928:1: ( ( rule__NaturalUpperBound__Alternatives_1 ) )
            // InternalFiacre.g:21929:2: ( rule__NaturalUpperBound__Alternatives_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:21930:2: ( rule__NaturalUpperBound__Alternatives_1 )
            // InternalFiacre.g:21930:3: rule__NaturalUpperBound__Alternatives_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__NaturalUpperBound__Alternatives_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__Group__1__Impl"


    // $ANTLR start "rule__DecimalLowerBound__Group__0"
    // InternalFiacre.g:21939:1: rule__DecimalLowerBound__Group__0 : rule__DecimalLowerBound__Group__0__Impl rule__DecimalLowerBound__Group__1 ;
    public final void rule__DecimalLowerBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21943:1: ( rule__DecimalLowerBound__Group__0__Impl rule__DecimalLowerBound__Group__1 )
            // InternalFiacre.g:21944:2: rule__DecimalLowerBound__Group__0__Impl rule__DecimalLowerBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_128);
            rule__DecimalLowerBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalLowerBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__Group__0"


    // $ANTLR start "rule__DecimalLowerBound__Group__0__Impl"
    // InternalFiacre.g:21951:1: rule__DecimalLowerBound__Group__0__Impl : ( ( rule__DecimalLowerBound__Alternatives_0 ) ) ;
    public final void rule__DecimalLowerBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21955:1: ( ( ( rule__DecimalLowerBound__Alternatives_0 ) ) )
            // InternalFiacre.g:21956:1: ( ( rule__DecimalLowerBound__Alternatives_0 ) )
            {
            // InternalFiacre.g:21956:1: ( ( rule__DecimalLowerBound__Alternatives_0 ) )
            // InternalFiacre.g:21957:2: ( rule__DecimalLowerBound__Alternatives_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:21958:2: ( rule__DecimalLowerBound__Alternatives_0 )
            // InternalFiacre.g:21958:3: rule__DecimalLowerBound__Alternatives_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalLowerBound__Alternatives_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__Group__0__Impl"


    // $ANTLR start "rule__DecimalLowerBound__Group__1"
    // InternalFiacre.g:21966:1: rule__DecimalLowerBound__Group__1 : rule__DecimalLowerBound__Group__1__Impl ;
    public final void rule__DecimalLowerBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21970:1: ( rule__DecimalLowerBound__Group__1__Impl )
            // InternalFiacre.g:21971:2: rule__DecimalLowerBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalLowerBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__Group__1"


    // $ANTLR start "rule__DecimalLowerBound__Group__1__Impl"
    // InternalFiacre.g:21977:1: rule__DecimalLowerBound__Group__1__Impl : ( ( rule__DecimalLowerBound__ValueAssignment_1 ) ) ;
    public final void rule__DecimalLowerBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21981:1: ( ( ( rule__DecimalLowerBound__ValueAssignment_1 ) ) )
            // InternalFiacre.g:21982:1: ( ( rule__DecimalLowerBound__ValueAssignment_1 ) )
            {
            // InternalFiacre.g:21982:1: ( ( rule__DecimalLowerBound__ValueAssignment_1 ) )
            // InternalFiacre.g:21983:2: ( rule__DecimalLowerBound__ValueAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getValueAssignment_1()); 
            }
            // InternalFiacre.g:21984:2: ( rule__DecimalLowerBound__ValueAssignment_1 )
            // InternalFiacre.g:21984:3: rule__DecimalLowerBound__ValueAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalLowerBound__ValueAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getValueAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__Group__1__Impl"


    // $ANTLR start "rule__DecimalUpperBound__Group__0"
    // InternalFiacre.g:21993:1: rule__DecimalUpperBound__Group__0 : rule__DecimalUpperBound__Group__0__Impl rule__DecimalUpperBound__Group__1 ;
    public final void rule__DecimalUpperBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:21997:1: ( rule__DecimalUpperBound__Group__0__Impl rule__DecimalUpperBound__Group__1 )
            // InternalFiacre.g:21998:2: rule__DecimalUpperBound__Group__0__Impl rule__DecimalUpperBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__DecimalUpperBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalUpperBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__Group__0"


    // $ANTLR start "rule__DecimalUpperBound__Group__0__Impl"
    // InternalFiacre.g:22005:1: rule__DecimalUpperBound__Group__0__Impl : ( ( rule__DecimalUpperBound__ValueAssignment_0 ) ) ;
    public final void rule__DecimalUpperBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22009:1: ( ( ( rule__DecimalUpperBound__ValueAssignment_0 ) ) )
            // InternalFiacre.g:22010:1: ( ( rule__DecimalUpperBound__ValueAssignment_0 ) )
            {
            // InternalFiacre.g:22010:1: ( ( rule__DecimalUpperBound__ValueAssignment_0 ) )
            // InternalFiacre.g:22011:2: ( rule__DecimalUpperBound__ValueAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getValueAssignment_0()); 
            }
            // InternalFiacre.g:22012:2: ( rule__DecimalUpperBound__ValueAssignment_0 )
            // InternalFiacre.g:22012:3: rule__DecimalUpperBound__ValueAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalUpperBound__ValueAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getValueAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__Group__0__Impl"


    // $ANTLR start "rule__DecimalUpperBound__Group__1"
    // InternalFiacre.g:22020:1: rule__DecimalUpperBound__Group__1 : rule__DecimalUpperBound__Group__1__Impl ;
    public final void rule__DecimalUpperBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22024:1: ( rule__DecimalUpperBound__Group__1__Impl )
            // InternalFiacre.g:22025:2: rule__DecimalUpperBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalUpperBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__Group__1"


    // $ANTLR start "rule__DecimalUpperBound__Group__1__Impl"
    // InternalFiacre.g:22031:1: rule__DecimalUpperBound__Group__1__Impl : ( ( rule__DecimalUpperBound__Alternatives_1 ) ) ;
    public final void rule__DecimalUpperBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22035:1: ( ( ( rule__DecimalUpperBound__Alternatives_1 ) ) )
            // InternalFiacre.g:22036:1: ( ( rule__DecimalUpperBound__Alternatives_1 ) )
            {
            // InternalFiacre.g:22036:1: ( ( rule__DecimalUpperBound__Alternatives_1 ) )
            // InternalFiacre.g:22037:2: ( rule__DecimalUpperBound__Alternatives_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:22038:2: ( rule__DecimalUpperBound__Alternatives_1 )
            // InternalFiacre.g:22038:3: rule__DecimalUpperBound__Alternatives_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DecimalUpperBound__Alternatives_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__Group__1__Impl"


    // $ANTLR start "rule__VariableLowerBound__Group__0"
    // InternalFiacre.g:22047:1: rule__VariableLowerBound__Group__0 : rule__VariableLowerBound__Group__0__Impl rule__VariableLowerBound__Group__1 ;
    public final void rule__VariableLowerBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22051:1: ( rule__VariableLowerBound__Group__0__Impl rule__VariableLowerBound__Group__1 )
            // InternalFiacre.g:22052:2: rule__VariableLowerBound__Group__0__Impl rule__VariableLowerBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__VariableLowerBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableLowerBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__Group__0"


    // $ANTLR start "rule__VariableLowerBound__Group__0__Impl"
    // InternalFiacre.g:22059:1: rule__VariableLowerBound__Group__0__Impl : ( ( rule__VariableLowerBound__Alternatives_0 ) ) ;
    public final void rule__VariableLowerBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22063:1: ( ( ( rule__VariableLowerBound__Alternatives_0 ) ) )
            // InternalFiacre.g:22064:1: ( ( rule__VariableLowerBound__Alternatives_0 ) )
            {
            // InternalFiacre.g:22064:1: ( ( rule__VariableLowerBound__Alternatives_0 ) )
            // InternalFiacre.g:22065:2: ( rule__VariableLowerBound__Alternatives_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getAlternatives_0()); 
            }
            // InternalFiacre.g:22066:2: ( rule__VariableLowerBound__Alternatives_0 )
            // InternalFiacre.g:22066:3: rule__VariableLowerBound__Alternatives_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableLowerBound__Alternatives_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getAlternatives_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__Group__0__Impl"


    // $ANTLR start "rule__VariableLowerBound__Group__1"
    // InternalFiacre.g:22074:1: rule__VariableLowerBound__Group__1 : rule__VariableLowerBound__Group__1__Impl ;
    public final void rule__VariableLowerBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22078:1: ( rule__VariableLowerBound__Group__1__Impl )
            // InternalFiacre.g:22079:2: rule__VariableLowerBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableLowerBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__Group__1"


    // $ANTLR start "rule__VariableLowerBound__Group__1__Impl"
    // InternalFiacre.g:22085:1: rule__VariableLowerBound__Group__1__Impl : ( ( rule__VariableLowerBound__VariableAssignment_1 ) ) ;
    public final void rule__VariableLowerBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22089:1: ( ( ( rule__VariableLowerBound__VariableAssignment_1 ) ) )
            // InternalFiacre.g:22090:1: ( ( rule__VariableLowerBound__VariableAssignment_1 ) )
            {
            // InternalFiacre.g:22090:1: ( ( rule__VariableLowerBound__VariableAssignment_1 ) )
            // InternalFiacre.g:22091:2: ( rule__VariableLowerBound__VariableAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getVariableAssignment_1()); 
            }
            // InternalFiacre.g:22092:2: ( rule__VariableLowerBound__VariableAssignment_1 )
            // InternalFiacre.g:22092:3: rule__VariableLowerBound__VariableAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableLowerBound__VariableAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getVariableAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__Group__1__Impl"


    // $ANTLR start "rule__VariableUpperBound__Group__0"
    // InternalFiacre.g:22101:1: rule__VariableUpperBound__Group__0 : rule__VariableUpperBound__Group__0__Impl rule__VariableUpperBound__Group__1 ;
    public final void rule__VariableUpperBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22105:1: ( rule__VariableUpperBound__Group__0__Impl rule__VariableUpperBound__Group__1 )
            // InternalFiacre.g:22106:2: rule__VariableUpperBound__Group__0__Impl rule__VariableUpperBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__VariableUpperBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableUpperBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__Group__0"


    // $ANTLR start "rule__VariableUpperBound__Group__0__Impl"
    // InternalFiacre.g:22113:1: rule__VariableUpperBound__Group__0__Impl : ( ( rule__VariableUpperBound__VariableAssignment_0 ) ) ;
    public final void rule__VariableUpperBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22117:1: ( ( ( rule__VariableUpperBound__VariableAssignment_0 ) ) )
            // InternalFiacre.g:22118:1: ( ( rule__VariableUpperBound__VariableAssignment_0 ) )
            {
            // InternalFiacre.g:22118:1: ( ( rule__VariableUpperBound__VariableAssignment_0 ) )
            // InternalFiacre.g:22119:2: ( rule__VariableUpperBound__VariableAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getVariableAssignment_0()); 
            }
            // InternalFiacre.g:22120:2: ( rule__VariableUpperBound__VariableAssignment_0 )
            // InternalFiacre.g:22120:3: rule__VariableUpperBound__VariableAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableUpperBound__VariableAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getVariableAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__Group__0__Impl"


    // $ANTLR start "rule__VariableUpperBound__Group__1"
    // InternalFiacre.g:22128:1: rule__VariableUpperBound__Group__1 : rule__VariableUpperBound__Group__1__Impl ;
    public final void rule__VariableUpperBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22132:1: ( rule__VariableUpperBound__Group__1__Impl )
            // InternalFiacre.g:22133:2: rule__VariableUpperBound__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableUpperBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__Group__1"


    // $ANTLR start "rule__VariableUpperBound__Group__1__Impl"
    // InternalFiacre.g:22139:1: rule__VariableUpperBound__Group__1__Impl : ( ( rule__VariableUpperBound__Alternatives_1 ) ) ;
    public final void rule__VariableUpperBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22143:1: ( ( ( rule__VariableUpperBound__Alternatives_1 ) ) )
            // InternalFiacre.g:22144:1: ( ( rule__VariableUpperBound__Alternatives_1 ) )
            {
            // InternalFiacre.g:22144:1: ( ( rule__VariableUpperBound__Alternatives_1 ) )
            // InternalFiacre.g:22145:2: ( rule__VariableUpperBound__Alternatives_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:22146:2: ( rule__VariableUpperBound__Alternatives_1 )
            // InternalFiacre.g:22146:3: rule__VariableUpperBound__Alternatives_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__VariableUpperBound__Alternatives_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__Group__1__Impl"


    // $ANTLR start "rule__InfiniteUpperBound__Group__0"
    // InternalFiacre.g:22155:1: rule__InfiniteUpperBound__Group__0 : rule__InfiniteUpperBound__Group__0__Impl rule__InfiniteUpperBound__Group__1 ;
    public final void rule__InfiniteUpperBound__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22159:1: ( rule__InfiniteUpperBound__Group__0__Impl rule__InfiniteUpperBound__Group__1 )
            // InternalFiacre.g:22160:2: rule__InfiniteUpperBound__Group__0__Impl rule__InfiniteUpperBound__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__InfiniteUpperBound__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfiniteUpperBound__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__0"


    // $ANTLR start "rule__InfiniteUpperBound__Group__0__Impl"
    // InternalFiacre.g:22167:1: rule__InfiniteUpperBound__Group__0__Impl : ( () ) ;
    public final void rule__InfiniteUpperBound__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22171:1: ( ( () ) )
            // InternalFiacre.g:22172:1: ( () )
            {
            // InternalFiacre.g:22172:1: ( () )
            // InternalFiacre.g:22173:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfiniteUpperBoundAccess().getInfiniteUpperBoundAction_0()); 
            }
            // InternalFiacre.g:22174:2: ()
            // InternalFiacre.g:22174:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfiniteUpperBoundAccess().getInfiniteUpperBoundAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__0__Impl"


    // $ANTLR start "rule__InfiniteUpperBound__Group__1"
    // InternalFiacre.g:22182:1: rule__InfiniteUpperBound__Group__1 : rule__InfiniteUpperBound__Group__1__Impl rule__InfiniteUpperBound__Group__2 ;
    public final void rule__InfiniteUpperBound__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22186:1: ( rule__InfiniteUpperBound__Group__1__Impl rule__InfiniteUpperBound__Group__2 )
            // InternalFiacre.g:22187:2: rule__InfiniteUpperBound__Group__1__Impl rule__InfiniteUpperBound__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_50);
            rule__InfiniteUpperBound__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfiniteUpperBound__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__1"


    // $ANTLR start "rule__InfiniteUpperBound__Group__1__Impl"
    // InternalFiacre.g:22194:1: rule__InfiniteUpperBound__Group__1__Impl : ( '...' ) ;
    public final void rule__InfiniteUpperBound__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22198:1: ( ( '...' ) )
            // InternalFiacre.g:22199:1: ( '...' )
            {
            // InternalFiacre.g:22199:1: ( '...' )
            // InternalFiacre.g:22200:2: '...'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfiniteUpperBoundAccess().getFullStopFullStopFullStopKeyword_1()); 
            }
            match(input,108,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfiniteUpperBoundAccess().getFullStopFullStopFullStopKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__1__Impl"


    // $ANTLR start "rule__InfiniteUpperBound__Group__2"
    // InternalFiacre.g:22209:1: rule__InfiniteUpperBound__Group__2 : rule__InfiniteUpperBound__Group__2__Impl ;
    public final void rule__InfiniteUpperBound__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22213:1: ( rule__InfiniteUpperBound__Group__2__Impl )
            // InternalFiacre.g:22214:2: rule__InfiniteUpperBound__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfiniteUpperBound__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__2"


    // $ANTLR start "rule__InfiniteUpperBound__Group__2__Impl"
    // InternalFiacre.g:22220:1: rule__InfiniteUpperBound__Group__2__Impl : ( '[' ) ;
    public final void rule__InfiniteUpperBound__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22224:1: ( ( '[' ) )
            // InternalFiacre.g:22225:1: ( '[' )
            {
            // InternalFiacre.g:22225:1: ( '[' )
            // InternalFiacre.g:22226:2: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfiniteUpperBoundAccess().getLeftSquareBracketKeyword_2()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfiniteUpperBoundAccess().getLeftSquareBracketKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfiniteUpperBound__Group__2__Impl"


    // $ANTLR start "rule__Requirement__Group__0"
    // InternalFiacre.g:22236:1: rule__Requirement__Group__0 : rule__Requirement__Group__0__Impl rule__Requirement__Group__1 ;
    public final void rule__Requirement__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22240:1: ( rule__Requirement__Group__0__Impl rule__Requirement__Group__1 )
            // InternalFiacre.g:22241:2: rule__Requirement__Group__0__Impl rule__Requirement__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__Requirement__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__0"


    // $ANTLR start "rule__Requirement__Group__0__Impl"
    // InternalFiacre.g:22248:1: rule__Requirement__Group__0__Impl : ( 'assert' ) ;
    public final void rule__Requirement__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22252:1: ( ( 'assert' ) )
            // InternalFiacre.g:22253:1: ( 'assert' )
            {
            // InternalFiacre.g:22253:1: ( 'assert' )
            // InternalFiacre.g:22254:2: 'assert'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getAssertKeyword_0()); 
            }
            match(input,109,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getAssertKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__0__Impl"


    // $ANTLR start "rule__Requirement__Group__1"
    // InternalFiacre.g:22263:1: rule__Requirement__Group__1 : rule__Requirement__Group__1__Impl rule__Requirement__Group__2 ;
    public final void rule__Requirement__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22267:1: ( rule__Requirement__Group__1__Impl rule__Requirement__Group__2 )
            // InternalFiacre.g:22268:2: rule__Requirement__Group__1__Impl rule__Requirement__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_129);
            rule__Requirement__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__1"


    // $ANTLR start "rule__Requirement__Group__1__Impl"
    // InternalFiacre.g:22275:1: rule__Requirement__Group__1__Impl : ( ( rule__Requirement__PropertyAssignment_1 ) ) ;
    public final void rule__Requirement__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22279:1: ( ( ( rule__Requirement__PropertyAssignment_1 ) ) )
            // InternalFiacre.g:22280:1: ( ( rule__Requirement__PropertyAssignment_1 ) )
            {
            // InternalFiacre.g:22280:1: ( ( rule__Requirement__PropertyAssignment_1 ) )
            // InternalFiacre.g:22281:2: ( rule__Requirement__PropertyAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getPropertyAssignment_1()); 
            }
            // InternalFiacre.g:22282:2: ( rule__Requirement__PropertyAssignment_1 )
            // InternalFiacre.g:22282:3: rule__Requirement__PropertyAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__PropertyAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getPropertyAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__1__Impl"


    // $ANTLR start "rule__Requirement__Group__2"
    // InternalFiacre.g:22290:1: rule__Requirement__Group__2 : rule__Requirement__Group__2__Impl rule__Requirement__Group__3 ;
    public final void rule__Requirement__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22294:1: ( rule__Requirement__Group__2__Impl rule__Requirement__Group__3 )
            // InternalFiacre.g:22295:2: rule__Requirement__Group__2__Impl rule__Requirement__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_129);
            rule__Requirement__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__2"


    // $ANTLR start "rule__Requirement__Group__2__Impl"
    // InternalFiacre.g:22302:1: rule__Requirement__Group__2__Impl : ( ( rule__Requirement__Group_2__0 )? ) ;
    public final void rule__Requirement__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22306:1: ( ( ( rule__Requirement__Group_2__0 )? ) )
            // InternalFiacre.g:22307:1: ( ( rule__Requirement__Group_2__0 )? )
            {
            // InternalFiacre.g:22307:1: ( ( rule__Requirement__Group_2__0 )? )
            // InternalFiacre.g:22308:2: ( rule__Requirement__Group_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getGroup_2()); 
            }
            // InternalFiacre.g:22309:2: ( rule__Requirement__Group_2__0 )?
            int alt175=2;
            int LA175_0 = input.LA(1);

            if ( (LA175_0==110) ) {
                alt175=1;
            }
            switch (alt175) {
                case 1 :
                    // InternalFiacre.g:22309:3: rule__Requirement__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Requirement__Group_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getGroup_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__2__Impl"


    // $ANTLR start "rule__Requirement__Group__3"
    // InternalFiacre.g:22317:1: rule__Requirement__Group__3 : rule__Requirement__Group__3__Impl ;
    public final void rule__Requirement__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22321:1: ( rule__Requirement__Group__3__Impl )
            // InternalFiacre.g:22322:2: rule__Requirement__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__3"


    // $ANTLR start "rule__Requirement__Group__3__Impl"
    // InternalFiacre.g:22328:1: rule__Requirement__Group__3__Impl : ( ( rule__Requirement__Group_3__0 )? ) ;
    public final void rule__Requirement__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22332:1: ( ( ( rule__Requirement__Group_3__0 )? ) )
            // InternalFiacre.g:22333:1: ( ( rule__Requirement__Group_3__0 )? )
            {
            // InternalFiacre.g:22333:1: ( ( rule__Requirement__Group_3__0 )? )
            // InternalFiacre.g:22334:2: ( rule__Requirement__Group_3__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getGroup_3()); 
            }
            // InternalFiacre.g:22335:2: ( rule__Requirement__Group_3__0 )?
            int alt176=2;
            int LA176_0 = input.LA(1);

            if ( (LA176_0==111) ) {
                alt176=1;
            }
            switch (alt176) {
                case 1 :
                    // InternalFiacre.g:22335:3: rule__Requirement__Group_3__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__Requirement__Group_3__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getGroup_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group__3__Impl"


    // $ANTLR start "rule__Requirement__Group_2__0"
    // InternalFiacre.g:22344:1: rule__Requirement__Group_2__0 : rule__Requirement__Group_2__0__Impl rule__Requirement__Group_2__1 ;
    public final void rule__Requirement__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22348:1: ( rule__Requirement__Group_2__0__Impl rule__Requirement__Group_2__1 )
            // InternalFiacre.g:22349:2: rule__Requirement__Group_2__0__Impl rule__Requirement__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_12);
            rule__Requirement__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_2__0"


    // $ANTLR start "rule__Requirement__Group_2__0__Impl"
    // InternalFiacre.g:22356:1: rule__Requirement__Group_2__0__Impl : ( '-true' ) ;
    public final void rule__Requirement__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22360:1: ( ( '-true' ) )
            // InternalFiacre.g:22361:1: ( '-true' )
            {
            // InternalFiacre.g:22361:1: ( '-true' )
            // InternalFiacre.g:22362:2: '-true'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getTrueKeyword_2_0()); 
            }
            match(input,110,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getTrueKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_2__0__Impl"


    // $ANTLR start "rule__Requirement__Group_2__1"
    // InternalFiacre.g:22371:1: rule__Requirement__Group_2__1 : rule__Requirement__Group_2__1__Impl ;
    public final void rule__Requirement__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22375:1: ( rule__Requirement__Group_2__1__Impl )
            // InternalFiacre.g:22376:2: rule__Requirement__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_2__1"


    // $ANTLR start "rule__Requirement__Group_2__1__Impl"
    // InternalFiacre.g:22382:1: rule__Requirement__Group_2__1__Impl : ( ( rule__Requirement__PositiveAssignment_2_1 ) ) ;
    public final void rule__Requirement__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22386:1: ( ( ( rule__Requirement__PositiveAssignment_2_1 ) ) )
            // InternalFiacre.g:22387:1: ( ( rule__Requirement__PositiveAssignment_2_1 ) )
            {
            // InternalFiacre.g:22387:1: ( ( rule__Requirement__PositiveAssignment_2_1 ) )
            // InternalFiacre.g:22388:2: ( rule__Requirement__PositiveAssignment_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getPositiveAssignment_2_1()); 
            }
            // InternalFiacre.g:22389:2: ( rule__Requirement__PositiveAssignment_2_1 )
            // InternalFiacre.g:22389:3: rule__Requirement__PositiveAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__PositiveAssignment_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getPositiveAssignment_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_2__1__Impl"


    // $ANTLR start "rule__Requirement__Group_3__0"
    // InternalFiacre.g:22398:1: rule__Requirement__Group_3__0 : rule__Requirement__Group_3__0__Impl rule__Requirement__Group_3__1 ;
    public final void rule__Requirement__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22402:1: ( rule__Requirement__Group_3__0__Impl rule__Requirement__Group_3__1 )
            // InternalFiacre.g:22403:2: rule__Requirement__Group_3__0__Impl rule__Requirement__Group_3__1
            {
            pushFollow(FollowSets000.FOLLOW_12);
            rule__Requirement__Group_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_3__0"


    // $ANTLR start "rule__Requirement__Group_3__0__Impl"
    // InternalFiacre.g:22410:1: rule__Requirement__Group_3__0__Impl : ( '-false' ) ;
    public final void rule__Requirement__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22414:1: ( ( '-false' ) )
            // InternalFiacre.g:22415:1: ( '-false' )
            {
            // InternalFiacre.g:22415:1: ( '-false' )
            // InternalFiacre.g:22416:2: '-false'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getFalseKeyword_3_0()); 
            }
            match(input,111,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getFalseKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_3__0__Impl"


    // $ANTLR start "rule__Requirement__Group_3__1"
    // InternalFiacre.g:22425:1: rule__Requirement__Group_3__1 : rule__Requirement__Group_3__1__Impl ;
    public final void rule__Requirement__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22429:1: ( rule__Requirement__Group_3__1__Impl )
            // InternalFiacre.g:22430:2: rule__Requirement__Group_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__Group_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_3__1"


    // $ANTLR start "rule__Requirement__Group_3__1__Impl"
    // InternalFiacre.g:22436:1: rule__Requirement__Group_3__1__Impl : ( ( rule__Requirement__NegativeAssignment_3_1 ) ) ;
    public final void rule__Requirement__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22440:1: ( ( ( rule__Requirement__NegativeAssignment_3_1 ) ) )
            // InternalFiacre.g:22441:1: ( ( rule__Requirement__NegativeAssignment_3_1 ) )
            {
            // InternalFiacre.g:22441:1: ( ( rule__Requirement__NegativeAssignment_3_1 ) )
            // InternalFiacre.g:22442:2: ( rule__Requirement__NegativeAssignment_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getNegativeAssignment_3_1()); 
            }
            // InternalFiacre.g:22443:2: ( rule__Requirement__NegativeAssignment_3_1 )
            // InternalFiacre.g:22443:3: rule__Requirement__NegativeAssignment_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Requirement__NegativeAssignment_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getNegativeAssignment_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__Group_3__1__Impl"


    // $ANTLR start "rule__PropertyDeclaration__Group__0"
    // InternalFiacre.g:22452:1: rule__PropertyDeclaration__Group__0 : rule__PropertyDeclaration__Group__0__Impl rule__PropertyDeclaration__Group__1 ;
    public final void rule__PropertyDeclaration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22456:1: ( rule__PropertyDeclaration__Group__0__Impl rule__PropertyDeclaration__Group__1 )
            // InternalFiacre.g:22457:2: rule__PropertyDeclaration__Group__0__Impl rule__PropertyDeclaration__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__PropertyDeclaration__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__0"


    // $ANTLR start "rule__PropertyDeclaration__Group__0__Impl"
    // InternalFiacre.g:22464:1: rule__PropertyDeclaration__Group__0__Impl : ( 'property' ) ;
    public final void rule__PropertyDeclaration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22468:1: ( ( 'property' ) )
            // InternalFiacre.g:22469:1: ( 'property' )
            {
            // InternalFiacre.g:22469:1: ( 'property' )
            // InternalFiacre.g:22470:2: 'property'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getPropertyKeyword_0()); 
            }
            match(input,112,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getPropertyKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__0__Impl"


    // $ANTLR start "rule__PropertyDeclaration__Group__1"
    // InternalFiacre.g:22479:1: rule__PropertyDeclaration__Group__1 : rule__PropertyDeclaration__Group__1__Impl rule__PropertyDeclaration__Group__2 ;
    public final void rule__PropertyDeclaration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22483:1: ( rule__PropertyDeclaration__Group__1__Impl rule__PropertyDeclaration__Group__2 )
            // InternalFiacre.g:22484:2: rule__PropertyDeclaration__Group__1__Impl rule__PropertyDeclaration__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_16);
            rule__PropertyDeclaration__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__1"


    // $ANTLR start "rule__PropertyDeclaration__Group__1__Impl"
    // InternalFiacre.g:22491:1: rule__PropertyDeclaration__Group__1__Impl : ( ( rule__PropertyDeclaration__NameAssignment_1 ) ) ;
    public final void rule__PropertyDeclaration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22495:1: ( ( ( rule__PropertyDeclaration__NameAssignment_1 ) ) )
            // InternalFiacre.g:22496:1: ( ( rule__PropertyDeclaration__NameAssignment_1 ) )
            {
            // InternalFiacre.g:22496:1: ( ( rule__PropertyDeclaration__NameAssignment_1 ) )
            // InternalFiacre.g:22497:2: ( rule__PropertyDeclaration__NameAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getNameAssignment_1()); 
            }
            // InternalFiacre.g:22498:2: ( rule__PropertyDeclaration__NameAssignment_1 )
            // InternalFiacre.g:22498:3: rule__PropertyDeclaration__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__NameAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getNameAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__1__Impl"


    // $ANTLR start "rule__PropertyDeclaration__Group__2"
    // InternalFiacre.g:22506:1: rule__PropertyDeclaration__Group__2 : rule__PropertyDeclaration__Group__2__Impl rule__PropertyDeclaration__Group__3 ;
    public final void rule__PropertyDeclaration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22510:1: ( rule__PropertyDeclaration__Group__2__Impl rule__PropertyDeclaration__Group__3 )
            // InternalFiacre.g:22511:2: rule__PropertyDeclaration__Group__2__Impl rule__PropertyDeclaration__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__PropertyDeclaration__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__Group__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__2"


    // $ANTLR start "rule__PropertyDeclaration__Group__2__Impl"
    // InternalFiacre.g:22518:1: rule__PropertyDeclaration__Group__2__Impl : ( 'is' ) ;
    public final void rule__PropertyDeclaration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22522:1: ( ( 'is' ) )
            // InternalFiacre.g:22523:1: ( 'is' )
            {
            // InternalFiacre.g:22523:1: ( 'is' )
            // InternalFiacre.g:22524:2: 'is'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getIsKeyword_2()); 
            }
            match(input,21,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getIsKeyword_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__2__Impl"


    // $ANTLR start "rule__PropertyDeclaration__Group__3"
    // InternalFiacre.g:22533:1: rule__PropertyDeclaration__Group__3 : rule__PropertyDeclaration__Group__3__Impl ;
    public final void rule__PropertyDeclaration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22537:1: ( rule__PropertyDeclaration__Group__3__Impl )
            // InternalFiacre.g:22538:2: rule__PropertyDeclaration__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__Group__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__3"


    // $ANTLR start "rule__PropertyDeclaration__Group__3__Impl"
    // InternalFiacre.g:22544:1: rule__PropertyDeclaration__Group__3__Impl : ( ( rule__PropertyDeclaration__PropertyAssignment_3 ) ) ;
    public final void rule__PropertyDeclaration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22548:1: ( ( ( rule__PropertyDeclaration__PropertyAssignment_3 ) ) )
            // InternalFiacre.g:22549:1: ( ( rule__PropertyDeclaration__PropertyAssignment_3 ) )
            {
            // InternalFiacre.g:22549:1: ( ( rule__PropertyDeclaration__PropertyAssignment_3 ) )
            // InternalFiacre.g:22550:2: ( rule__PropertyDeclaration__PropertyAssignment_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getPropertyAssignment_3()); 
            }
            // InternalFiacre.g:22551:2: ( rule__PropertyDeclaration__PropertyAssignment_3 )
            // InternalFiacre.g:22551:3: rule__PropertyDeclaration__PropertyAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDeclaration__PropertyAssignment_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getPropertyAssignment_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__Group__3__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__0"
    // InternalFiacre.g:22560:1: rule__QuantifiedProperty__Group_0__0 : rule__QuantifiedProperty__Group_0__0__Impl rule__QuantifiedProperty__Group_0__1 ;
    public final void rule__QuantifiedProperty__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22564:1: ( rule__QuantifiedProperty__Group_0__0__Impl rule__QuantifiedProperty__Group_0__1 )
            // InternalFiacre.g:22565:2: rule__QuantifiedProperty__Group_0__0__Impl rule__QuantifiedProperty__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__QuantifiedProperty__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__0"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__0__Impl"
    // InternalFiacre.g:22572:1: rule__QuantifiedProperty__Group_0__0__Impl : ( ( rule__QuantifiedProperty__Alternatives_0_0 ) ) ;
    public final void rule__QuantifiedProperty__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22576:1: ( ( ( rule__QuantifiedProperty__Alternatives_0_0 ) ) )
            // InternalFiacre.g:22577:1: ( ( rule__QuantifiedProperty__Alternatives_0_0 ) )
            {
            // InternalFiacre.g:22577:1: ( ( rule__QuantifiedProperty__Alternatives_0_0 ) )
            // InternalFiacre.g:22578:2: ( rule__QuantifiedProperty__Alternatives_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getAlternatives_0_0()); 
            }
            // InternalFiacre.g:22579:2: ( rule__QuantifiedProperty__Alternatives_0_0 )
            // InternalFiacre.g:22579:3: rule__QuantifiedProperty__Alternatives_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Alternatives_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getAlternatives_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__0__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__1"
    // InternalFiacre.g:22587:1: rule__QuantifiedProperty__Group_0__1 : rule__QuantifiedProperty__Group_0__1__Impl rule__QuantifiedProperty__Group_0__2 ;
    public final void rule__QuantifiedProperty__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22591:1: ( rule__QuantifiedProperty__Group_0__1__Impl rule__QuantifiedProperty__Group_0__2 )
            // InternalFiacre.g:22592:2: rule__QuantifiedProperty__Group_0__1__Impl rule__QuantifiedProperty__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_46);
            rule__QuantifiedProperty__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__1"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__1__Impl"
    // InternalFiacre.g:22599:1: rule__QuantifiedProperty__Group_0__1__Impl : ( ( rule__QuantifiedProperty__VariableAssignment_0_1 ) ) ;
    public final void rule__QuantifiedProperty__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22603:1: ( ( ( rule__QuantifiedProperty__VariableAssignment_0_1 ) ) )
            // InternalFiacre.g:22604:1: ( ( rule__QuantifiedProperty__VariableAssignment_0_1 ) )
            {
            // InternalFiacre.g:22604:1: ( ( rule__QuantifiedProperty__VariableAssignment_0_1 ) )
            // InternalFiacre.g:22605:2: ( rule__QuantifiedProperty__VariableAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getVariableAssignment_0_1()); 
            }
            // InternalFiacre.g:22606:2: ( rule__QuantifiedProperty__VariableAssignment_0_1 )
            // InternalFiacre.g:22606:3: rule__QuantifiedProperty__VariableAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__VariableAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getVariableAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__1__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__2"
    // InternalFiacre.g:22614:1: rule__QuantifiedProperty__Group_0__2 : rule__QuantifiedProperty__Group_0__2__Impl rule__QuantifiedProperty__Group_0__3 ;
    public final void rule__QuantifiedProperty__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22618:1: ( rule__QuantifiedProperty__Group_0__2__Impl rule__QuantifiedProperty__Group_0__3 )
            // InternalFiacre.g:22619:2: rule__QuantifiedProperty__Group_0__2__Impl rule__QuantifiedProperty__Group_0__3
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__QuantifiedProperty__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__2"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__2__Impl"
    // InternalFiacre.g:22626:1: rule__QuantifiedProperty__Group_0__2__Impl : ( 'in' ) ;
    public final void rule__QuantifiedProperty__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22630:1: ( ( 'in' ) )
            // InternalFiacre.g:22631:1: ( 'in' )
            {
            // InternalFiacre.g:22631:1: ( 'in' )
            // InternalFiacre.g:22632:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getInKeyword_0_2()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getInKeyword_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__2__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__3"
    // InternalFiacre.g:22641:1: rule__QuantifiedProperty__Group_0__3 : rule__QuantifiedProperty__Group_0__3__Impl rule__QuantifiedProperty__Group_0__4 ;
    public final void rule__QuantifiedProperty__Group_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22645:1: ( rule__QuantifiedProperty__Group_0__3__Impl rule__QuantifiedProperty__Group_0__4 )
            // InternalFiacre.g:22646:2: rule__QuantifiedProperty__Group_0__3__Impl rule__QuantifiedProperty__Group_0__4
            {
            pushFollow(FollowSets000.FOLLOW_131);
            rule__QuantifiedProperty__Group_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__3"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__3__Impl"
    // InternalFiacre.g:22653:1: rule__QuantifiedProperty__Group_0__3__Impl : ( ( rule__QuantifiedProperty__TypeAssignment_0_3 ) ) ;
    public final void rule__QuantifiedProperty__Group_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22657:1: ( ( ( rule__QuantifiedProperty__TypeAssignment_0_3 ) ) )
            // InternalFiacre.g:22658:1: ( ( rule__QuantifiedProperty__TypeAssignment_0_3 ) )
            {
            // InternalFiacre.g:22658:1: ( ( rule__QuantifiedProperty__TypeAssignment_0_3 ) )
            // InternalFiacre.g:22659:2: ( rule__QuantifiedProperty__TypeAssignment_0_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getTypeAssignment_0_3()); 
            }
            // InternalFiacre.g:22660:2: ( rule__QuantifiedProperty__TypeAssignment_0_3 )
            // InternalFiacre.g:22660:3: rule__QuantifiedProperty__TypeAssignment_0_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__TypeAssignment_0_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getTypeAssignment_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__3__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__4"
    // InternalFiacre.g:22668:1: rule__QuantifiedProperty__Group_0__4 : rule__QuantifiedProperty__Group_0__4__Impl rule__QuantifiedProperty__Group_0__5 ;
    public final void rule__QuantifiedProperty__Group_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22672:1: ( rule__QuantifiedProperty__Group_0__4__Impl rule__QuantifiedProperty__Group_0__5 )
            // InternalFiacre.g:22673:2: rule__QuantifiedProperty__Group_0__4__Impl rule__QuantifiedProperty__Group_0__5
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__QuantifiedProperty__Group_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__4"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__4__Impl"
    // InternalFiacre.g:22680:1: rule__QuantifiedProperty__Group_0__4__Impl : ( '.' ) ;
    public final void rule__QuantifiedProperty__Group_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22684:1: ( ( '.' ) )
            // InternalFiacre.g:22685:1: ( '.' )
            {
            // InternalFiacre.g:22685:1: ( '.' )
            // InternalFiacre.g:22686:2: '.'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getFullStopKeyword_0_4()); 
            }
            match(input,61,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getFullStopKeyword_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__4__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__5"
    // InternalFiacre.g:22695:1: rule__QuantifiedProperty__Group_0__5 : rule__QuantifiedProperty__Group_0__5__Impl ;
    public final void rule__QuantifiedProperty__Group_0__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22699:1: ( rule__QuantifiedProperty__Group_0__5__Impl )
            // InternalFiacre.g:22700:2: rule__QuantifiedProperty__Group_0__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__5"


    // $ANTLR start "rule__QuantifiedProperty__Group_0__5__Impl"
    // InternalFiacre.g:22706:1: rule__QuantifiedProperty__Group_0__5__Impl : ( ( rule__QuantifiedProperty__ChildAssignment_0_5 ) ) ;
    public final void rule__QuantifiedProperty__Group_0__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22710:1: ( ( ( rule__QuantifiedProperty__ChildAssignment_0_5 ) ) )
            // InternalFiacre.g:22711:1: ( ( rule__QuantifiedProperty__ChildAssignment_0_5 ) )
            {
            // InternalFiacre.g:22711:1: ( ( rule__QuantifiedProperty__ChildAssignment_0_5 ) )
            // InternalFiacre.g:22712:2: ( rule__QuantifiedProperty__ChildAssignment_0_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getChildAssignment_0_5()); 
            }
            // InternalFiacre.g:22713:2: ( rule__QuantifiedProperty__ChildAssignment_0_5 )
            // InternalFiacre.g:22713:3: rule__QuantifiedProperty__ChildAssignment_0_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__ChildAssignment_0_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getChildAssignment_0_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0__5__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_0__0"
    // InternalFiacre.g:22722:1: rule__QuantifiedProperty__Group_0_0_0__0 : rule__QuantifiedProperty__Group_0_0_0__0__Impl rule__QuantifiedProperty__Group_0_0_0__1 ;
    public final void rule__QuantifiedProperty__Group_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22726:1: ( rule__QuantifiedProperty__Group_0_0_0__0__Impl rule__QuantifiedProperty__Group_0_0_0__1 )
            // InternalFiacre.g:22727:2: rule__QuantifiedProperty__Group_0_0_0__0__Impl rule__QuantifiedProperty__Group_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_90);
            rule__QuantifiedProperty__Group_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_0__0"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_0__0__Impl"
    // InternalFiacre.g:22734:1: rule__QuantifiedProperty__Group_0_0_0__0__Impl : ( () ) ;
    public final void rule__QuantifiedProperty__Group_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22738:1: ( ( () ) )
            // InternalFiacre.g:22739:1: ( () )
            {
            // InternalFiacre.g:22739:1: ( () )
            // InternalFiacre.g:22740:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getAllPropertyAction_0_0_0_0()); 
            }
            // InternalFiacre.g:22741:2: ()
            // InternalFiacre.g:22741:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getAllPropertyAction_0_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_0__0__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_0__1"
    // InternalFiacre.g:22749:1: rule__QuantifiedProperty__Group_0_0_0__1 : rule__QuantifiedProperty__Group_0_0_0__1__Impl ;
    public final void rule__QuantifiedProperty__Group_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22753:1: ( rule__QuantifiedProperty__Group_0_0_0__1__Impl )
            // InternalFiacre.g:22754:2: rule__QuantifiedProperty__Group_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_0__1"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_0__1__Impl"
    // InternalFiacre.g:22760:1: rule__QuantifiedProperty__Group_0_0_0__1__Impl : ( 'all' ) ;
    public final void rule__QuantifiedProperty__Group_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22764:1: ( ( 'all' ) )
            // InternalFiacre.g:22765:1: ( 'all' )
            {
            // InternalFiacre.g:22765:1: ( 'all' )
            // InternalFiacre.g:22766:2: 'all'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getAllKeyword_0_0_0_1()); 
            }
            match(input,77,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getAllKeyword_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_0__1__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_1__0"
    // InternalFiacre.g:22776:1: rule__QuantifiedProperty__Group_0_0_1__0 : rule__QuantifiedProperty__Group_0_0_1__0__Impl rule__QuantifiedProperty__Group_0_0_1__1 ;
    public final void rule__QuantifiedProperty__Group_0_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22780:1: ( rule__QuantifiedProperty__Group_0_0_1__0__Impl rule__QuantifiedProperty__Group_0_0_1__1 )
            // InternalFiacre.g:22781:2: rule__QuantifiedProperty__Group_0_0_1__0__Impl rule__QuantifiedProperty__Group_0_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_91);
            rule__QuantifiedProperty__Group_0_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_1__0"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_1__0__Impl"
    // InternalFiacre.g:22788:1: rule__QuantifiedProperty__Group_0_0_1__0__Impl : ( () ) ;
    public final void rule__QuantifiedProperty__Group_0_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22792:1: ( ( () ) )
            // InternalFiacre.g:22793:1: ( () )
            {
            // InternalFiacre.g:22793:1: ( () )
            // InternalFiacre.g:22794:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getExistsPropertyAction_0_0_1_0()); 
            }
            // InternalFiacre.g:22795:2: ()
            // InternalFiacre.g:22795:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getExistsPropertyAction_0_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_1__0__Impl"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_1__1"
    // InternalFiacre.g:22803:1: rule__QuantifiedProperty__Group_0_0_1__1 : rule__QuantifiedProperty__Group_0_0_1__1__Impl ;
    public final void rule__QuantifiedProperty__Group_0_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22807:1: ( rule__QuantifiedProperty__Group_0_0_1__1__Impl )
            // InternalFiacre.g:22808:2: rule__QuantifiedProperty__Group_0_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__QuantifiedProperty__Group_0_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_1__1"


    // $ANTLR start "rule__QuantifiedProperty__Group_0_0_1__1__Impl"
    // InternalFiacre.g:22814:1: rule__QuantifiedProperty__Group_0_0_1__1__Impl : ( 'exists' ) ;
    public final void rule__QuantifiedProperty__Group_0_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22818:1: ( ( 'exists' ) )
            // InternalFiacre.g:22819:1: ( 'exists' )
            {
            // InternalFiacre.g:22819:1: ( 'exists' )
            // InternalFiacre.g:22820:2: 'exists'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getExistsKeyword_0_0_1_1()); 
            }
            match(input,78,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getExistsKeyword_0_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__Group_0_0_1__1__Impl"


    // $ANTLR start "rule__PropertyDisjunction__Group__0"
    // InternalFiacre.g:22830:1: rule__PropertyDisjunction__Group__0 : rule__PropertyDisjunction__Group__0__Impl rule__PropertyDisjunction__Group__1 ;
    public final void rule__PropertyDisjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22834:1: ( rule__PropertyDisjunction__Group__0__Impl rule__PropertyDisjunction__Group__1 )
            // InternalFiacre.g:22835:2: rule__PropertyDisjunction__Group__0__Impl rule__PropertyDisjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__PropertyDisjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group__0"


    // $ANTLR start "rule__PropertyDisjunction__Group__0__Impl"
    // InternalFiacre.g:22842:1: rule__PropertyDisjunction__Group__0__Impl : ( rulePropertyImplication ) ;
    public final void rule__PropertyDisjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22846:1: ( ( rulePropertyImplication ) )
            // InternalFiacre.g:22847:1: ( rulePropertyImplication )
            {
            // InternalFiacre.g:22847:1: ( rulePropertyImplication )
            // InternalFiacre.g:22848:2: rulePropertyImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getPropertyImplicationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getPropertyImplicationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group__0__Impl"


    // $ANTLR start "rule__PropertyDisjunction__Group__1"
    // InternalFiacre.g:22857:1: rule__PropertyDisjunction__Group__1 : rule__PropertyDisjunction__Group__1__Impl ;
    public final void rule__PropertyDisjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22861:1: ( rule__PropertyDisjunction__Group__1__Impl )
            // InternalFiacre.g:22862:2: rule__PropertyDisjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group__1"


    // $ANTLR start "rule__PropertyDisjunction__Group__1__Impl"
    // InternalFiacre.g:22868:1: rule__PropertyDisjunction__Group__1__Impl : ( ( rule__PropertyDisjunction__Group_1__0 )* ) ;
    public final void rule__PropertyDisjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22872:1: ( ( ( rule__PropertyDisjunction__Group_1__0 )* ) )
            // InternalFiacre.g:22873:1: ( ( rule__PropertyDisjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:22873:1: ( ( rule__PropertyDisjunction__Group_1__0 )* )
            // InternalFiacre.g:22874:2: ( rule__PropertyDisjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:22875:2: ( rule__PropertyDisjunction__Group_1__0 )*
            loop177:
            do {
                int alt177=2;
                int LA177_0 = input.LA(1);

                if ( (LA177_0==79) ) {
                    alt177=1;
                }


                switch (alt177) {
            	case 1 :
            	    // InternalFiacre.g:22875:3: rule__PropertyDisjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_94);
            	    rule__PropertyDisjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop177;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group__1__Impl"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__0"
    // InternalFiacre.g:22884:1: rule__PropertyDisjunction__Group_1__0 : rule__PropertyDisjunction__Group_1__0__Impl rule__PropertyDisjunction__Group_1__1 ;
    public final void rule__PropertyDisjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22888:1: ( rule__PropertyDisjunction__Group_1__0__Impl rule__PropertyDisjunction__Group_1__1 )
            // InternalFiacre.g:22889:2: rule__PropertyDisjunction__Group_1__0__Impl rule__PropertyDisjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__PropertyDisjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__0"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__0__Impl"
    // InternalFiacre.g:22896:1: rule__PropertyDisjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__PropertyDisjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22900:1: ( ( () ) )
            // InternalFiacre.g:22901:1: ( () )
            {
            // InternalFiacre.g:22901:1: ( () )
            // InternalFiacre.g:22902:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getPropertyDisjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:22903:2: ()
            // InternalFiacre.g:22903:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getPropertyDisjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__0__Impl"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__1"
    // InternalFiacre.g:22911:1: rule__PropertyDisjunction__Group_1__1 : rule__PropertyDisjunction__Group_1__1__Impl rule__PropertyDisjunction__Group_1__2 ;
    public final void rule__PropertyDisjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22915:1: ( rule__PropertyDisjunction__Group_1__1__Impl rule__PropertyDisjunction__Group_1__2 )
            // InternalFiacre.g:22916:2: rule__PropertyDisjunction__Group_1__1__Impl rule__PropertyDisjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__PropertyDisjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__1"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__1__Impl"
    // InternalFiacre.g:22923:1: rule__PropertyDisjunction__Group_1__1__Impl : ( 'or' ) ;
    public final void rule__PropertyDisjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22927:1: ( ( 'or' ) )
            // InternalFiacre.g:22928:1: ( 'or' )
            {
            // InternalFiacre.g:22928:1: ( 'or' )
            // InternalFiacre.g:22929:2: 'or'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getOrKeyword_1_1()); 
            }
            match(input,79,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getOrKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__1__Impl"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__2"
    // InternalFiacre.g:22938:1: rule__PropertyDisjunction__Group_1__2 : rule__PropertyDisjunction__Group_1__2__Impl ;
    public final void rule__PropertyDisjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22942:1: ( rule__PropertyDisjunction__Group_1__2__Impl )
            // InternalFiacre.g:22943:2: rule__PropertyDisjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__2"


    // $ANTLR start "rule__PropertyDisjunction__Group_1__2__Impl"
    // InternalFiacre.g:22949:1: rule__PropertyDisjunction__Group_1__2__Impl : ( ( rule__PropertyDisjunction__RightAssignment_1_2 ) ) ;
    public final void rule__PropertyDisjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22953:1: ( ( ( rule__PropertyDisjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:22954:1: ( ( rule__PropertyDisjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:22954:1: ( ( rule__PropertyDisjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:22955:2: ( rule__PropertyDisjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:22956:2: ( rule__PropertyDisjunction__RightAssignment_1_2 )
            // InternalFiacre.g:22956:3: rule__PropertyDisjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyDisjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__Group_1__2__Impl"


    // $ANTLR start "rule__PropertyImplication__Group__0"
    // InternalFiacre.g:22965:1: rule__PropertyImplication__Group__0 : rule__PropertyImplication__Group__0__Impl rule__PropertyImplication__Group__1 ;
    public final void rule__PropertyImplication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22969:1: ( rule__PropertyImplication__Group__0__Impl rule__PropertyImplication__Group__1 )
            // InternalFiacre.g:22970:2: rule__PropertyImplication__Group__0__Impl rule__PropertyImplication__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__PropertyImplication__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group__0"


    // $ANTLR start "rule__PropertyImplication__Group__0__Impl"
    // InternalFiacre.g:22977:1: rule__PropertyImplication__Group__0__Impl : ( rulePropertyConjunction ) ;
    public final void rule__PropertyImplication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22981:1: ( ( rulePropertyConjunction ) )
            // InternalFiacre.g:22982:1: ( rulePropertyConjunction )
            {
            // InternalFiacre.g:22982:1: ( rulePropertyConjunction )
            // InternalFiacre.g:22983:2: rulePropertyConjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getPropertyConjunctionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getPropertyConjunctionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group__0__Impl"


    // $ANTLR start "rule__PropertyImplication__Group__1"
    // InternalFiacre.g:22992:1: rule__PropertyImplication__Group__1 : rule__PropertyImplication__Group__1__Impl ;
    public final void rule__PropertyImplication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:22996:1: ( rule__PropertyImplication__Group__1__Impl )
            // InternalFiacre.g:22997:2: rule__PropertyImplication__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group__1"


    // $ANTLR start "rule__PropertyImplication__Group__1__Impl"
    // InternalFiacre.g:23003:1: rule__PropertyImplication__Group__1__Impl : ( ( rule__PropertyImplication__Group_1__0 )? ) ;
    public final void rule__PropertyImplication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23007:1: ( ( ( rule__PropertyImplication__Group_1__0 )? ) )
            // InternalFiacre.g:23008:1: ( ( rule__PropertyImplication__Group_1__0 )? )
            {
            // InternalFiacre.g:23008:1: ( ( rule__PropertyImplication__Group_1__0 )? )
            // InternalFiacre.g:23009:2: ( rule__PropertyImplication__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:23010:2: ( rule__PropertyImplication__Group_1__0 )?
            int alt178=2;
            int LA178_0 = input.LA(1);

            if ( (LA178_0==80) ) {
                alt178=1;
            }
            switch (alt178) {
                case 1 :
                    // InternalFiacre.g:23010:3: rule__PropertyImplication__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PropertyImplication__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group__1__Impl"


    // $ANTLR start "rule__PropertyImplication__Group_1__0"
    // InternalFiacre.g:23019:1: rule__PropertyImplication__Group_1__0 : rule__PropertyImplication__Group_1__0__Impl rule__PropertyImplication__Group_1__1 ;
    public final void rule__PropertyImplication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23023:1: ( rule__PropertyImplication__Group_1__0__Impl rule__PropertyImplication__Group_1__1 )
            // InternalFiacre.g:23024:2: rule__PropertyImplication__Group_1__0__Impl rule__PropertyImplication__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__PropertyImplication__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__0"


    // $ANTLR start "rule__PropertyImplication__Group_1__0__Impl"
    // InternalFiacre.g:23031:1: rule__PropertyImplication__Group_1__0__Impl : ( () ) ;
    public final void rule__PropertyImplication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23035:1: ( ( () ) )
            // InternalFiacre.g:23036:1: ( () )
            {
            // InternalFiacre.g:23036:1: ( () )
            // InternalFiacre.g:23037:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getPropertyImplicationLeftAction_1_0()); 
            }
            // InternalFiacre.g:23038:2: ()
            // InternalFiacre.g:23038:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getPropertyImplicationLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__0__Impl"


    // $ANTLR start "rule__PropertyImplication__Group_1__1"
    // InternalFiacre.g:23046:1: rule__PropertyImplication__Group_1__1 : rule__PropertyImplication__Group_1__1__Impl rule__PropertyImplication__Group_1__2 ;
    public final void rule__PropertyImplication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23050:1: ( rule__PropertyImplication__Group_1__1__Impl rule__PropertyImplication__Group_1__2 )
            // InternalFiacre.g:23051:2: rule__PropertyImplication__Group_1__1__Impl rule__PropertyImplication__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__PropertyImplication__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__1"


    // $ANTLR start "rule__PropertyImplication__Group_1__1__Impl"
    // InternalFiacre.g:23058:1: rule__PropertyImplication__Group_1__1__Impl : ( '=>' ) ;
    public final void rule__PropertyImplication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23062:1: ( ( '=>' ) )
            // InternalFiacre.g:23063:1: ( '=>' )
            {
            // InternalFiacre.g:23063:1: ( '=>' )
            // InternalFiacre.g:23064:2: '=>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }
            match(input,80,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__1__Impl"


    // $ANTLR start "rule__PropertyImplication__Group_1__2"
    // InternalFiacre.g:23073:1: rule__PropertyImplication__Group_1__2 : rule__PropertyImplication__Group_1__2__Impl ;
    public final void rule__PropertyImplication__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23077:1: ( rule__PropertyImplication__Group_1__2__Impl )
            // InternalFiacre.g:23078:2: rule__PropertyImplication__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__2"


    // $ANTLR start "rule__PropertyImplication__Group_1__2__Impl"
    // InternalFiacre.g:23084:1: rule__PropertyImplication__Group_1__2__Impl : ( ( rule__PropertyImplication__RightAssignment_1_2 ) ) ;
    public final void rule__PropertyImplication__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23088:1: ( ( ( rule__PropertyImplication__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:23089:1: ( ( rule__PropertyImplication__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:23089:1: ( ( rule__PropertyImplication__RightAssignment_1_2 ) )
            // InternalFiacre.g:23090:2: ( rule__PropertyImplication__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:23091:2: ( rule__PropertyImplication__RightAssignment_1_2 )
            // InternalFiacre.g:23091:3: rule__PropertyImplication__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyImplication__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__Group_1__2__Impl"


    // $ANTLR start "rule__PropertyConjunction__Group__0"
    // InternalFiacre.g:23100:1: rule__PropertyConjunction__Group__0 : rule__PropertyConjunction__Group__0__Impl rule__PropertyConjunction__Group__1 ;
    public final void rule__PropertyConjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23104:1: ( rule__PropertyConjunction__Group__0__Impl rule__PropertyConjunction__Group__1 )
            // InternalFiacre.g:23105:2: rule__PropertyConjunction__Group__0__Impl rule__PropertyConjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__PropertyConjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group__0"


    // $ANTLR start "rule__PropertyConjunction__Group__0__Impl"
    // InternalFiacre.g:23112:1: rule__PropertyConjunction__Group__0__Impl : ( rulePropertyNegation ) ;
    public final void rule__PropertyConjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23116:1: ( ( rulePropertyNegation ) )
            // InternalFiacre.g:23117:1: ( rulePropertyNegation )
            {
            // InternalFiacre.g:23117:1: ( rulePropertyNegation )
            // InternalFiacre.g:23118:2: rulePropertyNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getPropertyNegationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getPropertyNegationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group__0__Impl"


    // $ANTLR start "rule__PropertyConjunction__Group__1"
    // InternalFiacre.g:23127:1: rule__PropertyConjunction__Group__1 : rule__PropertyConjunction__Group__1__Impl ;
    public final void rule__PropertyConjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23131:1: ( rule__PropertyConjunction__Group__1__Impl )
            // InternalFiacre.g:23132:2: rule__PropertyConjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group__1"


    // $ANTLR start "rule__PropertyConjunction__Group__1__Impl"
    // InternalFiacre.g:23138:1: rule__PropertyConjunction__Group__1__Impl : ( ( rule__PropertyConjunction__Group_1__0 )* ) ;
    public final void rule__PropertyConjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23142:1: ( ( ( rule__PropertyConjunction__Group_1__0 )* ) )
            // InternalFiacre.g:23143:1: ( ( rule__PropertyConjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:23143:1: ( ( rule__PropertyConjunction__Group_1__0 )* )
            // InternalFiacre.g:23144:2: ( rule__PropertyConjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:23145:2: ( rule__PropertyConjunction__Group_1__0 )*
            loop179:
            do {
                int alt179=2;
                int LA179_0 = input.LA(1);

                if ( (LA179_0==81) ) {
                    alt179=1;
                }


                switch (alt179) {
            	case 1 :
            	    // InternalFiacre.g:23145:3: rule__PropertyConjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_97);
            	    rule__PropertyConjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop179;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group__1__Impl"


    // $ANTLR start "rule__PropertyConjunction__Group_1__0"
    // InternalFiacre.g:23154:1: rule__PropertyConjunction__Group_1__0 : rule__PropertyConjunction__Group_1__0__Impl rule__PropertyConjunction__Group_1__1 ;
    public final void rule__PropertyConjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23158:1: ( rule__PropertyConjunction__Group_1__0__Impl rule__PropertyConjunction__Group_1__1 )
            // InternalFiacre.g:23159:2: rule__PropertyConjunction__Group_1__0__Impl rule__PropertyConjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__PropertyConjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__0"


    // $ANTLR start "rule__PropertyConjunction__Group_1__0__Impl"
    // InternalFiacre.g:23166:1: rule__PropertyConjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__PropertyConjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23170:1: ( ( () ) )
            // InternalFiacre.g:23171:1: ( () )
            {
            // InternalFiacre.g:23171:1: ( () )
            // InternalFiacre.g:23172:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getPropertyConjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:23173:2: ()
            // InternalFiacre.g:23173:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getPropertyConjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__0__Impl"


    // $ANTLR start "rule__PropertyConjunction__Group_1__1"
    // InternalFiacre.g:23181:1: rule__PropertyConjunction__Group_1__1 : rule__PropertyConjunction__Group_1__1__Impl rule__PropertyConjunction__Group_1__2 ;
    public final void rule__PropertyConjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23185:1: ( rule__PropertyConjunction__Group_1__1__Impl rule__PropertyConjunction__Group_1__2 )
            // InternalFiacre.g:23186:2: rule__PropertyConjunction__Group_1__1__Impl rule__PropertyConjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__PropertyConjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__1"


    // $ANTLR start "rule__PropertyConjunction__Group_1__1__Impl"
    // InternalFiacre.g:23193:1: rule__PropertyConjunction__Group_1__1__Impl : ( 'and' ) ;
    public final void rule__PropertyConjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23197:1: ( ( 'and' ) )
            // InternalFiacre.g:23198:1: ( 'and' )
            {
            // InternalFiacre.g:23198:1: ( 'and' )
            // InternalFiacre.g:23199:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getAndKeyword_1_1()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getAndKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__1__Impl"


    // $ANTLR start "rule__PropertyConjunction__Group_1__2"
    // InternalFiacre.g:23208:1: rule__PropertyConjunction__Group_1__2 : rule__PropertyConjunction__Group_1__2__Impl ;
    public final void rule__PropertyConjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23212:1: ( rule__PropertyConjunction__Group_1__2__Impl )
            // InternalFiacre.g:23213:2: rule__PropertyConjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__2"


    // $ANTLR start "rule__PropertyConjunction__Group_1__2__Impl"
    // InternalFiacre.g:23219:1: rule__PropertyConjunction__Group_1__2__Impl : ( ( rule__PropertyConjunction__RightAssignment_1_2 ) ) ;
    public final void rule__PropertyConjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23223:1: ( ( ( rule__PropertyConjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:23224:1: ( ( rule__PropertyConjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:23224:1: ( ( rule__PropertyConjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:23225:2: ( rule__PropertyConjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:23226:2: ( rule__PropertyConjunction__RightAssignment_1_2 )
            // InternalFiacre.g:23226:3: rule__PropertyConjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyConjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__Group_1__2__Impl"


    // $ANTLR start "rule__PropertyNegation__Group_0__0"
    // InternalFiacre.g:23235:1: rule__PropertyNegation__Group_0__0 : rule__PropertyNegation__Group_0__0__Impl rule__PropertyNegation__Group_0__1 ;
    public final void rule__PropertyNegation__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23239:1: ( rule__PropertyNegation__Group_0__0__Impl rule__PropertyNegation__Group_0__1 )
            // InternalFiacre.g:23240:2: rule__PropertyNegation__Group_0__0__Impl rule__PropertyNegation__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_113);
            rule__PropertyNegation__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyNegation__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__0"


    // $ANTLR start "rule__PropertyNegation__Group_0__0__Impl"
    // InternalFiacre.g:23247:1: rule__PropertyNegation__Group_0__0__Impl : ( () ) ;
    public final void rule__PropertyNegation__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23251:1: ( ( () ) )
            // InternalFiacre.g:23252:1: ( () )
            {
            // InternalFiacre.g:23252:1: ( () )
            // InternalFiacre.g:23253:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationAccess().getPropertyNegationAction_0_0()); 
            }
            // InternalFiacre.g:23254:2: ()
            // InternalFiacre.g:23254:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationAccess().getPropertyNegationAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__0__Impl"


    // $ANTLR start "rule__PropertyNegation__Group_0__1"
    // InternalFiacre.g:23262:1: rule__PropertyNegation__Group_0__1 : rule__PropertyNegation__Group_0__1__Impl rule__PropertyNegation__Group_0__2 ;
    public final void rule__PropertyNegation__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23266:1: ( rule__PropertyNegation__Group_0__1__Impl rule__PropertyNegation__Group_0__2 )
            // InternalFiacre.g:23267:2: rule__PropertyNegation__Group_0__1__Impl rule__PropertyNegation__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__PropertyNegation__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyNegation__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__1"


    // $ANTLR start "rule__PropertyNegation__Group_0__1__Impl"
    // InternalFiacre.g:23274:1: rule__PropertyNegation__Group_0__1__Impl : ( 'not' ) ;
    public final void rule__PropertyNegation__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23278:1: ( ( 'not' ) )
            // InternalFiacre.g:23279:1: ( 'not' )
            {
            // InternalFiacre.g:23279:1: ( 'not' )
            // InternalFiacre.g:23280:2: 'not'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationAccess().getNotKeyword_0_1()); 
            }
            match(input,91,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationAccess().getNotKeyword_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__1__Impl"


    // $ANTLR start "rule__PropertyNegation__Group_0__2"
    // InternalFiacre.g:23289:1: rule__PropertyNegation__Group_0__2 : rule__PropertyNegation__Group_0__2__Impl ;
    public final void rule__PropertyNegation__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23293:1: ( rule__PropertyNegation__Group_0__2__Impl )
            // InternalFiacre.g:23294:2: rule__PropertyNegation__Group_0__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyNegation__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__2"


    // $ANTLR start "rule__PropertyNegation__Group_0__2__Impl"
    // InternalFiacre.g:23300:1: rule__PropertyNegation__Group_0__2__Impl : ( ( rule__PropertyNegation__ChildAssignment_0_2 ) ) ;
    public final void rule__PropertyNegation__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23304:1: ( ( ( rule__PropertyNegation__ChildAssignment_0_2 ) ) )
            // InternalFiacre.g:23305:1: ( ( rule__PropertyNegation__ChildAssignment_0_2 ) )
            {
            // InternalFiacre.g:23305:1: ( ( rule__PropertyNegation__ChildAssignment_0_2 ) )
            // InternalFiacre.g:23306:2: ( rule__PropertyNegation__ChildAssignment_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationAccess().getChildAssignment_0_2()); 
            }
            // InternalFiacre.g:23307:2: ( rule__PropertyNegation__ChildAssignment_0_2 )
            // InternalFiacre.g:23307:3: rule__PropertyNegation__ChildAssignment_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PropertyNegation__ChildAssignment_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationAccess().getChildAssignment_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__Group_0__2__Impl"


    // $ANTLR start "rule__AtomicProperty__Group_1__0"
    // InternalFiacre.g:23316:1: rule__AtomicProperty__Group_1__0 : rule__AtomicProperty__Group_1__0__Impl rule__AtomicProperty__Group_1__1 ;
    public final void rule__AtomicProperty__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23320:1: ( rule__AtomicProperty__Group_1__0__Impl rule__AtomicProperty__Group_1__1 )
            // InternalFiacre.g:23321:2: rule__AtomicProperty__Group_1__0__Impl rule__AtomicProperty__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_130);
            rule__AtomicProperty__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicProperty__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__0"


    // $ANTLR start "rule__AtomicProperty__Group_1__0__Impl"
    // InternalFiacre.g:23328:1: rule__AtomicProperty__Group_1__0__Impl : ( '(' ) ;
    public final void rule__AtomicProperty__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23332:1: ( ( '(' ) )
            // InternalFiacre.g:23333:1: ( '(' )
            {
            // InternalFiacre.g:23333:1: ( '(' )
            // InternalFiacre.g:23334:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicPropertyAccess().getLeftParenthesisKeyword_1_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicPropertyAccess().getLeftParenthesisKeyword_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__0__Impl"


    // $ANTLR start "rule__AtomicProperty__Group_1__1"
    // InternalFiacre.g:23343:1: rule__AtomicProperty__Group_1__1 : rule__AtomicProperty__Group_1__1__Impl rule__AtomicProperty__Group_1__2 ;
    public final void rule__AtomicProperty__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23347:1: ( rule__AtomicProperty__Group_1__1__Impl rule__AtomicProperty__Group_1__2 )
            // InternalFiacre.g:23348:2: rule__AtomicProperty__Group_1__1__Impl rule__AtomicProperty__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__AtomicProperty__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicProperty__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__1"


    // $ANTLR start "rule__AtomicProperty__Group_1__1__Impl"
    // InternalFiacre.g:23355:1: rule__AtomicProperty__Group_1__1__Impl : ( ruleProperty ) ;
    public final void rule__AtomicProperty__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23359:1: ( ( ruleProperty ) )
            // InternalFiacre.g:23360:1: ( ruleProperty )
            {
            // InternalFiacre.g:23360:1: ( ruleProperty )
            // InternalFiacre.g:23361:2: ruleProperty
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicPropertyAccess().getPropertyParserRuleCall_1_1()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicPropertyAccess().getPropertyParserRuleCall_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__1__Impl"


    // $ANTLR start "rule__AtomicProperty__Group_1__2"
    // InternalFiacre.g:23370:1: rule__AtomicProperty__Group_1__2 : rule__AtomicProperty__Group_1__2__Impl ;
    public final void rule__AtomicProperty__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23374:1: ( rule__AtomicProperty__Group_1__2__Impl )
            // InternalFiacre.g:23375:2: rule__AtomicProperty__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicProperty__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__2"


    // $ANTLR start "rule__AtomicProperty__Group_1__2__Impl"
    // InternalFiacre.g:23381:1: rule__AtomicProperty__Group_1__2__Impl : ( ')' ) ;
    public final void rule__AtomicProperty__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23385:1: ( ( ')' ) )
            // InternalFiacre.g:23386:1: ( ')' )
            {
            // InternalFiacre.g:23386:1: ( ')' )
            // InternalFiacre.g:23387:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicPropertyAccess().getRightParenthesisKeyword_1_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicPropertyAccess().getRightParenthesisKeyword_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicProperty__Group_1__2__Impl"


    // $ANTLR start "rule__LTLPattern__Group__0"
    // InternalFiacre.g:23397:1: rule__LTLPattern__Group__0 : rule__LTLPattern__Group__0__Impl rule__LTLPattern__Group__1 ;
    public final void rule__LTLPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23401:1: ( rule__LTLPattern__Group__0__Impl rule__LTLPattern__Group__1 )
            // InternalFiacre.g:23402:2: rule__LTLPattern__Group__0__Impl rule__LTLPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_132);
            rule__LTLPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLPattern__Group__0"


    // $ANTLR start "rule__LTLPattern__Group__0__Impl"
    // InternalFiacre.g:23409:1: rule__LTLPattern__Group__0__Impl : ( 'ltl' ) ;
    public final void rule__LTLPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23413:1: ( ( 'ltl' ) )
            // InternalFiacre.g:23414:1: ( 'ltl' )
            {
            // InternalFiacre.g:23414:1: ( 'ltl' )
            // InternalFiacre.g:23415:2: 'ltl'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPatternAccess().getLtlKeyword_0()); 
            }
            match(input,113,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPatternAccess().getLtlKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLPattern__Group__0__Impl"


    // $ANTLR start "rule__LTLPattern__Group__1"
    // InternalFiacre.g:23424:1: rule__LTLPattern__Group__1 : rule__LTLPattern__Group__1__Impl ;
    public final void rule__LTLPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23428:1: ( rule__LTLPattern__Group__1__Impl )
            // InternalFiacre.g:23429:2: rule__LTLPattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLPattern__Group__1"


    // $ANTLR start "rule__LTLPattern__Group__1__Impl"
    // InternalFiacre.g:23435:1: rule__LTLPattern__Group__1__Impl : ( ( rule__LTLPattern__PropertyAssignment_1 ) ) ;
    public final void rule__LTLPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23439:1: ( ( ( rule__LTLPattern__PropertyAssignment_1 ) ) )
            // InternalFiacre.g:23440:1: ( ( rule__LTLPattern__PropertyAssignment_1 ) )
            {
            // InternalFiacre.g:23440:1: ( ( rule__LTLPattern__PropertyAssignment_1 ) )
            // InternalFiacre.g:23441:2: ( rule__LTLPattern__PropertyAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPatternAccess().getPropertyAssignment_1()); 
            }
            // InternalFiacre.g:23442:2: ( rule__LTLPattern__PropertyAssignment_1 )
            // InternalFiacre.g:23442:3: rule__LTLPattern__PropertyAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLPattern__PropertyAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPatternAccess().getPropertyAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLPattern__Group__1__Impl"


    // $ANTLR start "rule__DeadlockFreePattern__Group__0"
    // InternalFiacre.g:23451:1: rule__DeadlockFreePattern__Group__0 : rule__DeadlockFreePattern__Group__0__Impl rule__DeadlockFreePattern__Group__1 ;
    public final void rule__DeadlockFreePattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23455:1: ( rule__DeadlockFreePattern__Group__0__Impl rule__DeadlockFreePattern__Group__1 )
            // InternalFiacre.g:23456:2: rule__DeadlockFreePattern__Group__0__Impl rule__DeadlockFreePattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_133);
            rule__DeadlockFreePattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DeadlockFreePattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DeadlockFreePattern__Group__0"


    // $ANTLR start "rule__DeadlockFreePattern__Group__0__Impl"
    // InternalFiacre.g:23463:1: rule__DeadlockFreePattern__Group__0__Impl : ( () ) ;
    public final void rule__DeadlockFreePattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23467:1: ( ( () ) )
            // InternalFiacre.g:23468:1: ( () )
            {
            // InternalFiacre.g:23468:1: ( () )
            // InternalFiacre.g:23469:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeadlockFreePatternAccess().getDeadlockFreePatternAction_0()); 
            }
            // InternalFiacre.g:23470:2: ()
            // InternalFiacre.g:23470:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeadlockFreePatternAccess().getDeadlockFreePatternAction_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DeadlockFreePattern__Group__0__Impl"


    // $ANTLR start "rule__DeadlockFreePattern__Group__1"
    // InternalFiacre.g:23478:1: rule__DeadlockFreePattern__Group__1 : rule__DeadlockFreePattern__Group__1__Impl ;
    public final void rule__DeadlockFreePattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23482:1: ( rule__DeadlockFreePattern__Group__1__Impl )
            // InternalFiacre.g:23483:2: rule__DeadlockFreePattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__DeadlockFreePattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DeadlockFreePattern__Group__1"


    // $ANTLR start "rule__DeadlockFreePattern__Group__1__Impl"
    // InternalFiacre.g:23489:1: rule__DeadlockFreePattern__Group__1__Impl : ( 'deadlockfree' ) ;
    public final void rule__DeadlockFreePattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23493:1: ( ( 'deadlockfree' ) )
            // InternalFiacre.g:23494:1: ( 'deadlockfree' )
            {
            // InternalFiacre.g:23494:1: ( 'deadlockfree' )
            // InternalFiacre.g:23495:2: 'deadlockfree'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDeadlockFreePatternAccess().getDeadlockfreeKeyword_1()); 
            }
            match(input,114,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDeadlockFreePatternAccess().getDeadlockfreeKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DeadlockFreePattern__Group__1__Impl"


    // $ANTLR start "rule__InfinitelyOftenPattern__Group__0"
    // InternalFiacre.g:23505:1: rule__InfinitelyOftenPattern__Group__0 : rule__InfinitelyOftenPattern__Group__0__Impl rule__InfinitelyOftenPattern__Group__1 ;
    public final void rule__InfinitelyOftenPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23509:1: ( rule__InfinitelyOftenPattern__Group__0__Impl rule__InfinitelyOftenPattern__Group__1 )
            // InternalFiacre.g:23510:2: rule__InfinitelyOftenPattern__Group__0__Impl rule__InfinitelyOftenPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__InfinitelyOftenPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfinitelyOftenPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfinitelyOftenPattern__Group__0"


    // $ANTLR start "rule__InfinitelyOftenPattern__Group__0__Impl"
    // InternalFiacre.g:23517:1: rule__InfinitelyOftenPattern__Group__0__Impl : ( 'infinitelyoften' ) ;
    public final void rule__InfinitelyOftenPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23521:1: ( ( 'infinitelyoften' ) )
            // InternalFiacre.g:23522:1: ( 'infinitelyoften' )
            {
            // InternalFiacre.g:23522:1: ( 'infinitelyoften' )
            // InternalFiacre.g:23523:2: 'infinitelyoften'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfinitelyOftenPatternAccess().getInfinitelyoftenKeyword_0()); 
            }
            match(input,115,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfinitelyOftenPatternAccess().getInfinitelyoftenKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfinitelyOftenPattern__Group__0__Impl"


    // $ANTLR start "rule__InfinitelyOftenPattern__Group__1"
    // InternalFiacre.g:23532:1: rule__InfinitelyOftenPattern__Group__1 : rule__InfinitelyOftenPattern__Group__1__Impl ;
    public final void rule__InfinitelyOftenPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23536:1: ( rule__InfinitelyOftenPattern__Group__1__Impl )
            // InternalFiacre.g:23537:2: rule__InfinitelyOftenPattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfinitelyOftenPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfinitelyOftenPattern__Group__1"


    // $ANTLR start "rule__InfinitelyOftenPattern__Group__1__Impl"
    // InternalFiacre.g:23543:1: rule__InfinitelyOftenPattern__Group__1__Impl : ( ( rule__InfinitelyOftenPattern__SubjectAssignment_1 ) ) ;
    public final void rule__InfinitelyOftenPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23547:1: ( ( ( rule__InfinitelyOftenPattern__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:23548:1: ( ( rule__InfinitelyOftenPattern__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:23548:1: ( ( rule__InfinitelyOftenPattern__SubjectAssignment_1 ) )
            // InternalFiacre.g:23549:2: ( rule__InfinitelyOftenPattern__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfinitelyOftenPatternAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:23550:2: ( rule__InfinitelyOftenPattern__SubjectAssignment_1 )
            // InternalFiacre.g:23550:3: rule__InfinitelyOftenPattern__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__InfinitelyOftenPattern__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfinitelyOftenPatternAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfinitelyOftenPattern__Group__1__Impl"


    // $ANTLR start "rule__MortalPattern__Group__0"
    // InternalFiacre.g:23559:1: rule__MortalPattern__Group__0 : rule__MortalPattern__Group__0__Impl rule__MortalPattern__Group__1 ;
    public final void rule__MortalPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23563:1: ( rule__MortalPattern__Group__0__Impl rule__MortalPattern__Group__1 )
            // InternalFiacre.g:23564:2: rule__MortalPattern__Group__0__Impl rule__MortalPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__MortalPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__MortalPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__MortalPattern__Group__0"


    // $ANTLR start "rule__MortalPattern__Group__0__Impl"
    // InternalFiacre.g:23571:1: rule__MortalPattern__Group__0__Impl : ( 'mortal' ) ;
    public final void rule__MortalPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23575:1: ( ( 'mortal' ) )
            // InternalFiacre.g:23576:1: ( 'mortal' )
            {
            // InternalFiacre.g:23576:1: ( 'mortal' )
            // InternalFiacre.g:23577:2: 'mortal'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMortalPatternAccess().getMortalKeyword_0()); 
            }
            match(input,116,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMortalPatternAccess().getMortalKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__MortalPattern__Group__0__Impl"


    // $ANTLR start "rule__MortalPattern__Group__1"
    // InternalFiacre.g:23586:1: rule__MortalPattern__Group__1 : rule__MortalPattern__Group__1__Impl ;
    public final void rule__MortalPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23590:1: ( rule__MortalPattern__Group__1__Impl )
            // InternalFiacre.g:23591:2: rule__MortalPattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__MortalPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__MortalPattern__Group__1"


    // $ANTLR start "rule__MortalPattern__Group__1__Impl"
    // InternalFiacre.g:23597:1: rule__MortalPattern__Group__1__Impl : ( ( rule__MortalPattern__SubjectAssignment_1 ) ) ;
    public final void rule__MortalPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23601:1: ( ( ( rule__MortalPattern__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:23602:1: ( ( rule__MortalPattern__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:23602:1: ( ( rule__MortalPattern__SubjectAssignment_1 ) )
            // InternalFiacre.g:23603:2: ( rule__MortalPattern__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMortalPatternAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:23604:2: ( rule__MortalPattern__SubjectAssignment_1 )
            // InternalFiacre.g:23604:3: rule__MortalPattern__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__MortalPattern__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getMortalPatternAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__MortalPattern__Group__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group__0"
    // InternalFiacre.g:23613:1: rule__PresencePattern__Group__0 : rule__PresencePattern__Group__0__Impl rule__PresencePattern__Group__1 ;
    public final void rule__PresencePattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23617:1: ( rule__PresencePattern__Group__0__Impl rule__PresencePattern__Group__1 )
            // InternalFiacre.g:23618:2: rule__PresencePattern__Group__0__Impl rule__PresencePattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__0"


    // $ANTLR start "rule__PresencePattern__Group__0__Impl"
    // InternalFiacre.g:23625:1: rule__PresencePattern__Group__0__Impl : ( 'present' ) ;
    public final void rule__PresencePattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23629:1: ( ( 'present' ) )
            // InternalFiacre.g:23630:1: ( 'present' )
            {
            // InternalFiacre.g:23630:1: ( 'present' )
            // InternalFiacre.g:23631:2: 'present'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getPresentKeyword_0()); 
            }
            match(input,117,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getPresentKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group__1"
    // InternalFiacre.g:23640:1: rule__PresencePattern__Group__1 : rule__PresencePattern__Group__1__Impl rule__PresencePattern__Group__2 ;
    public final void rule__PresencePattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23644:1: ( rule__PresencePattern__Group__1__Impl rule__PresencePattern__Group__2 )
            // InternalFiacre.g:23645:2: rule__PresencePattern__Group__1__Impl rule__PresencePattern__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_135);
            rule__PresencePattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__1"


    // $ANTLR start "rule__PresencePattern__Group__1__Impl"
    // InternalFiacre.g:23652:1: rule__PresencePattern__Group__1__Impl : ( ( rule__PresencePattern__SubjectAssignment_1 ) ) ;
    public final void rule__PresencePattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23656:1: ( ( ( rule__PresencePattern__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:23657:1: ( ( rule__PresencePattern__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:23657:1: ( ( rule__PresencePattern__SubjectAssignment_1 ) )
            // InternalFiacre.g:23658:2: ( rule__PresencePattern__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:23659:2: ( rule__PresencePattern__SubjectAssignment_1 )
            // InternalFiacre.g:23659:3: rule__PresencePattern__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group__2"
    // InternalFiacre.g:23667:1: rule__PresencePattern__Group__2 : rule__PresencePattern__Group__2__Impl ;
    public final void rule__PresencePattern__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23671:1: ( rule__PresencePattern__Group__2__Impl )
            // InternalFiacre.g:23672:2: rule__PresencePattern__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__2"


    // $ANTLR start "rule__PresencePattern__Group__2__Impl"
    // InternalFiacre.g:23678:1: rule__PresencePattern__Group__2__Impl : ( ( rule__PresencePattern__Alternatives_2 )? ) ;
    public final void rule__PresencePattern__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23682:1: ( ( ( rule__PresencePattern__Alternatives_2 )? ) )
            // InternalFiacre.g:23683:1: ( ( rule__PresencePattern__Alternatives_2 )? )
            {
            // InternalFiacre.g:23683:1: ( ( rule__PresencePattern__Alternatives_2 )? )
            // InternalFiacre.g:23684:2: ( rule__PresencePattern__Alternatives_2 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAlternatives_2()); 
            }
            // InternalFiacre.g:23685:2: ( rule__PresencePattern__Alternatives_2 )?
            int alt180=2;
            int LA180_0 = input.LA(1);

            if ( ((LA180_0>=118 && LA180_0<=119)||(LA180_0>=122 && LA180_0<=123)) ) {
                alt180=1;
            }
            switch (alt180) {
                case 1 :
                    // InternalFiacre.g:23685:3: rule__PresencePattern__Alternatives_2
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Alternatives_2();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAlternatives_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group__2__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_0__0"
    // InternalFiacre.g:23694:1: rule__PresencePattern__Group_2_0__0 : rule__PresencePattern__Group_2_0__0__Impl rule__PresencePattern__Group_2_0__1 ;
    public final void rule__PresencePattern__Group_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23698:1: ( rule__PresencePattern__Group_2_0__0__Impl rule__PresencePattern__Group_2_0__1 )
            // InternalFiacre.g:23699:2: rule__PresencePattern__Group_2_0__0__Impl rule__PresencePattern__Group_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_69);
            rule__PresencePattern__Group_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_0__0"


    // $ANTLR start "rule__PresencePattern__Group_2_0__0__Impl"
    // InternalFiacre.g:23706:1: rule__PresencePattern__Group_2_0__0__Impl : ( 'lasting' ) ;
    public final void rule__PresencePattern__Group_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23710:1: ( ( 'lasting' ) )
            // InternalFiacre.g:23711:1: ( 'lasting' )
            {
            // InternalFiacre.g:23711:1: ( 'lasting' )
            // InternalFiacre.g:23712:2: 'lasting'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLastingKeyword_2_0_0()); 
            }
            match(input,118,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLastingKeyword_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_0__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_0__1"
    // InternalFiacre.g:23721:1: rule__PresencePattern__Group_2_0__1 : rule__PresencePattern__Group_2_0__1__Impl ;
    public final void rule__PresencePattern__Group_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23725:1: ( rule__PresencePattern__Group_2_0__1__Impl )
            // InternalFiacre.g:23726:2: rule__PresencePattern__Group_2_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_0__1"


    // $ANTLR start "rule__PresencePattern__Group_2_0__1__Impl"
    // InternalFiacre.g:23732:1: rule__PresencePattern__Group_2_0__1__Impl : ( ( rule__PresencePattern__LastingAssignment_2_0_1 ) ) ;
    public final void rule__PresencePattern__Group_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23736:1: ( ( ( rule__PresencePattern__LastingAssignment_2_0_1 ) ) )
            // InternalFiacre.g:23737:1: ( ( rule__PresencePattern__LastingAssignment_2_0_1 ) )
            {
            // InternalFiacre.g:23737:1: ( ( rule__PresencePattern__LastingAssignment_2_0_1 ) )
            // InternalFiacre.g:23738:2: ( rule__PresencePattern__LastingAssignment_2_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLastingAssignment_2_0_1()); 
            }
            // InternalFiacre.g:23739:2: ( rule__PresencePattern__LastingAssignment_2_0_1 )
            // InternalFiacre.g:23739:3: rule__PresencePattern__LastingAssignment_2_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__LastingAssignment_2_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLastingAssignment_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_0__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1__0"
    // InternalFiacre.g:23748:1: rule__PresencePattern__Group_2_1__0 : rule__PresencePattern__Group_2_1__0__Impl rule__PresencePattern__Group_2_1__1 ;
    public final void rule__PresencePattern__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23752:1: ( rule__PresencePattern__Group_2_1__0__Impl rule__PresencePattern__Group_2_1__1 )
            // InternalFiacre.g:23753:2: rule__PresencePattern__Group_2_1__0__Impl rule__PresencePattern__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_136);
            rule__PresencePattern__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1__0"


    // $ANTLR start "rule__PresencePattern__Group_2_1__0__Impl"
    // InternalFiacre.g:23760:1: rule__PresencePattern__Group_2_1__0__Impl : ( ( rule__PresencePattern__Group_2_1_0__0 ) ) ;
    public final void rule__PresencePattern__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23764:1: ( ( ( rule__PresencePattern__Group_2_1_0__0 ) ) )
            // InternalFiacre.g:23765:1: ( ( rule__PresencePattern__Group_2_1_0__0 ) )
            {
            // InternalFiacre.g:23765:1: ( ( rule__PresencePattern__Group_2_1_0__0 ) )
            // InternalFiacre.g:23766:2: ( rule__PresencePattern__Group_2_1_0__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getGroup_2_1_0()); 
            }
            // InternalFiacre.g:23767:2: ( rule__PresencePattern__Group_2_1_0__0 )
            // InternalFiacre.g:23767:3: rule__PresencePattern__Group_2_1_0__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_0__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getGroup_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1__1"
    // InternalFiacre.g:23775:1: rule__PresencePattern__Group_2_1__1 : rule__PresencePattern__Group_2_1__1__Impl ;
    public final void rule__PresencePattern__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23779:1: ( rule__PresencePattern__Group_2_1__1__Impl )
            // InternalFiacre.g:23780:2: rule__PresencePattern__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1__1"


    // $ANTLR start "rule__PresencePattern__Group_2_1__1__Impl"
    // InternalFiacre.g:23786:1: rule__PresencePattern__Group_2_1__1__Impl : ( ( rule__PresencePattern__Alternatives_2_1_1 )? ) ;
    public final void rule__PresencePattern__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23790:1: ( ( ( rule__PresencePattern__Alternatives_2_1_1 )? ) )
            // InternalFiacre.g:23791:1: ( ( rule__PresencePattern__Alternatives_2_1_1 )? )
            {
            // InternalFiacre.g:23791:1: ( ( rule__PresencePattern__Alternatives_2_1_1 )? )
            // InternalFiacre.g:23792:2: ( rule__PresencePattern__Alternatives_2_1_1 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAlternatives_2_1_1()); 
            }
            // InternalFiacre.g:23793:2: ( rule__PresencePattern__Alternatives_2_1_1 )?
            int alt181=2;
            int LA181_0 = input.LA(1);

            if ( ((LA181_0>=120 && LA181_0<=121)) ) {
                alt181=1;
            }
            switch (alt181) {
                case 1 :
                    // InternalFiacre.g:23793:3: rule__PresencePattern__Alternatives_2_1_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Alternatives_2_1_1();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAlternatives_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_0__0"
    // InternalFiacre.g:23802:1: rule__PresencePattern__Group_2_1_0__0 : rule__PresencePattern__Group_2_1_0__0__Impl rule__PresencePattern__Group_2_1_0__1 ;
    public final void rule__PresencePattern__Group_2_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23806:1: ( rule__PresencePattern__Group_2_1_0__0__Impl rule__PresencePattern__Group_2_1_0__1 )
            // InternalFiacre.g:23807:2: rule__PresencePattern__Group_2_1_0__0__Impl rule__PresencePattern__Group_2_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group_2_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_0__0"


    // $ANTLR start "rule__PresencePattern__Group_2_1_0__0__Impl"
    // InternalFiacre.g:23814:1: rule__PresencePattern__Group_2_1_0__0__Impl : ( 'after' ) ;
    public final void rule__PresencePattern__Group_2_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23818:1: ( ( 'after' ) )
            // InternalFiacre.g:23819:1: ( 'after' )
            {
            // InternalFiacre.g:23819:1: ( 'after' )
            // InternalFiacre.g:23820:2: 'after'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAfterKeyword_2_1_0_0()); 
            }
            match(input,119,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAfterKeyword_2_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_0__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_0__1"
    // InternalFiacre.g:23829:1: rule__PresencePattern__Group_2_1_0__1 : rule__PresencePattern__Group_2_1_0__1__Impl ;
    public final void rule__PresencePattern__Group_2_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23833:1: ( rule__PresencePattern__Group_2_1_0__1__Impl )
            // InternalFiacre.g:23834:2: rule__PresencePattern__Group_2_1_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_0__1"


    // $ANTLR start "rule__PresencePattern__Group_2_1_0__1__Impl"
    // InternalFiacre.g:23840:1: rule__PresencePattern__Group_2_1_0__1__Impl : ( ( rule__PresencePattern__AfterAssignment_2_1_0_1 ) ) ;
    public final void rule__PresencePattern__Group_2_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23844:1: ( ( ( rule__PresencePattern__AfterAssignment_2_1_0_1 ) ) )
            // InternalFiacre.g:23845:1: ( ( rule__PresencePattern__AfterAssignment_2_1_0_1 ) )
            {
            // InternalFiacre.g:23845:1: ( ( rule__PresencePattern__AfterAssignment_2_1_0_1 ) )
            // InternalFiacre.g:23846:2: ( rule__PresencePattern__AfterAssignment_2_1_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAfterAssignment_2_1_0_1()); 
            }
            // InternalFiacre.g:23847:2: ( rule__PresencePattern__AfterAssignment_2_1_0_1 )
            // InternalFiacre.g:23847:3: rule__PresencePattern__AfterAssignment_2_1_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__AfterAssignment_2_1_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAfterAssignment_2_1_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_0__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__0"
    // InternalFiacre.g:23856:1: rule__PresencePattern__Group_2_1_1_0__0 : rule__PresencePattern__Group_2_1_1_0__0__Impl rule__PresencePattern__Group_2_1_1_0__1 ;
    public final void rule__PresencePattern__Group_2_1_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23860:1: ( rule__PresencePattern__Group_2_1_1_0__0__Impl rule__PresencePattern__Group_2_1_1_0__1 )
            // InternalFiacre.g:23861:2: rule__PresencePattern__Group_2_1_1_0__0__Impl rule__PresencePattern__Group_2_1_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__PresencePattern__Group_2_1_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__0"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__0__Impl"
    // InternalFiacre.g:23868:1: rule__PresencePattern__Group_2_1_1_0__0__Impl : ( 'within' ) ;
    public final void rule__PresencePattern__Group_2_1_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23872:1: ( ( 'within' ) )
            // InternalFiacre.g:23873:1: ( 'within' )
            {
            // InternalFiacre.g:23873:1: ( 'within' )
            // InternalFiacre.g:23874:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getWithinKeyword_2_1_1_0_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getWithinKeyword_2_1_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__1"
    // InternalFiacre.g:23883:1: rule__PresencePattern__Group_2_1_1_0__1 : rule__PresencePattern__Group_2_1_1_0__1__Impl rule__PresencePattern__Group_2_1_1_0__2 ;
    public final void rule__PresencePattern__Group_2_1_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23887:1: ( rule__PresencePattern__Group_2_1_1_0__1__Impl rule__PresencePattern__Group_2_1_1_0__2 )
            // InternalFiacre.g:23888:2: rule__PresencePattern__Group_2_1_1_0__1__Impl rule__PresencePattern__Group_2_1_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PresencePattern__Group_2_1_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__1"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__1__Impl"
    // InternalFiacre.g:23895:1: rule__PresencePattern__Group_2_1_1_0__1__Impl : ( ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 ) ) ;
    public final void rule__PresencePattern__Group_2_1_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23899:1: ( ( ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 ) ) )
            // InternalFiacre.g:23900:1: ( ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 ) )
            {
            // InternalFiacre.g:23900:1: ( ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 ) )
            // InternalFiacre.g:23901:2: ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLowerAssignment_2_1_1_0_1()); 
            }
            // InternalFiacre.g:23902:2: ( rule__PresencePattern__LowerAssignment_2_1_1_0_1 )
            // InternalFiacre.g:23902:3: rule__PresencePattern__LowerAssignment_2_1_1_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__LowerAssignment_2_1_1_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLowerAssignment_2_1_1_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__2"
    // InternalFiacre.g:23910:1: rule__PresencePattern__Group_2_1_1_0__2 : rule__PresencePattern__Group_2_1_1_0__2__Impl rule__PresencePattern__Group_2_1_1_0__3 ;
    public final void rule__PresencePattern__Group_2_1_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23914:1: ( rule__PresencePattern__Group_2_1_1_0__2__Impl rule__PresencePattern__Group_2_1_1_0__3 )
            // InternalFiacre.g:23915:2: rule__PresencePattern__Group_2_1_1_0__2__Impl rule__PresencePattern__Group_2_1_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__PresencePattern__Group_2_1_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__2"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__2__Impl"
    // InternalFiacre.g:23922:1: rule__PresencePattern__Group_2_1_1_0__2__Impl : ( ',' ) ;
    public final void rule__PresencePattern__Group_2_1_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23926:1: ( ( ',' ) )
            // InternalFiacre.g:23927:1: ( ',' )
            {
            // InternalFiacre.g:23927:1: ( ',' )
            // InternalFiacre.g:23928:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getCommaKeyword_2_1_1_0_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getCommaKeyword_2_1_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__2__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__3"
    // InternalFiacre.g:23937:1: rule__PresencePattern__Group_2_1_1_0__3 : rule__PresencePattern__Group_2_1_1_0__3__Impl ;
    public final void rule__PresencePattern__Group_2_1_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23941:1: ( rule__PresencePattern__Group_2_1_1_0__3__Impl )
            // InternalFiacre.g:23942:2: rule__PresencePattern__Group_2_1_1_0__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__3"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_0__3__Impl"
    // InternalFiacre.g:23948:1: rule__PresencePattern__Group_2_1_1_0__3__Impl : ( ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 ) ) ;
    public final void rule__PresencePattern__Group_2_1_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23952:1: ( ( ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 ) ) )
            // InternalFiacre.g:23953:1: ( ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 ) )
            {
            // InternalFiacre.g:23953:1: ( ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 ) )
            // InternalFiacre.g:23954:2: ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUpperAssignment_2_1_1_0_3()); 
            }
            // InternalFiacre.g:23955:2: ( rule__PresencePattern__UpperAssignment_2_1_1_0_3 )
            // InternalFiacre.g:23955:3: rule__PresencePattern__UpperAssignment_2_1_1_0_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__UpperAssignment_2_1_1_0_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUpperAssignment_2_1_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_0__3__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_1__0"
    // InternalFiacre.g:23964:1: rule__PresencePattern__Group_2_1_1_1__0 : rule__PresencePattern__Group_2_1_1_1__0__Impl rule__PresencePattern__Group_2_1_1_1__1 ;
    public final void rule__PresencePattern__Group_2_1_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23968:1: ( rule__PresencePattern__Group_2_1_1_1__0__Impl rule__PresencePattern__Group_2_1_1_1__1 )
            // InternalFiacre.g:23969:2: rule__PresencePattern__Group_2_1_1_1__0__Impl rule__PresencePattern__Group_2_1_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group_2_1_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_1__0"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_1__0__Impl"
    // InternalFiacre.g:23976:1: rule__PresencePattern__Group_2_1_1_1__0__Impl : ( 'until' ) ;
    public final void rule__PresencePattern__Group_2_1_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23980:1: ( ( 'until' ) )
            // InternalFiacre.g:23981:1: ( 'until' )
            {
            // InternalFiacre.g:23981:1: ( 'until' )
            // InternalFiacre.g:23982:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUntilKeyword_2_1_1_1_0()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUntilKeyword_2_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_1__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_1__1"
    // InternalFiacre.g:23991:1: rule__PresencePattern__Group_2_1_1_1__1 : rule__PresencePattern__Group_2_1_1_1__1__Impl ;
    public final void rule__PresencePattern__Group_2_1_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:23995:1: ( rule__PresencePattern__Group_2_1_1_1__1__Impl )
            // InternalFiacre.g:23996:2: rule__PresencePattern__Group_2_1_1_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_1_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_1__1"


    // $ANTLR start "rule__PresencePattern__Group_2_1_1_1__1__Impl"
    // InternalFiacre.g:24002:1: rule__PresencePattern__Group_2_1_1_1__1__Impl : ( ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 ) ) ;
    public final void rule__PresencePattern__Group_2_1_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24006:1: ( ( ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 ) ) )
            // InternalFiacre.g:24007:1: ( ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 ) )
            {
            // InternalFiacre.g:24007:1: ( ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 ) )
            // InternalFiacre.g:24008:2: ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUntilAssignment_2_1_1_1_1()); 
            }
            // InternalFiacre.g:24009:2: ( rule__PresencePattern__UntilAssignment_2_1_1_1_1 )
            // InternalFiacre.g:24009:3: rule__PresencePattern__UntilAssignment_2_1_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__UntilAssignment_2_1_1_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUntilAssignment_2_1_1_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_1_1_1__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2__0"
    // InternalFiacre.g:24018:1: rule__PresencePattern__Group_2_2__0 : rule__PresencePattern__Group_2_2__0__Impl rule__PresencePattern__Group_2_2__1 ;
    public final void rule__PresencePattern__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24022:1: ( rule__PresencePattern__Group_2_2__0__Impl rule__PresencePattern__Group_2_2__1 )
            // InternalFiacre.g:24023:2: rule__PresencePattern__Group_2_2__0__Impl rule__PresencePattern__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_137);
            rule__PresencePattern__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2__0"


    // $ANTLR start "rule__PresencePattern__Group_2_2__0__Impl"
    // InternalFiacre.g:24030:1: rule__PresencePattern__Group_2_2__0__Impl : ( ( rule__PresencePattern__Group_2_2_0__0 ) ) ;
    public final void rule__PresencePattern__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24034:1: ( ( ( rule__PresencePattern__Group_2_2_0__0 ) ) )
            // InternalFiacre.g:24035:1: ( ( rule__PresencePattern__Group_2_2_0__0 ) )
            {
            // InternalFiacre.g:24035:1: ( ( rule__PresencePattern__Group_2_2_0__0 ) )
            // InternalFiacre.g:24036:2: ( rule__PresencePattern__Group_2_2_0__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getGroup_2_2_0()); 
            }
            // InternalFiacre.g:24037:2: ( rule__PresencePattern__Group_2_2_0__0 )
            // InternalFiacre.g:24037:3: rule__PresencePattern__Group_2_2_0__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_0__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getGroup_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2__1"
    // InternalFiacre.g:24045:1: rule__PresencePattern__Group_2_2__1 : rule__PresencePattern__Group_2_2__1__Impl ;
    public final void rule__PresencePattern__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24049:1: ( rule__PresencePattern__Group_2_2__1__Impl )
            // InternalFiacre.g:24050:2: rule__PresencePattern__Group_2_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2__1"


    // $ANTLR start "rule__PresencePattern__Group_2_2__1__Impl"
    // InternalFiacre.g:24056:1: rule__PresencePattern__Group_2_2__1__Impl : ( ( rule__PresencePattern__Group_2_2_1__0 )? ) ;
    public final void rule__PresencePattern__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24060:1: ( ( ( rule__PresencePattern__Group_2_2_1__0 )? ) )
            // InternalFiacre.g:24061:1: ( ( rule__PresencePattern__Group_2_2_1__0 )? )
            {
            // InternalFiacre.g:24061:1: ( ( rule__PresencePattern__Group_2_2_1__0 )? )
            // InternalFiacre.g:24062:2: ( rule__PresencePattern__Group_2_2_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getGroup_2_2_1()); 
            }
            // InternalFiacre.g:24063:2: ( rule__PresencePattern__Group_2_2_1__0 )?
            int alt182=2;
            int LA182_0 = input.LA(1);

            if ( (LA182_0==120) ) {
                alt182=1;
            }
            switch (alt182) {
                case 1 :
                    // InternalFiacre.g:24063:3: rule__PresencePattern__Group_2_2_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__PresencePattern__Group_2_2_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getGroup_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_0__0"
    // InternalFiacre.g:24072:1: rule__PresencePattern__Group_2_2_0__0 : rule__PresencePattern__Group_2_2_0__0__Impl rule__PresencePattern__Group_2_2_0__1 ;
    public final void rule__PresencePattern__Group_2_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24076:1: ( rule__PresencePattern__Group_2_2_0__0__Impl rule__PresencePattern__Group_2_2_0__1 )
            // InternalFiacre.g:24077:2: rule__PresencePattern__Group_2_2_0__0__Impl rule__PresencePattern__Group_2_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group_2_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_0__0"


    // $ANTLR start "rule__PresencePattern__Group_2_2_0__0__Impl"
    // InternalFiacre.g:24084:1: rule__PresencePattern__Group_2_2_0__0__Impl : ( 'before' ) ;
    public final void rule__PresencePattern__Group_2_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24088:1: ( ( 'before' ) )
            // InternalFiacre.g:24089:1: ( 'before' )
            {
            // InternalFiacre.g:24089:1: ( 'before' )
            // InternalFiacre.g:24090:2: 'before'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getBeforeKeyword_2_2_0_0()); 
            }
            match(input,122,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getBeforeKeyword_2_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_0__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_0__1"
    // InternalFiacre.g:24099:1: rule__PresencePattern__Group_2_2_0__1 : rule__PresencePattern__Group_2_2_0__1__Impl ;
    public final void rule__PresencePattern__Group_2_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24103:1: ( rule__PresencePattern__Group_2_2_0__1__Impl )
            // InternalFiacre.g:24104:2: rule__PresencePattern__Group_2_2_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_0__1"


    // $ANTLR start "rule__PresencePattern__Group_2_2_0__1__Impl"
    // InternalFiacre.g:24110:1: rule__PresencePattern__Group_2_2_0__1__Impl : ( ( rule__PresencePattern__BeforeAssignment_2_2_0_1 ) ) ;
    public final void rule__PresencePattern__Group_2_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24114:1: ( ( ( rule__PresencePattern__BeforeAssignment_2_2_0_1 ) ) )
            // InternalFiacre.g:24115:1: ( ( rule__PresencePattern__BeforeAssignment_2_2_0_1 ) )
            {
            // InternalFiacre.g:24115:1: ( ( rule__PresencePattern__BeforeAssignment_2_2_0_1 ) )
            // InternalFiacre.g:24116:2: ( rule__PresencePattern__BeforeAssignment_2_2_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getBeforeAssignment_2_2_0_1()); 
            }
            // InternalFiacre.g:24117:2: ( rule__PresencePattern__BeforeAssignment_2_2_0_1 )
            // InternalFiacre.g:24117:3: rule__PresencePattern__BeforeAssignment_2_2_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__BeforeAssignment_2_2_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getBeforeAssignment_2_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_0__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__0"
    // InternalFiacre.g:24126:1: rule__PresencePattern__Group_2_2_1__0 : rule__PresencePattern__Group_2_2_1__0__Impl rule__PresencePattern__Group_2_2_1__1 ;
    public final void rule__PresencePattern__Group_2_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24130:1: ( rule__PresencePattern__Group_2_2_1__0__Impl rule__PresencePattern__Group_2_2_1__1 )
            // InternalFiacre.g:24131:2: rule__PresencePattern__Group_2_2_1__0__Impl rule__PresencePattern__Group_2_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__PresencePattern__Group_2_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__0"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__0__Impl"
    // InternalFiacre.g:24138:1: rule__PresencePattern__Group_2_2_1__0__Impl : ( 'within' ) ;
    public final void rule__PresencePattern__Group_2_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24142:1: ( ( 'within' ) )
            // InternalFiacre.g:24143:1: ( 'within' )
            {
            // InternalFiacre.g:24143:1: ( 'within' )
            // InternalFiacre.g:24144:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getWithinKeyword_2_2_1_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getWithinKeyword_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__1"
    // InternalFiacre.g:24153:1: rule__PresencePattern__Group_2_2_1__1 : rule__PresencePattern__Group_2_2_1__1__Impl rule__PresencePattern__Group_2_2_1__2 ;
    public final void rule__PresencePattern__Group_2_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24157:1: ( rule__PresencePattern__Group_2_2_1__1__Impl rule__PresencePattern__Group_2_2_1__2 )
            // InternalFiacre.g:24158:2: rule__PresencePattern__Group_2_2_1__1__Impl rule__PresencePattern__Group_2_2_1__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__PresencePattern__Group_2_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__1"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__1__Impl"
    // InternalFiacre.g:24165:1: rule__PresencePattern__Group_2_2_1__1__Impl : ( ( rule__PresencePattern__LowerAssignment_2_2_1_1 ) ) ;
    public final void rule__PresencePattern__Group_2_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24169:1: ( ( ( rule__PresencePattern__LowerAssignment_2_2_1_1 ) ) )
            // InternalFiacre.g:24170:1: ( ( rule__PresencePattern__LowerAssignment_2_2_1_1 ) )
            {
            // InternalFiacre.g:24170:1: ( ( rule__PresencePattern__LowerAssignment_2_2_1_1 ) )
            // InternalFiacre.g:24171:2: ( rule__PresencePattern__LowerAssignment_2_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLowerAssignment_2_2_1_1()); 
            }
            // InternalFiacre.g:24172:2: ( rule__PresencePattern__LowerAssignment_2_2_1_1 )
            // InternalFiacre.g:24172:3: rule__PresencePattern__LowerAssignment_2_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__LowerAssignment_2_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLowerAssignment_2_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__2"
    // InternalFiacre.g:24180:1: rule__PresencePattern__Group_2_2_1__2 : rule__PresencePattern__Group_2_2_1__2__Impl rule__PresencePattern__Group_2_2_1__3 ;
    public final void rule__PresencePattern__Group_2_2_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24184:1: ( rule__PresencePattern__Group_2_2_1__2__Impl rule__PresencePattern__Group_2_2_1__3 )
            // InternalFiacre.g:24185:2: rule__PresencePattern__Group_2_2_1__2__Impl rule__PresencePattern__Group_2_2_1__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__PresencePattern__Group_2_2_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__2"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__2__Impl"
    // InternalFiacre.g:24192:1: rule__PresencePattern__Group_2_2_1__2__Impl : ( ',' ) ;
    public final void rule__PresencePattern__Group_2_2_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24196:1: ( ( ',' ) )
            // InternalFiacre.g:24197:1: ( ',' )
            {
            // InternalFiacre.g:24197:1: ( ',' )
            // InternalFiacre.g:24198:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getCommaKeyword_2_2_1_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getCommaKeyword_2_2_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__2__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__3"
    // InternalFiacre.g:24207:1: rule__PresencePattern__Group_2_2_1__3 : rule__PresencePattern__Group_2_2_1__3__Impl ;
    public final void rule__PresencePattern__Group_2_2_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24211:1: ( rule__PresencePattern__Group_2_2_1__3__Impl )
            // InternalFiacre.g:24212:2: rule__PresencePattern__Group_2_2_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_2_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__3"


    // $ANTLR start "rule__PresencePattern__Group_2_2_1__3__Impl"
    // InternalFiacre.g:24218:1: rule__PresencePattern__Group_2_2_1__3__Impl : ( ( rule__PresencePattern__UpperAssignment_2_2_1_3 ) ) ;
    public final void rule__PresencePattern__Group_2_2_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24222:1: ( ( ( rule__PresencePattern__UpperAssignment_2_2_1_3 ) ) )
            // InternalFiacre.g:24223:1: ( ( rule__PresencePattern__UpperAssignment_2_2_1_3 ) )
            {
            // InternalFiacre.g:24223:1: ( ( rule__PresencePattern__UpperAssignment_2_2_1_3 ) )
            // InternalFiacre.g:24224:2: ( rule__PresencePattern__UpperAssignment_2_2_1_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUpperAssignment_2_2_1_3()); 
            }
            // InternalFiacre.g:24225:2: ( rule__PresencePattern__UpperAssignment_2_2_1_3 )
            // InternalFiacre.g:24225:3: rule__PresencePattern__UpperAssignment_2_2_1_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__UpperAssignment_2_2_1_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUpperAssignment_2_2_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_2_1__3__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_3__0"
    // InternalFiacre.g:24234:1: rule__PresencePattern__Group_2_3__0 : rule__PresencePattern__Group_2_3__0__Impl rule__PresencePattern__Group_2_3__1 ;
    public final void rule__PresencePattern__Group_2_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24238:1: ( rule__PresencePattern__Group_2_3__0__Impl rule__PresencePattern__Group_2_3__1 )
            // InternalFiacre.g:24239:2: rule__PresencePattern__Group_2_3__0__Impl rule__PresencePattern__Group_2_3__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group_2_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__0"


    // $ANTLR start "rule__PresencePattern__Group_2_3__0__Impl"
    // InternalFiacre.g:24246:1: rule__PresencePattern__Group_2_3__0__Impl : ( 'between' ) ;
    public final void rule__PresencePattern__Group_2_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24250:1: ( ( 'between' ) )
            // InternalFiacre.g:24251:1: ( 'between' )
            {
            // InternalFiacre.g:24251:1: ( 'between' )
            // InternalFiacre.g:24252:2: 'between'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getBetweenKeyword_2_3_0()); 
            }
            match(input,123,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getBetweenKeyword_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__0__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_3__1"
    // InternalFiacre.g:24261:1: rule__PresencePattern__Group_2_3__1 : rule__PresencePattern__Group_2_3__1__Impl rule__PresencePattern__Group_2_3__2 ;
    public final void rule__PresencePattern__Group_2_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24265:1: ( rule__PresencePattern__Group_2_3__1__Impl rule__PresencePattern__Group_2_3__2 )
            // InternalFiacre.g:24266:2: rule__PresencePattern__Group_2_3__1__Impl rule__PresencePattern__Group_2_3__2
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__PresencePattern__Group_2_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__1"


    // $ANTLR start "rule__PresencePattern__Group_2_3__1__Impl"
    // InternalFiacre.g:24273:1: rule__PresencePattern__Group_2_3__1__Impl : ( ( rule__PresencePattern__MinAssignment_2_3_1 ) ) ;
    public final void rule__PresencePattern__Group_2_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24277:1: ( ( ( rule__PresencePattern__MinAssignment_2_3_1 ) ) )
            // InternalFiacre.g:24278:1: ( ( rule__PresencePattern__MinAssignment_2_3_1 ) )
            {
            // InternalFiacre.g:24278:1: ( ( rule__PresencePattern__MinAssignment_2_3_1 ) )
            // InternalFiacre.g:24279:2: ( rule__PresencePattern__MinAssignment_2_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getMinAssignment_2_3_1()); 
            }
            // InternalFiacre.g:24280:2: ( rule__PresencePattern__MinAssignment_2_3_1 )
            // InternalFiacre.g:24280:3: rule__PresencePattern__MinAssignment_2_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__MinAssignment_2_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getMinAssignment_2_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__1__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_3__2"
    // InternalFiacre.g:24288:1: rule__PresencePattern__Group_2_3__2 : rule__PresencePattern__Group_2_3__2__Impl rule__PresencePattern__Group_2_3__3 ;
    public final void rule__PresencePattern__Group_2_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24292:1: ( rule__PresencePattern__Group_2_3__2__Impl rule__PresencePattern__Group_2_3__3 )
            // InternalFiacre.g:24293:2: rule__PresencePattern__Group_2_3__2__Impl rule__PresencePattern__Group_2_3__3
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__PresencePattern__Group_2_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_3__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__2"


    // $ANTLR start "rule__PresencePattern__Group_2_3__2__Impl"
    // InternalFiacre.g:24300:1: rule__PresencePattern__Group_2_3__2__Impl : ( 'and' ) ;
    public final void rule__PresencePattern__Group_2_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24304:1: ( ( 'and' ) )
            // InternalFiacre.g:24305:1: ( 'and' )
            {
            // InternalFiacre.g:24305:1: ( 'and' )
            // InternalFiacre.g:24306:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAndKeyword_2_3_2()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAndKeyword_2_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__2__Impl"


    // $ANTLR start "rule__PresencePattern__Group_2_3__3"
    // InternalFiacre.g:24315:1: rule__PresencePattern__Group_2_3__3 : rule__PresencePattern__Group_2_3__3__Impl ;
    public final void rule__PresencePattern__Group_2_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24319:1: ( rule__PresencePattern__Group_2_3__3__Impl )
            // InternalFiacre.g:24320:2: rule__PresencePattern__Group_2_3__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__Group_2_3__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__3"


    // $ANTLR start "rule__PresencePattern__Group_2_3__3__Impl"
    // InternalFiacre.g:24326:1: rule__PresencePattern__Group_2_3__3__Impl : ( ( rule__PresencePattern__MaxAssignment_2_3_3 ) ) ;
    public final void rule__PresencePattern__Group_2_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24330:1: ( ( ( rule__PresencePattern__MaxAssignment_2_3_3 ) ) )
            // InternalFiacre.g:24331:1: ( ( rule__PresencePattern__MaxAssignment_2_3_3 ) )
            {
            // InternalFiacre.g:24331:1: ( ( rule__PresencePattern__MaxAssignment_2_3_3 ) )
            // InternalFiacre.g:24332:2: ( rule__PresencePattern__MaxAssignment_2_3_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getMaxAssignment_2_3_3()); 
            }
            // InternalFiacre.g:24333:2: ( rule__PresencePattern__MaxAssignment_2_3_3 )
            // InternalFiacre.g:24333:3: rule__PresencePattern__MaxAssignment_2_3_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PresencePattern__MaxAssignment_2_3_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getMaxAssignment_2_3_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__Group_2_3__3__Impl"


    // $ANTLR start "rule__AbsencePattern__Group__0"
    // InternalFiacre.g:24342:1: rule__AbsencePattern__Group__0 : rule__AbsencePattern__Group__0__Impl rule__AbsencePattern__Group__1 ;
    public final void rule__AbsencePattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24346:1: ( rule__AbsencePattern__Group__0__Impl rule__AbsencePattern__Group__1 )
            // InternalFiacre.g:24347:2: rule__AbsencePattern__Group__0__Impl rule__AbsencePattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__0"


    // $ANTLR start "rule__AbsencePattern__Group__0__Impl"
    // InternalFiacre.g:24354:1: rule__AbsencePattern__Group__0__Impl : ( 'absent' ) ;
    public final void rule__AbsencePattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24358:1: ( ( 'absent' ) )
            // InternalFiacre.g:24359:1: ( 'absent' )
            {
            // InternalFiacre.g:24359:1: ( 'absent' )
            // InternalFiacre.g:24360:2: 'absent'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAbsentKeyword_0()); 
            }
            match(input,124,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAbsentKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group__1"
    // InternalFiacre.g:24369:1: rule__AbsencePattern__Group__1 : rule__AbsencePattern__Group__1__Impl rule__AbsencePattern__Group__2 ;
    public final void rule__AbsencePattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24373:1: ( rule__AbsencePattern__Group__1__Impl rule__AbsencePattern__Group__2 )
            // InternalFiacre.g:24374:2: rule__AbsencePattern__Group__1__Impl rule__AbsencePattern__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_138);
            rule__AbsencePattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__1"


    // $ANTLR start "rule__AbsencePattern__Group__1__Impl"
    // InternalFiacre.g:24381:1: rule__AbsencePattern__Group__1__Impl : ( ( rule__AbsencePattern__SubjectAssignment_1 ) ) ;
    public final void rule__AbsencePattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24385:1: ( ( ( rule__AbsencePattern__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:24386:1: ( ( rule__AbsencePattern__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:24386:1: ( ( rule__AbsencePattern__SubjectAssignment_1 ) )
            // InternalFiacre.g:24387:2: ( rule__AbsencePattern__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:24388:2: ( rule__AbsencePattern__SubjectAssignment_1 )
            // InternalFiacre.g:24388:3: rule__AbsencePattern__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group__2"
    // InternalFiacre.g:24396:1: rule__AbsencePattern__Group__2 : rule__AbsencePattern__Group__2__Impl ;
    public final void rule__AbsencePattern__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24400:1: ( rule__AbsencePattern__Group__2__Impl )
            // InternalFiacre.g:24401:2: rule__AbsencePattern__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__2"


    // $ANTLR start "rule__AbsencePattern__Group__2__Impl"
    // InternalFiacre.g:24407:1: rule__AbsencePattern__Group__2__Impl : ( ( rule__AbsencePattern__Alternatives_2 )? ) ;
    public final void rule__AbsencePattern__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24411:1: ( ( ( rule__AbsencePattern__Alternatives_2 )? ) )
            // InternalFiacre.g:24412:1: ( ( rule__AbsencePattern__Alternatives_2 )? )
            {
            // InternalFiacre.g:24412:1: ( ( rule__AbsencePattern__Alternatives_2 )? )
            // InternalFiacre.g:24413:2: ( rule__AbsencePattern__Alternatives_2 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAlternatives_2()); 
            }
            // InternalFiacre.g:24414:2: ( rule__AbsencePattern__Alternatives_2 )?
            int alt183=2;
            int LA183_0 = input.LA(1);

            if ( (LA183_0==119||(LA183_0>=122 && LA183_0<=123)) ) {
                alt183=1;
            }
            switch (alt183) {
                case 1 :
                    // InternalFiacre.g:24414:3: rule__AbsencePattern__Alternatives_2
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Alternatives_2();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAlternatives_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group__2__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0__0"
    // InternalFiacre.g:24423:1: rule__AbsencePattern__Group_2_0__0 : rule__AbsencePattern__Group_2_0__0__Impl rule__AbsencePattern__Group_2_0__1 ;
    public final void rule__AbsencePattern__Group_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24427:1: ( rule__AbsencePattern__Group_2_0__0__Impl rule__AbsencePattern__Group_2_0__1 )
            // InternalFiacre.g:24428:2: rule__AbsencePattern__Group_2_0__0__Impl rule__AbsencePattern__Group_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_136);
            rule__AbsencePattern__Group_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_0__0__Impl"
    // InternalFiacre.g:24435:1: rule__AbsencePattern__Group_2_0__0__Impl : ( ( rule__AbsencePattern__Group_2_0_0__0 ) ) ;
    public final void rule__AbsencePattern__Group_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24439:1: ( ( ( rule__AbsencePattern__Group_2_0_0__0 ) ) )
            // InternalFiacre.g:24440:1: ( ( rule__AbsencePattern__Group_2_0_0__0 ) )
            {
            // InternalFiacre.g:24440:1: ( ( rule__AbsencePattern__Group_2_0_0__0 ) )
            // InternalFiacre.g:24441:2: ( rule__AbsencePattern__Group_2_0_0__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getGroup_2_0_0()); 
            }
            // InternalFiacre.g:24442:2: ( rule__AbsencePattern__Group_2_0_0__0 )
            // InternalFiacre.g:24442:3: rule__AbsencePattern__Group_2_0_0__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_0__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getGroup_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0__1"
    // InternalFiacre.g:24450:1: rule__AbsencePattern__Group_2_0__1 : rule__AbsencePattern__Group_2_0__1__Impl ;
    public final void rule__AbsencePattern__Group_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24454:1: ( rule__AbsencePattern__Group_2_0__1__Impl )
            // InternalFiacre.g:24455:2: rule__AbsencePattern__Group_2_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_0__1__Impl"
    // InternalFiacre.g:24461:1: rule__AbsencePattern__Group_2_0__1__Impl : ( ( rule__AbsencePattern__Alternatives_2_0_1 )? ) ;
    public final void rule__AbsencePattern__Group_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24465:1: ( ( ( rule__AbsencePattern__Alternatives_2_0_1 )? ) )
            // InternalFiacre.g:24466:1: ( ( rule__AbsencePattern__Alternatives_2_0_1 )? )
            {
            // InternalFiacre.g:24466:1: ( ( rule__AbsencePattern__Alternatives_2_0_1 )? )
            // InternalFiacre.g:24467:2: ( rule__AbsencePattern__Alternatives_2_0_1 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAlternatives_2_0_1()); 
            }
            // InternalFiacre.g:24468:2: ( rule__AbsencePattern__Alternatives_2_0_1 )?
            int alt184=2;
            int LA184_0 = input.LA(1);

            if ( ((LA184_0>=120 && LA184_0<=121)) ) {
                alt184=1;
            }
            switch (alt184) {
                case 1 :
                    // InternalFiacre.g:24468:3: rule__AbsencePattern__Alternatives_2_0_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Alternatives_2_0_1();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAlternatives_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_0__0"
    // InternalFiacre.g:24477:1: rule__AbsencePattern__Group_2_0_0__0 : rule__AbsencePattern__Group_2_0_0__0__Impl rule__AbsencePattern__Group_2_0_0__1 ;
    public final void rule__AbsencePattern__Group_2_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24481:1: ( rule__AbsencePattern__Group_2_0_0__0__Impl rule__AbsencePattern__Group_2_0_0__1 )
            // InternalFiacre.g:24482:2: rule__AbsencePattern__Group_2_0_0__0__Impl rule__AbsencePattern__Group_2_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group_2_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_0__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_0__0__Impl"
    // InternalFiacre.g:24489:1: rule__AbsencePattern__Group_2_0_0__0__Impl : ( 'after' ) ;
    public final void rule__AbsencePattern__Group_2_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24493:1: ( ( 'after' ) )
            // InternalFiacre.g:24494:1: ( 'after' )
            {
            // InternalFiacre.g:24494:1: ( 'after' )
            // InternalFiacre.g:24495:2: 'after'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAfterKeyword_2_0_0_0()); 
            }
            match(input,119,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAfterKeyword_2_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_0__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_0__1"
    // InternalFiacre.g:24504:1: rule__AbsencePattern__Group_2_0_0__1 : rule__AbsencePattern__Group_2_0_0__1__Impl ;
    public final void rule__AbsencePattern__Group_2_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24508:1: ( rule__AbsencePattern__Group_2_0_0__1__Impl )
            // InternalFiacre.g:24509:2: rule__AbsencePattern__Group_2_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_0__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_0__1__Impl"
    // InternalFiacre.g:24515:1: rule__AbsencePattern__Group_2_0_0__1__Impl : ( ( rule__AbsencePattern__AfterAssignment_2_0_0_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24519:1: ( ( ( rule__AbsencePattern__AfterAssignment_2_0_0_1 ) ) )
            // InternalFiacre.g:24520:1: ( ( rule__AbsencePattern__AfterAssignment_2_0_0_1 ) )
            {
            // InternalFiacre.g:24520:1: ( ( rule__AbsencePattern__AfterAssignment_2_0_0_1 ) )
            // InternalFiacre.g:24521:2: ( rule__AbsencePattern__AfterAssignment_2_0_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAfterAssignment_2_0_0_1()); 
            }
            // InternalFiacre.g:24522:2: ( rule__AbsencePattern__AfterAssignment_2_0_0_1 )
            // InternalFiacre.g:24522:3: rule__AbsencePattern__AfterAssignment_2_0_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__AfterAssignment_2_0_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAfterAssignment_2_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_0__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__0"
    // InternalFiacre.g:24531:1: rule__AbsencePattern__Group_2_0_1_0__0 : rule__AbsencePattern__Group_2_0_1_0__0__Impl rule__AbsencePattern__Group_2_0_1_0__1 ;
    public final void rule__AbsencePattern__Group_2_0_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24535:1: ( rule__AbsencePattern__Group_2_0_1_0__0__Impl rule__AbsencePattern__Group_2_0_1_0__1 )
            // InternalFiacre.g:24536:2: rule__AbsencePattern__Group_2_0_1_0__0__Impl rule__AbsencePattern__Group_2_0_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__AbsencePattern__Group_2_0_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__0__Impl"
    // InternalFiacre.g:24543:1: rule__AbsencePattern__Group_2_0_1_0__0__Impl : ( 'within' ) ;
    public final void rule__AbsencePattern__Group_2_0_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24547:1: ( ( 'within' ) )
            // InternalFiacre.g:24548:1: ( 'within' )
            {
            // InternalFiacre.g:24548:1: ( 'within' )
            // InternalFiacre.g:24549:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getWithinKeyword_2_0_1_0_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getWithinKeyword_2_0_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__1"
    // InternalFiacre.g:24558:1: rule__AbsencePattern__Group_2_0_1_0__1 : rule__AbsencePattern__Group_2_0_1_0__1__Impl rule__AbsencePattern__Group_2_0_1_0__2 ;
    public final void rule__AbsencePattern__Group_2_0_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24562:1: ( rule__AbsencePattern__Group_2_0_1_0__1__Impl rule__AbsencePattern__Group_2_0_1_0__2 )
            // InternalFiacre.g:24563:2: rule__AbsencePattern__Group_2_0_1_0__1__Impl rule__AbsencePattern__Group_2_0_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__AbsencePattern__Group_2_0_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__1__Impl"
    // InternalFiacre.g:24570:1: rule__AbsencePattern__Group_2_0_1_0__1__Impl : ( ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_0_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24574:1: ( ( ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 ) ) )
            // InternalFiacre.g:24575:1: ( ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 ) )
            {
            // InternalFiacre.g:24575:1: ( ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 ) )
            // InternalFiacre.g:24576:2: ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getLowerAssignment_2_0_1_0_1()); 
            }
            // InternalFiacre.g:24577:2: ( rule__AbsencePattern__LowerAssignment_2_0_1_0_1 )
            // InternalFiacre.g:24577:3: rule__AbsencePattern__LowerAssignment_2_0_1_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__LowerAssignment_2_0_1_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getLowerAssignment_2_0_1_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__2"
    // InternalFiacre.g:24585:1: rule__AbsencePattern__Group_2_0_1_0__2 : rule__AbsencePattern__Group_2_0_1_0__2__Impl rule__AbsencePattern__Group_2_0_1_0__3 ;
    public final void rule__AbsencePattern__Group_2_0_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24589:1: ( rule__AbsencePattern__Group_2_0_1_0__2__Impl rule__AbsencePattern__Group_2_0_1_0__3 )
            // InternalFiacre.g:24590:2: rule__AbsencePattern__Group_2_0_1_0__2__Impl rule__AbsencePattern__Group_2_0_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__AbsencePattern__Group_2_0_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__2"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__2__Impl"
    // InternalFiacre.g:24597:1: rule__AbsencePattern__Group_2_0_1_0__2__Impl : ( ',' ) ;
    public final void rule__AbsencePattern__Group_2_0_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24601:1: ( ( ',' ) )
            // InternalFiacre.g:24602:1: ( ',' )
            {
            // InternalFiacre.g:24602:1: ( ',' )
            // InternalFiacre.g:24603:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getCommaKeyword_2_0_1_0_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getCommaKeyword_2_0_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__2__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__3"
    // InternalFiacre.g:24612:1: rule__AbsencePattern__Group_2_0_1_0__3 : rule__AbsencePattern__Group_2_0_1_0__3__Impl ;
    public final void rule__AbsencePattern__Group_2_0_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24616:1: ( rule__AbsencePattern__Group_2_0_1_0__3__Impl )
            // InternalFiacre.g:24617:2: rule__AbsencePattern__Group_2_0_1_0__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__3"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_0__3__Impl"
    // InternalFiacre.g:24623:1: rule__AbsencePattern__Group_2_0_1_0__3__Impl : ( ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 ) ) ;
    public final void rule__AbsencePattern__Group_2_0_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24627:1: ( ( ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 ) ) )
            // InternalFiacre.g:24628:1: ( ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 ) )
            {
            // InternalFiacre.g:24628:1: ( ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 ) )
            // InternalFiacre.g:24629:2: ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUpperAssignment_2_0_1_0_3()); 
            }
            // InternalFiacre.g:24630:2: ( rule__AbsencePattern__UpperAssignment_2_0_1_0_3 )
            // InternalFiacre.g:24630:3: rule__AbsencePattern__UpperAssignment_2_0_1_0_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__UpperAssignment_2_0_1_0_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUpperAssignment_2_0_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_0__3__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_1__0"
    // InternalFiacre.g:24639:1: rule__AbsencePattern__Group_2_0_1_1__0 : rule__AbsencePattern__Group_2_0_1_1__0__Impl rule__AbsencePattern__Group_2_0_1_1__1 ;
    public final void rule__AbsencePattern__Group_2_0_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24643:1: ( rule__AbsencePattern__Group_2_0_1_1__0__Impl rule__AbsencePattern__Group_2_0_1_1__1 )
            // InternalFiacre.g:24644:2: rule__AbsencePattern__Group_2_0_1_1__0__Impl rule__AbsencePattern__Group_2_0_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group_2_0_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_1__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_1__0__Impl"
    // InternalFiacre.g:24651:1: rule__AbsencePattern__Group_2_0_1_1__0__Impl : ( 'until' ) ;
    public final void rule__AbsencePattern__Group_2_0_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24655:1: ( ( 'until' ) )
            // InternalFiacre.g:24656:1: ( 'until' )
            {
            // InternalFiacre.g:24656:1: ( 'until' )
            // InternalFiacre.g:24657:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUntilKeyword_2_0_1_1_0()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUntilKeyword_2_0_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_1__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_1__1"
    // InternalFiacre.g:24666:1: rule__AbsencePattern__Group_2_0_1_1__1 : rule__AbsencePattern__Group_2_0_1_1__1__Impl ;
    public final void rule__AbsencePattern__Group_2_0_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24670:1: ( rule__AbsencePattern__Group_2_0_1_1__1__Impl )
            // InternalFiacre.g:24671:2: rule__AbsencePattern__Group_2_0_1_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_0_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_1__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_0_1_1__1__Impl"
    // InternalFiacre.g:24677:1: rule__AbsencePattern__Group_2_0_1_1__1__Impl : ( ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_0_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24681:1: ( ( ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 ) ) )
            // InternalFiacre.g:24682:1: ( ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 ) )
            {
            // InternalFiacre.g:24682:1: ( ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 ) )
            // InternalFiacre.g:24683:2: ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUntilAssignment_2_0_1_1_1()); 
            }
            // InternalFiacre.g:24684:2: ( rule__AbsencePattern__UntilAssignment_2_0_1_1_1 )
            // InternalFiacre.g:24684:3: rule__AbsencePattern__UntilAssignment_2_0_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__UntilAssignment_2_0_1_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUntilAssignment_2_0_1_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_0_1_1__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1__0"
    // InternalFiacre.g:24693:1: rule__AbsencePattern__Group_2_1__0 : rule__AbsencePattern__Group_2_1__0__Impl rule__AbsencePattern__Group_2_1__1 ;
    public final void rule__AbsencePattern__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24697:1: ( rule__AbsencePattern__Group_2_1__0__Impl rule__AbsencePattern__Group_2_1__1 )
            // InternalFiacre.g:24698:2: rule__AbsencePattern__Group_2_1__0__Impl rule__AbsencePattern__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_139);
            rule__AbsencePattern__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_1__0__Impl"
    // InternalFiacre.g:24705:1: rule__AbsencePattern__Group_2_1__0__Impl : ( ( rule__AbsencePattern__Group_2_1_0__0 ) ) ;
    public final void rule__AbsencePattern__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24709:1: ( ( ( rule__AbsencePattern__Group_2_1_0__0 ) ) )
            // InternalFiacre.g:24710:1: ( ( rule__AbsencePattern__Group_2_1_0__0 ) )
            {
            // InternalFiacre.g:24710:1: ( ( rule__AbsencePattern__Group_2_1_0__0 ) )
            // InternalFiacre.g:24711:2: ( rule__AbsencePattern__Group_2_1_0__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getGroup_2_1_0()); 
            }
            // InternalFiacre.g:24712:2: ( rule__AbsencePattern__Group_2_1_0__0 )
            // InternalFiacre.g:24712:3: rule__AbsencePattern__Group_2_1_0__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_0__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getGroup_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1__1"
    // InternalFiacre.g:24720:1: rule__AbsencePattern__Group_2_1__1 : rule__AbsencePattern__Group_2_1__1__Impl ;
    public final void rule__AbsencePattern__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24724:1: ( rule__AbsencePattern__Group_2_1__1__Impl )
            // InternalFiacre.g:24725:2: rule__AbsencePattern__Group_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_1__1__Impl"
    // InternalFiacre.g:24731:1: rule__AbsencePattern__Group_2_1__1__Impl : ( ( rule__AbsencePattern__Group_2_1_1__0 )? ) ;
    public final void rule__AbsencePattern__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24735:1: ( ( ( rule__AbsencePattern__Group_2_1_1__0 )? ) )
            // InternalFiacre.g:24736:1: ( ( rule__AbsencePattern__Group_2_1_1__0 )? )
            {
            // InternalFiacre.g:24736:1: ( ( rule__AbsencePattern__Group_2_1_1__0 )? )
            // InternalFiacre.g:24737:2: ( rule__AbsencePattern__Group_2_1_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getGroup_2_1_1()); 
            }
            // InternalFiacre.g:24738:2: ( rule__AbsencePattern__Group_2_1_1__0 )?
            int alt185=2;
            int LA185_0 = input.LA(1);

            if ( (LA185_0==125) ) {
                alt185=1;
            }
            switch (alt185) {
                case 1 :
                    // InternalFiacre.g:24738:3: rule__AbsencePattern__Group_2_1_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AbsencePattern__Group_2_1_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getGroup_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_0__0"
    // InternalFiacre.g:24747:1: rule__AbsencePattern__Group_2_1_0__0 : rule__AbsencePattern__Group_2_1_0__0__Impl rule__AbsencePattern__Group_2_1_0__1 ;
    public final void rule__AbsencePattern__Group_2_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24751:1: ( rule__AbsencePattern__Group_2_1_0__0__Impl rule__AbsencePattern__Group_2_1_0__1 )
            // InternalFiacre.g:24752:2: rule__AbsencePattern__Group_2_1_0__0__Impl rule__AbsencePattern__Group_2_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group_2_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_0__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_0__0__Impl"
    // InternalFiacre.g:24759:1: rule__AbsencePattern__Group_2_1_0__0__Impl : ( 'before' ) ;
    public final void rule__AbsencePattern__Group_2_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24763:1: ( ( 'before' ) )
            // InternalFiacre.g:24764:1: ( 'before' )
            {
            // InternalFiacre.g:24764:1: ( 'before' )
            // InternalFiacre.g:24765:2: 'before'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getBeforeKeyword_2_1_0_0()); 
            }
            match(input,122,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getBeforeKeyword_2_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_0__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_0__1"
    // InternalFiacre.g:24774:1: rule__AbsencePattern__Group_2_1_0__1 : rule__AbsencePattern__Group_2_1_0__1__Impl ;
    public final void rule__AbsencePattern__Group_2_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24778:1: ( rule__AbsencePattern__Group_2_1_0__1__Impl )
            // InternalFiacre.g:24779:2: rule__AbsencePattern__Group_2_1_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_0__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_0__1__Impl"
    // InternalFiacre.g:24785:1: rule__AbsencePattern__Group_2_1_0__1__Impl : ( ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24789:1: ( ( ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 ) ) )
            // InternalFiacre.g:24790:1: ( ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 ) )
            {
            // InternalFiacre.g:24790:1: ( ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 ) )
            // InternalFiacre.g:24791:2: ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getBeforeAssignment_2_1_0_1()); 
            }
            // InternalFiacre.g:24792:2: ( rule__AbsencePattern__BeforeAssignment_2_1_0_1 )
            // InternalFiacre.g:24792:3: rule__AbsencePattern__BeforeAssignment_2_1_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__BeforeAssignment_2_1_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getBeforeAssignment_2_1_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_0__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__0"
    // InternalFiacre.g:24801:1: rule__AbsencePattern__Group_2_1_1__0 : rule__AbsencePattern__Group_2_1_1__0__Impl rule__AbsencePattern__Group_2_1_1__1 ;
    public final void rule__AbsencePattern__Group_2_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24805:1: ( rule__AbsencePattern__Group_2_1_1__0__Impl rule__AbsencePattern__Group_2_1_1__1 )
            // InternalFiacre.g:24806:2: rule__AbsencePattern__Group_2_1_1__0__Impl rule__AbsencePattern__Group_2_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__AbsencePattern__Group_2_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__0__Impl"
    // InternalFiacre.g:24813:1: rule__AbsencePattern__Group_2_1_1__0__Impl : ( 'for' ) ;
    public final void rule__AbsencePattern__Group_2_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24817:1: ( ( 'for' ) )
            // InternalFiacre.g:24818:1: ( 'for' )
            {
            // InternalFiacre.g:24818:1: ( 'for' )
            // InternalFiacre.g:24819:2: 'for'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getForKeyword_2_1_1_0()); 
            }
            match(input,125,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getForKeyword_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__1"
    // InternalFiacre.g:24828:1: rule__AbsencePattern__Group_2_1_1__1 : rule__AbsencePattern__Group_2_1_1__1__Impl rule__AbsencePattern__Group_2_1_1__2 ;
    public final void rule__AbsencePattern__Group_2_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24832:1: ( rule__AbsencePattern__Group_2_1_1__1__Impl rule__AbsencePattern__Group_2_1_1__2 )
            // InternalFiacre.g:24833:2: rule__AbsencePattern__Group_2_1_1__1__Impl rule__AbsencePattern__Group_2_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__AbsencePattern__Group_2_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__1__Impl"
    // InternalFiacre.g:24840:1: rule__AbsencePattern__Group_2_1_1__1__Impl : ( ( rule__AbsencePattern__LowerAssignment_2_1_1_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24844:1: ( ( ( rule__AbsencePattern__LowerAssignment_2_1_1_1 ) ) )
            // InternalFiacre.g:24845:1: ( ( rule__AbsencePattern__LowerAssignment_2_1_1_1 ) )
            {
            // InternalFiacre.g:24845:1: ( ( rule__AbsencePattern__LowerAssignment_2_1_1_1 ) )
            // InternalFiacre.g:24846:2: ( rule__AbsencePattern__LowerAssignment_2_1_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getLowerAssignment_2_1_1_1()); 
            }
            // InternalFiacre.g:24847:2: ( rule__AbsencePattern__LowerAssignment_2_1_1_1 )
            // InternalFiacre.g:24847:3: rule__AbsencePattern__LowerAssignment_2_1_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__LowerAssignment_2_1_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getLowerAssignment_2_1_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__2"
    // InternalFiacre.g:24855:1: rule__AbsencePattern__Group_2_1_1__2 : rule__AbsencePattern__Group_2_1_1__2__Impl rule__AbsencePattern__Group_2_1_1__3 ;
    public final void rule__AbsencePattern__Group_2_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24859:1: ( rule__AbsencePattern__Group_2_1_1__2__Impl rule__AbsencePattern__Group_2_1_1__3 )
            // InternalFiacre.g:24860:2: rule__AbsencePattern__Group_2_1_1__2__Impl rule__AbsencePattern__Group_2_1_1__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__AbsencePattern__Group_2_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__2"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__2__Impl"
    // InternalFiacre.g:24867:1: rule__AbsencePattern__Group_2_1_1__2__Impl : ( ',' ) ;
    public final void rule__AbsencePattern__Group_2_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24871:1: ( ( ',' ) )
            // InternalFiacre.g:24872:1: ( ',' )
            {
            // InternalFiacre.g:24872:1: ( ',' )
            // InternalFiacre.g:24873:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getCommaKeyword_2_1_1_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getCommaKeyword_2_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__2__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__3"
    // InternalFiacre.g:24882:1: rule__AbsencePattern__Group_2_1_1__3 : rule__AbsencePattern__Group_2_1_1__3__Impl ;
    public final void rule__AbsencePattern__Group_2_1_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24886:1: ( rule__AbsencePattern__Group_2_1_1__3__Impl )
            // InternalFiacre.g:24887:2: rule__AbsencePattern__Group_2_1_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_1_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__3"


    // $ANTLR start "rule__AbsencePattern__Group_2_1_1__3__Impl"
    // InternalFiacre.g:24893:1: rule__AbsencePattern__Group_2_1_1__3__Impl : ( ( rule__AbsencePattern__UpperAssignment_2_1_1_3 ) ) ;
    public final void rule__AbsencePattern__Group_2_1_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24897:1: ( ( ( rule__AbsencePattern__UpperAssignment_2_1_1_3 ) ) )
            // InternalFiacre.g:24898:1: ( ( rule__AbsencePattern__UpperAssignment_2_1_1_3 ) )
            {
            // InternalFiacre.g:24898:1: ( ( rule__AbsencePattern__UpperAssignment_2_1_1_3 ) )
            // InternalFiacre.g:24899:2: ( rule__AbsencePattern__UpperAssignment_2_1_1_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUpperAssignment_2_1_1_3()); 
            }
            // InternalFiacre.g:24900:2: ( rule__AbsencePattern__UpperAssignment_2_1_1_3 )
            // InternalFiacre.g:24900:3: rule__AbsencePattern__UpperAssignment_2_1_1_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__UpperAssignment_2_1_1_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUpperAssignment_2_1_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_1_1__3__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__0"
    // InternalFiacre.g:24909:1: rule__AbsencePattern__Group_2_2__0 : rule__AbsencePattern__Group_2_2__0__Impl rule__AbsencePattern__Group_2_2__1 ;
    public final void rule__AbsencePattern__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24913:1: ( rule__AbsencePattern__Group_2_2__0__Impl rule__AbsencePattern__Group_2_2__1 )
            // InternalFiacre.g:24914:2: rule__AbsencePattern__Group_2_2__0__Impl rule__AbsencePattern__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__0"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__0__Impl"
    // InternalFiacre.g:24921:1: rule__AbsencePattern__Group_2_2__0__Impl : ( 'between' ) ;
    public final void rule__AbsencePattern__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24925:1: ( ( 'between' ) )
            // InternalFiacre.g:24926:1: ( 'between' )
            {
            // InternalFiacre.g:24926:1: ( 'between' )
            // InternalFiacre.g:24927:2: 'between'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getBetweenKeyword_2_2_0()); 
            }
            match(input,123,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getBetweenKeyword_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__0__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__1"
    // InternalFiacre.g:24936:1: rule__AbsencePattern__Group_2_2__1 : rule__AbsencePattern__Group_2_2__1__Impl rule__AbsencePattern__Group_2_2__2 ;
    public final void rule__AbsencePattern__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24940:1: ( rule__AbsencePattern__Group_2_2__1__Impl rule__AbsencePattern__Group_2_2__2 )
            // InternalFiacre.g:24941:2: rule__AbsencePattern__Group_2_2__1__Impl rule__AbsencePattern__Group_2_2__2
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__AbsencePattern__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__1"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__1__Impl"
    // InternalFiacre.g:24948:1: rule__AbsencePattern__Group_2_2__1__Impl : ( ( rule__AbsencePattern__MinAssignment_2_2_1 ) ) ;
    public final void rule__AbsencePattern__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24952:1: ( ( ( rule__AbsencePattern__MinAssignment_2_2_1 ) ) )
            // InternalFiacre.g:24953:1: ( ( rule__AbsencePattern__MinAssignment_2_2_1 ) )
            {
            // InternalFiacre.g:24953:1: ( ( rule__AbsencePattern__MinAssignment_2_2_1 ) )
            // InternalFiacre.g:24954:2: ( rule__AbsencePattern__MinAssignment_2_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getMinAssignment_2_2_1()); 
            }
            // InternalFiacre.g:24955:2: ( rule__AbsencePattern__MinAssignment_2_2_1 )
            // InternalFiacre.g:24955:3: rule__AbsencePattern__MinAssignment_2_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__MinAssignment_2_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getMinAssignment_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__1__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__2"
    // InternalFiacre.g:24963:1: rule__AbsencePattern__Group_2_2__2 : rule__AbsencePattern__Group_2_2__2__Impl rule__AbsencePattern__Group_2_2__3 ;
    public final void rule__AbsencePattern__Group_2_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24967:1: ( rule__AbsencePattern__Group_2_2__2__Impl rule__AbsencePattern__Group_2_2__3 )
            // InternalFiacre.g:24968:2: rule__AbsencePattern__Group_2_2__2__Impl rule__AbsencePattern__Group_2_2__3
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AbsencePattern__Group_2_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__2"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__2__Impl"
    // InternalFiacre.g:24975:1: rule__AbsencePattern__Group_2_2__2__Impl : ( 'and' ) ;
    public final void rule__AbsencePattern__Group_2_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24979:1: ( ( 'and' ) )
            // InternalFiacre.g:24980:1: ( 'and' )
            {
            // InternalFiacre.g:24980:1: ( 'and' )
            // InternalFiacre.g:24981:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAndKeyword_2_2_2()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAndKeyword_2_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__2__Impl"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__3"
    // InternalFiacre.g:24990:1: rule__AbsencePattern__Group_2_2__3 : rule__AbsencePattern__Group_2_2__3__Impl ;
    public final void rule__AbsencePattern__Group_2_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:24994:1: ( rule__AbsencePattern__Group_2_2__3__Impl )
            // InternalFiacre.g:24995:2: rule__AbsencePattern__Group_2_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__Group_2_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__3"


    // $ANTLR start "rule__AbsencePattern__Group_2_2__3__Impl"
    // InternalFiacre.g:25001:1: rule__AbsencePattern__Group_2_2__3__Impl : ( ( rule__AbsencePattern__MaxAssignment_2_2_3 ) ) ;
    public final void rule__AbsencePattern__Group_2_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25005:1: ( ( ( rule__AbsencePattern__MaxAssignment_2_2_3 ) ) )
            // InternalFiacre.g:25006:1: ( ( rule__AbsencePattern__MaxAssignment_2_2_3 ) )
            {
            // InternalFiacre.g:25006:1: ( ( rule__AbsencePattern__MaxAssignment_2_2_3 ) )
            // InternalFiacre.g:25007:2: ( rule__AbsencePattern__MaxAssignment_2_2_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getMaxAssignment_2_2_3()); 
            }
            // InternalFiacre.g:25008:2: ( rule__AbsencePattern__MaxAssignment_2_2_3 )
            // InternalFiacre.g:25008:3: rule__AbsencePattern__MaxAssignment_2_2_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AbsencePattern__MaxAssignment_2_2_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getMaxAssignment_2_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__Group_2_2__3__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group__0"
    // InternalFiacre.g:25017:1: rule__AlwaysPattern__Group__0 : rule__AlwaysPattern__Group__0__Impl rule__AlwaysPattern__Group__1 ;
    public final void rule__AlwaysPattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25021:1: ( rule__AlwaysPattern__Group__0__Impl rule__AlwaysPattern__Group__1 )
            // InternalFiacre.g:25022:2: rule__AlwaysPattern__Group__0__Impl rule__AlwaysPattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__0"


    // $ANTLR start "rule__AlwaysPattern__Group__0__Impl"
    // InternalFiacre.g:25029:1: rule__AlwaysPattern__Group__0__Impl : ( 'always' ) ;
    public final void rule__AlwaysPattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25033:1: ( ( 'always' ) )
            // InternalFiacre.g:25034:1: ( 'always' )
            {
            // InternalFiacre.g:25034:1: ( 'always' )
            // InternalFiacre.g:25035:2: 'always'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAlwaysKeyword_0()); 
            }
            match(input,126,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAlwaysKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__0__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group__1"
    // InternalFiacre.g:25044:1: rule__AlwaysPattern__Group__1 : rule__AlwaysPattern__Group__1__Impl rule__AlwaysPattern__Group__2 ;
    public final void rule__AlwaysPattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25048:1: ( rule__AlwaysPattern__Group__1__Impl rule__AlwaysPattern__Group__2 )
            // InternalFiacre.g:25049:2: rule__AlwaysPattern__Group__1__Impl rule__AlwaysPattern__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_138);
            rule__AlwaysPattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__1"


    // $ANTLR start "rule__AlwaysPattern__Group__1__Impl"
    // InternalFiacre.g:25056:1: rule__AlwaysPattern__Group__1__Impl : ( ( rule__AlwaysPattern__SubjectAssignment_1 ) ) ;
    public final void rule__AlwaysPattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25060:1: ( ( ( rule__AlwaysPattern__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:25061:1: ( ( rule__AlwaysPattern__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:25061:1: ( ( rule__AlwaysPattern__SubjectAssignment_1 ) )
            // InternalFiacre.g:25062:2: ( rule__AlwaysPattern__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:25063:2: ( rule__AlwaysPattern__SubjectAssignment_1 )
            // InternalFiacre.g:25063:3: rule__AlwaysPattern__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__1__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group__2"
    // InternalFiacre.g:25071:1: rule__AlwaysPattern__Group__2 : rule__AlwaysPattern__Group__2__Impl ;
    public final void rule__AlwaysPattern__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25075:1: ( rule__AlwaysPattern__Group__2__Impl )
            // InternalFiacre.g:25076:2: rule__AlwaysPattern__Group__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__2"


    // $ANTLR start "rule__AlwaysPattern__Group__2__Impl"
    // InternalFiacre.g:25082:1: rule__AlwaysPattern__Group__2__Impl : ( ( rule__AlwaysPattern__Alternatives_2 )? ) ;
    public final void rule__AlwaysPattern__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25086:1: ( ( ( rule__AlwaysPattern__Alternatives_2 )? ) )
            // InternalFiacre.g:25087:1: ( ( rule__AlwaysPattern__Alternatives_2 )? )
            {
            // InternalFiacre.g:25087:1: ( ( rule__AlwaysPattern__Alternatives_2 )? )
            // InternalFiacre.g:25088:2: ( rule__AlwaysPattern__Alternatives_2 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAlternatives_2()); 
            }
            // InternalFiacre.g:25089:2: ( rule__AlwaysPattern__Alternatives_2 )?
            int alt186=2;
            int LA186_0 = input.LA(1);

            if ( (LA186_0==119||(LA186_0>=122 && LA186_0<=123)) ) {
                alt186=1;
            }
            switch (alt186) {
                case 1 :
                    // InternalFiacre.g:25089:3: rule__AlwaysPattern__Alternatives_2
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AlwaysPattern__Alternatives_2();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAlternatives_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group__2__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_0__0"
    // InternalFiacre.g:25098:1: rule__AlwaysPattern__Group_2_0__0 : rule__AlwaysPattern__Group_2_0__0__Impl rule__AlwaysPattern__Group_2_0__1 ;
    public final void rule__AlwaysPattern__Group_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25102:1: ( rule__AlwaysPattern__Group_2_0__0__Impl rule__AlwaysPattern__Group_2_0__1 )
            // InternalFiacre.g:25103:2: rule__AlwaysPattern__Group_2_0__0__Impl rule__AlwaysPattern__Group_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_0__0"


    // $ANTLR start "rule__AlwaysPattern__Group_2_0__0__Impl"
    // InternalFiacre.g:25110:1: rule__AlwaysPattern__Group_2_0__0__Impl : ( 'before' ) ;
    public final void rule__AlwaysPattern__Group_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25114:1: ( ( 'before' ) )
            // InternalFiacre.g:25115:1: ( 'before' )
            {
            // InternalFiacre.g:25115:1: ( 'before' )
            // InternalFiacre.g:25116:2: 'before'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getBeforeKeyword_2_0_0()); 
            }
            match(input,122,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getBeforeKeyword_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_0__0__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_0__1"
    // InternalFiacre.g:25125:1: rule__AlwaysPattern__Group_2_0__1 : rule__AlwaysPattern__Group_2_0__1__Impl ;
    public final void rule__AlwaysPattern__Group_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25129:1: ( rule__AlwaysPattern__Group_2_0__1__Impl )
            // InternalFiacre.g:25130:2: rule__AlwaysPattern__Group_2_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_0__1"


    // $ANTLR start "rule__AlwaysPattern__Group_2_0__1__Impl"
    // InternalFiacre.g:25136:1: rule__AlwaysPattern__Group_2_0__1__Impl : ( ( rule__AlwaysPattern__BeforeAssignment_2_0_1 ) ) ;
    public final void rule__AlwaysPattern__Group_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25140:1: ( ( ( rule__AlwaysPattern__BeforeAssignment_2_0_1 ) ) )
            // InternalFiacre.g:25141:1: ( ( rule__AlwaysPattern__BeforeAssignment_2_0_1 ) )
            {
            // InternalFiacre.g:25141:1: ( ( rule__AlwaysPattern__BeforeAssignment_2_0_1 ) )
            // InternalFiacre.g:25142:2: ( rule__AlwaysPattern__BeforeAssignment_2_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getBeforeAssignment_2_0_1()); 
            }
            // InternalFiacre.g:25143:2: ( rule__AlwaysPattern__BeforeAssignment_2_0_1 )
            // InternalFiacre.g:25143:3: rule__AlwaysPattern__BeforeAssignment_2_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__BeforeAssignment_2_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getBeforeAssignment_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_0__1__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__0"
    // InternalFiacre.g:25152:1: rule__AlwaysPattern__Group_2_1__0 : rule__AlwaysPattern__Group_2_1__0__Impl rule__AlwaysPattern__Group_2_1__1 ;
    public final void rule__AlwaysPattern__Group_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25156:1: ( rule__AlwaysPattern__Group_2_1__0__Impl rule__AlwaysPattern__Group_2_1__1 )
            // InternalFiacre.g:25157:2: rule__AlwaysPattern__Group_2_1__0__Impl rule__AlwaysPattern__Group_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__0"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__0__Impl"
    // InternalFiacre.g:25164:1: rule__AlwaysPattern__Group_2_1__0__Impl : ( 'after' ) ;
    public final void rule__AlwaysPattern__Group_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25168:1: ( ( 'after' ) )
            // InternalFiacre.g:25169:1: ( 'after' )
            {
            // InternalFiacre.g:25169:1: ( 'after' )
            // InternalFiacre.g:25170:2: 'after'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAfterKeyword_2_1_0()); 
            }
            match(input,119,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAfterKeyword_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__0__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__1"
    // InternalFiacre.g:25179:1: rule__AlwaysPattern__Group_2_1__1 : rule__AlwaysPattern__Group_2_1__1__Impl rule__AlwaysPattern__Group_2_1__2 ;
    public final void rule__AlwaysPattern__Group_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25183:1: ( rule__AlwaysPattern__Group_2_1__1__Impl rule__AlwaysPattern__Group_2_1__2 )
            // InternalFiacre.g:25184:2: rule__AlwaysPattern__Group_2_1__1__Impl rule__AlwaysPattern__Group_2_1__2
            {
            pushFollow(FollowSets000.FOLLOW_140);
            rule__AlwaysPattern__Group_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__1"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__1__Impl"
    // InternalFiacre.g:25191:1: rule__AlwaysPattern__Group_2_1__1__Impl : ( ( rule__AlwaysPattern__AfterAssignment_2_1_1 ) ) ;
    public final void rule__AlwaysPattern__Group_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25195:1: ( ( ( rule__AlwaysPattern__AfterAssignment_2_1_1 ) ) )
            // InternalFiacre.g:25196:1: ( ( rule__AlwaysPattern__AfterAssignment_2_1_1 ) )
            {
            // InternalFiacre.g:25196:1: ( ( rule__AlwaysPattern__AfterAssignment_2_1_1 ) )
            // InternalFiacre.g:25197:2: ( rule__AlwaysPattern__AfterAssignment_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAfterAssignment_2_1_1()); 
            }
            // InternalFiacre.g:25198:2: ( rule__AlwaysPattern__AfterAssignment_2_1_1 )
            // InternalFiacre.g:25198:3: rule__AlwaysPattern__AfterAssignment_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__AfterAssignment_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAfterAssignment_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__1__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__2"
    // InternalFiacre.g:25206:1: rule__AlwaysPattern__Group_2_1__2 : rule__AlwaysPattern__Group_2_1__2__Impl ;
    public final void rule__AlwaysPattern__Group_2_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25210:1: ( rule__AlwaysPattern__Group_2_1__2__Impl )
            // InternalFiacre.g:25211:2: rule__AlwaysPattern__Group_2_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__2"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1__2__Impl"
    // InternalFiacre.g:25217:1: rule__AlwaysPattern__Group_2_1__2__Impl : ( ( rule__AlwaysPattern__Group_2_1_2__0 )? ) ;
    public final void rule__AlwaysPattern__Group_2_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25221:1: ( ( ( rule__AlwaysPattern__Group_2_1_2__0 )? ) )
            // InternalFiacre.g:25222:1: ( ( rule__AlwaysPattern__Group_2_1_2__0 )? )
            {
            // InternalFiacre.g:25222:1: ( ( rule__AlwaysPattern__Group_2_1_2__0 )? )
            // InternalFiacre.g:25223:2: ( rule__AlwaysPattern__Group_2_1_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getGroup_2_1_2()); 
            }
            // InternalFiacre.g:25224:2: ( rule__AlwaysPattern__Group_2_1_2__0 )?
            int alt187=2;
            int LA187_0 = input.LA(1);

            if ( (LA187_0==121) ) {
                alt187=1;
            }
            switch (alt187) {
                case 1 :
                    // InternalFiacre.g:25224:3: rule__AlwaysPattern__Group_2_1_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__AlwaysPattern__Group_2_1_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getGroup_2_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1__2__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1_2__0"
    // InternalFiacre.g:25233:1: rule__AlwaysPattern__Group_2_1_2__0 : rule__AlwaysPattern__Group_2_1_2__0__Impl rule__AlwaysPattern__Group_2_1_2__1 ;
    public final void rule__AlwaysPattern__Group_2_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25237:1: ( rule__AlwaysPattern__Group_2_1_2__0__Impl rule__AlwaysPattern__Group_2_1_2__1 )
            // InternalFiacre.g:25238:2: rule__AlwaysPattern__Group_2_1_2__0__Impl rule__AlwaysPattern__Group_2_1_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group_2_1_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_1_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1_2__0"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1_2__0__Impl"
    // InternalFiacre.g:25245:1: rule__AlwaysPattern__Group_2_1_2__0__Impl : ( 'until' ) ;
    public final void rule__AlwaysPattern__Group_2_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25249:1: ( ( 'until' ) )
            // InternalFiacre.g:25250:1: ( 'until' )
            {
            // InternalFiacre.g:25250:1: ( 'until' )
            // InternalFiacre.g:25251:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getUntilKeyword_2_1_2_0()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getUntilKeyword_2_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1_2__0__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1_2__1"
    // InternalFiacre.g:25260:1: rule__AlwaysPattern__Group_2_1_2__1 : rule__AlwaysPattern__Group_2_1_2__1__Impl ;
    public final void rule__AlwaysPattern__Group_2_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25264:1: ( rule__AlwaysPattern__Group_2_1_2__1__Impl )
            // InternalFiacre.g:25265:2: rule__AlwaysPattern__Group_2_1_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_1_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1_2__1"


    // $ANTLR start "rule__AlwaysPattern__Group_2_1_2__1__Impl"
    // InternalFiacre.g:25271:1: rule__AlwaysPattern__Group_2_1_2__1__Impl : ( ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 ) ) ;
    public final void rule__AlwaysPattern__Group_2_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25275:1: ( ( ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 ) ) )
            // InternalFiacre.g:25276:1: ( ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 ) )
            {
            // InternalFiacre.g:25276:1: ( ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 ) )
            // InternalFiacre.g:25277:2: ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getUntilAssignment_2_1_2_1()); 
            }
            // InternalFiacre.g:25278:2: ( rule__AlwaysPattern__UntilAssignment_2_1_2_1 )
            // InternalFiacre.g:25278:3: rule__AlwaysPattern__UntilAssignment_2_1_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__UntilAssignment_2_1_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getUntilAssignment_2_1_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_1_2__1__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__0"
    // InternalFiacre.g:25287:1: rule__AlwaysPattern__Group_2_2__0 : rule__AlwaysPattern__Group_2_2__0__Impl rule__AlwaysPattern__Group_2_2__1 ;
    public final void rule__AlwaysPattern__Group_2_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25291:1: ( rule__AlwaysPattern__Group_2_2__0__Impl rule__AlwaysPattern__Group_2_2__1 )
            // InternalFiacre.g:25292:2: rule__AlwaysPattern__Group_2_2__0__Impl rule__AlwaysPattern__Group_2_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group_2_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__0"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__0__Impl"
    // InternalFiacre.g:25299:1: rule__AlwaysPattern__Group_2_2__0__Impl : ( 'between' ) ;
    public final void rule__AlwaysPattern__Group_2_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25303:1: ( ( 'between' ) )
            // InternalFiacre.g:25304:1: ( 'between' )
            {
            // InternalFiacre.g:25304:1: ( 'between' )
            // InternalFiacre.g:25305:2: 'between'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getBetweenKeyword_2_2_0()); 
            }
            match(input,123,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getBetweenKeyword_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__0__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__1"
    // InternalFiacre.g:25314:1: rule__AlwaysPattern__Group_2_2__1 : rule__AlwaysPattern__Group_2_2__1__Impl rule__AlwaysPattern__Group_2_2__2 ;
    public final void rule__AlwaysPattern__Group_2_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25318:1: ( rule__AlwaysPattern__Group_2_2__1__Impl rule__AlwaysPattern__Group_2_2__2 )
            // InternalFiacre.g:25319:2: rule__AlwaysPattern__Group_2_2__1__Impl rule__AlwaysPattern__Group_2_2__2
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__AlwaysPattern__Group_2_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__1"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__1__Impl"
    // InternalFiacre.g:25326:1: rule__AlwaysPattern__Group_2_2__1__Impl : ( ( rule__AlwaysPattern__MinAssignment_2_2_1 ) ) ;
    public final void rule__AlwaysPattern__Group_2_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25330:1: ( ( ( rule__AlwaysPattern__MinAssignment_2_2_1 ) ) )
            // InternalFiacre.g:25331:1: ( ( rule__AlwaysPattern__MinAssignment_2_2_1 ) )
            {
            // InternalFiacre.g:25331:1: ( ( rule__AlwaysPattern__MinAssignment_2_2_1 ) )
            // InternalFiacre.g:25332:2: ( rule__AlwaysPattern__MinAssignment_2_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getMinAssignment_2_2_1()); 
            }
            // InternalFiacre.g:25333:2: ( rule__AlwaysPattern__MinAssignment_2_2_1 )
            // InternalFiacre.g:25333:3: rule__AlwaysPattern__MinAssignment_2_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__MinAssignment_2_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getMinAssignment_2_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__1__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__2"
    // InternalFiacre.g:25341:1: rule__AlwaysPattern__Group_2_2__2 : rule__AlwaysPattern__Group_2_2__2__Impl rule__AlwaysPattern__Group_2_2__3 ;
    public final void rule__AlwaysPattern__Group_2_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25345:1: ( rule__AlwaysPattern__Group_2_2__2__Impl rule__AlwaysPattern__Group_2_2__3 )
            // InternalFiacre.g:25346:2: rule__AlwaysPattern__Group_2_2__2__Impl rule__AlwaysPattern__Group_2_2__3
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__AlwaysPattern__Group_2_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__2"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__2__Impl"
    // InternalFiacre.g:25353:1: rule__AlwaysPattern__Group_2_2__2__Impl : ( 'and' ) ;
    public final void rule__AlwaysPattern__Group_2_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25357:1: ( ( 'and' ) )
            // InternalFiacre.g:25358:1: ( 'and' )
            {
            // InternalFiacre.g:25358:1: ( 'and' )
            // InternalFiacre.g:25359:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAndKeyword_2_2_2()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAndKeyword_2_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__2__Impl"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__3"
    // InternalFiacre.g:25368:1: rule__AlwaysPattern__Group_2_2__3 : rule__AlwaysPattern__Group_2_2__3__Impl ;
    public final void rule__AlwaysPattern__Group_2_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25372:1: ( rule__AlwaysPattern__Group_2_2__3__Impl )
            // InternalFiacre.g:25373:2: rule__AlwaysPattern__Group_2_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__Group_2_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__3"


    // $ANTLR start "rule__AlwaysPattern__Group_2_2__3__Impl"
    // InternalFiacre.g:25379:1: rule__AlwaysPattern__Group_2_2__3__Impl : ( ( rule__AlwaysPattern__MaxAssignment_2_2_3 ) ) ;
    public final void rule__AlwaysPattern__Group_2_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25383:1: ( ( ( rule__AlwaysPattern__MaxAssignment_2_2_3 ) ) )
            // InternalFiacre.g:25384:1: ( ( rule__AlwaysPattern__MaxAssignment_2_2_3 ) )
            {
            // InternalFiacre.g:25384:1: ( ( rule__AlwaysPattern__MaxAssignment_2_2_3 ) )
            // InternalFiacre.g:25385:2: ( rule__AlwaysPattern__MaxAssignment_2_2_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getMaxAssignment_2_2_3()); 
            }
            // InternalFiacre.g:25386:2: ( rule__AlwaysPattern__MaxAssignment_2_2_3 )
            // InternalFiacre.g:25386:3: rule__AlwaysPattern__MaxAssignment_2_2_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AlwaysPattern__MaxAssignment_2_2_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getMaxAssignment_2_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__Group_2_2__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group__0"
    // InternalFiacre.g:25395:1: rule__SequencePattern__Group__0 : rule__SequencePattern__Group__0__Impl rule__SequencePattern__Group__1 ;
    public final void rule__SequencePattern__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25399:1: ( rule__SequencePattern__Group__0__Impl rule__SequencePattern__Group__1 )
            // InternalFiacre.g:25400:2: rule__SequencePattern__Group__0__Impl rule__SequencePattern__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_141);
            rule__SequencePattern__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group__0"


    // $ANTLR start "rule__SequencePattern__Group__0__Impl"
    // InternalFiacre.g:25407:1: rule__SequencePattern__Group__0__Impl : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25411:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:25412:1: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:25412:1: ( ruleAtomicObservable )
            // InternalFiacre.g:25413:2: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAtomicObservableParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAtomicObservableParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group__1"
    // InternalFiacre.g:25422:1: rule__SequencePattern__Group__1 : rule__SequencePattern__Group__1__Impl ;
    public final void rule__SequencePattern__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25426:1: ( rule__SequencePattern__Group__1__Impl )
            // InternalFiacre.g:25427:2: rule__SequencePattern__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group__1"


    // $ANTLR start "rule__SequencePattern__Group__1__Impl"
    // InternalFiacre.g:25433:1: rule__SequencePattern__Group__1__Impl : ( ( rule__SequencePattern__Alternatives_1 ) ) ;
    public final void rule__SequencePattern__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25437:1: ( ( ( rule__SequencePattern__Alternatives_1 ) ) )
            // InternalFiacre.g:25438:1: ( ( rule__SequencePattern__Alternatives_1 ) )
            {
            // InternalFiacre.g:25438:1: ( ( rule__SequencePattern__Alternatives_1 ) )
            // InternalFiacre.g:25439:2: ( rule__SequencePattern__Alternatives_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:25440:2: ( rule__SequencePattern__Alternatives_1 )
            // InternalFiacre.g:25440:3: rule__SequencePattern__Alternatives_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Alternatives_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0__0"
    // InternalFiacre.g:25449:1: rule__SequencePattern__Group_1_0__0 : rule__SequencePattern__Group_1_0__0__Impl rule__SequencePattern__Group_1_0__1 ;
    public final void rule__SequencePattern__Group_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25453:1: ( rule__SequencePattern__Group_1_0__0__Impl rule__SequencePattern__Group_1_0__1 )
            // InternalFiacre.g:25454:2: rule__SequencePattern__Group_1_0__0__Impl rule__SequencePattern__Group_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0__0__Impl"
    // InternalFiacre.g:25461:1: rule__SequencePattern__Group_1_0__0__Impl : ( 'leadsto' ) ;
    public final void rule__SequencePattern__Group_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25465:1: ( ( 'leadsto' ) )
            // InternalFiacre.g:25466:1: ( 'leadsto' )
            {
            // InternalFiacre.g:25466:1: ( 'leadsto' )
            // InternalFiacre.g:25467:2: 'leadsto'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLeadstoKeyword_1_0_0()); 
            }
            match(input,127,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLeadstoKeyword_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0__1"
    // InternalFiacre.g:25476:1: rule__SequencePattern__Group_1_0__1 : rule__SequencePattern__Group_1_0__1__Impl rule__SequencePattern__Group_1_0__2 ;
    public final void rule__SequencePattern__Group_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25480:1: ( rule__SequencePattern__Group_1_0__1__Impl rule__SequencePattern__Group_1_0__2 )
            // InternalFiacre.g:25481:2: rule__SequencePattern__Group_1_0__1__Impl rule__SequencePattern__Group_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0__1__Impl"
    // InternalFiacre.g:25488:1: rule__SequencePattern__Group_1_0__1__Impl : ( () ) ;
    public final void rule__SequencePattern__Group_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25492:1: ( ( () ) )
            // InternalFiacre.g:25493:1: ( () )
            {
            // InternalFiacre.g:25493:1: ( () )
            // InternalFiacre.g:25494:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLeadsToPatternSubjectAction_1_0_1()); 
            }
            // InternalFiacre.g:25495:2: ()
            // InternalFiacre.g:25495:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLeadsToPatternSubjectAction_1_0_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0__2"
    // InternalFiacre.g:25503:1: rule__SequencePattern__Group_1_0__2 : rule__SequencePattern__Group_1_0__2__Impl rule__SequencePattern__Group_1_0__3 ;
    public final void rule__SequencePattern__Group_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25507:1: ( rule__SequencePattern__Group_1_0__2__Impl rule__SequencePattern__Group_1_0__3 )
            // InternalFiacre.g:25508:2: rule__SequencePattern__Group_1_0__2__Impl rule__SequencePattern__Group_1_0__3
            {
            pushFollow(FollowSets000.FOLLOW_142);
            rule__SequencePattern__Group_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0__2__Impl"
    // InternalFiacre.g:25515:1: rule__SequencePattern__Group_1_0__2__Impl : ( ( rule__SequencePattern__FollowerAssignment_1_0_2 ) ) ;
    public final void rule__SequencePattern__Group_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25519:1: ( ( ( rule__SequencePattern__FollowerAssignment_1_0_2 ) ) )
            // InternalFiacre.g:25520:1: ( ( rule__SequencePattern__FollowerAssignment_1_0_2 ) )
            {
            // InternalFiacre.g:25520:1: ( ( rule__SequencePattern__FollowerAssignment_1_0_2 ) )
            // InternalFiacre.g:25521:2: ( rule__SequencePattern__FollowerAssignment_1_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getFollowerAssignment_1_0_2()); 
            }
            // InternalFiacre.g:25522:2: ( rule__SequencePattern__FollowerAssignment_1_0_2 )
            // InternalFiacre.g:25522:3: rule__SequencePattern__FollowerAssignment_1_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__FollowerAssignment_1_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getFollowerAssignment_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0__3"
    // InternalFiacre.g:25530:1: rule__SequencePattern__Group_1_0__3 : rule__SequencePattern__Group_1_0__3__Impl ;
    public final void rule__SequencePattern__Group_1_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25534:1: ( rule__SequencePattern__Group_1_0__3__Impl )
            // InternalFiacre.g:25535:2: rule__SequencePattern__Group_1_0__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__3"


    // $ANTLR start "rule__SequencePattern__Group_1_0__3__Impl"
    // InternalFiacre.g:25541:1: rule__SequencePattern__Group_1_0__3__Impl : ( ( rule__SequencePattern__Alternatives_1_0_3 )? ) ;
    public final void rule__SequencePattern__Group_1_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25545:1: ( ( ( rule__SequencePattern__Alternatives_1_0_3 )? ) )
            // InternalFiacre.g:25546:1: ( ( rule__SequencePattern__Alternatives_1_0_3 )? )
            {
            // InternalFiacre.g:25546:1: ( ( rule__SequencePattern__Alternatives_1_0_3 )? )
            // InternalFiacre.g:25547:2: ( rule__SequencePattern__Alternatives_1_0_3 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAlternatives_1_0_3()); 
            }
            // InternalFiacre.g:25548:2: ( rule__SequencePattern__Alternatives_1_0_3 )?
            int alt188=2;
            int LA188_0 = input.LA(1);

            if ( ((LA188_0>=119 && LA188_0<=120)||(LA188_0>=122 && LA188_0<=123)) ) {
                alt188=1;
            }
            switch (alt188) {
                case 1 :
                    // InternalFiacre.g:25548:3: rule__SequencePattern__Alternatives_1_0_3
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Alternatives_1_0_3();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAlternatives_1_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__0"
    // InternalFiacre.g:25557:1: rule__SequencePattern__Group_1_0_3_0__0 : rule__SequencePattern__Group_1_0_3_0__0__Impl rule__SequencePattern__Group_1_0_3_0__1 ;
    public final void rule__SequencePattern__Group_1_0_3_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25561:1: ( rule__SequencePattern__Group_1_0_3_0__0__Impl rule__SequencePattern__Group_1_0_3_0__1 )
            // InternalFiacre.g:25562:2: rule__SequencePattern__Group_1_0_3_0__0__Impl rule__SequencePattern__Group_1_0_3_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0_3_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__0__Impl"
    // InternalFiacre.g:25569:1: rule__SequencePattern__Group_1_0_3_0__0__Impl : ( 'before' ) ;
    public final void rule__SequencePattern__Group_1_0_3_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25573:1: ( ( 'before' ) )
            // InternalFiacre.g:25574:1: ( 'before' )
            {
            // InternalFiacre.g:25574:1: ( 'before' )
            // InternalFiacre.g:25575:2: 'before'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeKeyword_1_0_3_0_0()); 
            }
            match(input,122,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeKeyword_1_0_3_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__1"
    // InternalFiacre.g:25584:1: rule__SequencePattern__Group_1_0_3_0__1 : rule__SequencePattern__Group_1_0_3_0__1__Impl rule__SequencePattern__Group_1_0_3_0__2 ;
    public final void rule__SequencePattern__Group_1_0_3_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25588:1: ( rule__SequencePattern__Group_1_0_3_0__1__Impl rule__SequencePattern__Group_1_0_3_0__2 )
            // InternalFiacre.g:25589:2: rule__SequencePattern__Group_1_0_3_0__1__Impl rule__SequencePattern__Group_1_0_3_0__2
            {
            pushFollow(FollowSets000.FOLLOW_137);
            rule__SequencePattern__Group_1_0_3_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__1__Impl"
    // InternalFiacre.g:25596:1: rule__SequencePattern__Group_1_0_3_0__1__Impl : ( ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25600:1: ( ( ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 ) ) )
            // InternalFiacre.g:25601:1: ( ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 ) )
            {
            // InternalFiacre.g:25601:1: ( ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 ) )
            // InternalFiacre.g:25602:2: ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeAssignment_1_0_3_0_1()); 
            }
            // InternalFiacre.g:25603:2: ( rule__SequencePattern__BeforeAssignment_1_0_3_0_1 )
            // InternalFiacre.g:25603:3: rule__SequencePattern__BeforeAssignment_1_0_3_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__BeforeAssignment_1_0_3_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeAssignment_1_0_3_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__2"
    // InternalFiacre.g:25611:1: rule__SequencePattern__Group_1_0_3_0__2 : rule__SequencePattern__Group_1_0_3_0__2__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25615:1: ( rule__SequencePattern__Group_1_0_3_0__2__Impl )
            // InternalFiacre.g:25616:2: rule__SequencePattern__Group_1_0_3_0__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0__2__Impl"
    // InternalFiacre.g:25622:1: rule__SequencePattern__Group_1_0_3_0__2__Impl : ( ( rule__SequencePattern__Group_1_0_3_0_2__0 )? ) ;
    public final void rule__SequencePattern__Group_1_0_3_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25626:1: ( ( ( rule__SequencePattern__Group_1_0_3_0_2__0 )? ) )
            // InternalFiacre.g:25627:1: ( ( rule__SequencePattern__Group_1_0_3_0_2__0 )? )
            {
            // InternalFiacre.g:25627:1: ( ( rule__SequencePattern__Group_1_0_3_0_2__0 )? )
            // InternalFiacre.g:25628:2: ( rule__SequencePattern__Group_1_0_3_0_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_0_2()); 
            }
            // InternalFiacre.g:25629:2: ( rule__SequencePattern__Group_1_0_3_0_2__0 )?
            int alt189=2;
            int LA189_0 = input.LA(1);

            if ( (LA189_0==120) ) {
                alt189=1;
            }
            switch (alt189) {
                case 1 :
                    // InternalFiacre.g:25629:3: rule__SequencePattern__Group_1_0_3_0_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_0_3_0_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getGroup_1_0_3_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__0"
    // InternalFiacre.g:25638:1: rule__SequencePattern__Group_1_0_3_0_2__0 : rule__SequencePattern__Group_1_0_3_0_2__0__Impl rule__SequencePattern__Group_1_0_3_0_2__1 ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25642:1: ( rule__SequencePattern__Group_1_0_3_0_2__0__Impl rule__SequencePattern__Group_1_0_3_0_2__1 )
            // InternalFiacre.g:25643:2: rule__SequencePattern__Group_1_0_3_0_2__0__Impl rule__SequencePattern__Group_1_0_3_0_2__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__SequencePattern__Group_1_0_3_0_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__0__Impl"
    // InternalFiacre.g:25650:1: rule__SequencePattern__Group_1_0_3_0_2__0__Impl : ( 'within' ) ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25654:1: ( ( 'within' ) )
            // InternalFiacre.g:25655:1: ( 'within' )
            {
            // InternalFiacre.g:25655:1: ( 'within' )
            // InternalFiacre.g:25656:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_0_2_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__1"
    // InternalFiacre.g:25665:1: rule__SequencePattern__Group_1_0_3_0_2__1 : rule__SequencePattern__Group_1_0_3_0_2__1__Impl rule__SequencePattern__Group_1_0_3_0_2__2 ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25669:1: ( rule__SequencePattern__Group_1_0_3_0_2__1__Impl rule__SequencePattern__Group_1_0_3_0_2__2 )
            // InternalFiacre.g:25670:2: rule__SequencePattern__Group_1_0_3_0_2__1__Impl rule__SequencePattern__Group_1_0_3_0_2__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__SequencePattern__Group_1_0_3_0_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__1__Impl"
    // InternalFiacre.g:25677:1: rule__SequencePattern__Group_1_0_3_0_2__1__Impl : ( ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25681:1: ( ( ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 ) ) )
            // InternalFiacre.g:25682:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 ) )
            {
            // InternalFiacre.g:25682:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 ) )
            // InternalFiacre.g:25683:2: ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_0_2_1()); 
            }
            // InternalFiacre.g:25684:2: ( rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 )
            // InternalFiacre.g:25684:3: rule__SequencePattern__LowerAssignment_1_0_3_0_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__LowerAssignment_1_0_3_0_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_0_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__2"
    // InternalFiacre.g:25692:1: rule__SequencePattern__Group_1_0_3_0_2__2 : rule__SequencePattern__Group_1_0_3_0_2__2__Impl rule__SequencePattern__Group_1_0_3_0_2__3 ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25696:1: ( rule__SequencePattern__Group_1_0_3_0_2__2__Impl rule__SequencePattern__Group_1_0_3_0_2__3 )
            // InternalFiacre.g:25697:2: rule__SequencePattern__Group_1_0_3_0_2__2__Impl rule__SequencePattern__Group_1_0_3_0_2__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__SequencePattern__Group_1_0_3_0_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__2__Impl"
    // InternalFiacre.g:25704:1: rule__SequencePattern__Group_1_0_3_0_2__2__Impl : ( ',' ) ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25708:1: ( ( ',' ) )
            // InternalFiacre.g:25709:1: ( ',' )
            {
            // InternalFiacre.g:25709:1: ( ',' )
            // InternalFiacre.g:25710:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_0_2_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_0_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__3"
    // InternalFiacre.g:25719:1: rule__SequencePattern__Group_1_0_3_0_2__3 : rule__SequencePattern__Group_1_0_3_0_2__3__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25723:1: ( rule__SequencePattern__Group_1_0_3_0_2__3__Impl )
            // InternalFiacre.g:25724:2: rule__SequencePattern__Group_1_0_3_0_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_0_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__3"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_0_2__3__Impl"
    // InternalFiacre.g:25730:1: rule__SequencePattern__Group_1_0_3_0_2__3__Impl : ( ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_0_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25734:1: ( ( ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 ) ) )
            // InternalFiacre.g:25735:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 ) )
            {
            // InternalFiacre.g:25735:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 ) )
            // InternalFiacre.g:25736:2: ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_0_2_3()); 
            }
            // InternalFiacre.g:25737:2: ( rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 )
            // InternalFiacre.g:25737:3: rule__SequencePattern__UpperAssignment_1_0_3_0_2_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__UpperAssignment_1_0_3_0_2_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_0_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_0_2__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__0"
    // InternalFiacre.g:25746:1: rule__SequencePattern__Group_1_0_3_1__0 : rule__SequencePattern__Group_1_0_3_1__0__Impl rule__SequencePattern__Group_1_0_3_1__1 ;
    public final void rule__SequencePattern__Group_1_0_3_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25750:1: ( rule__SequencePattern__Group_1_0_3_1__0__Impl rule__SequencePattern__Group_1_0_3_1__1 )
            // InternalFiacre.g:25751:2: rule__SequencePattern__Group_1_0_3_1__0__Impl rule__SequencePattern__Group_1_0_3_1__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__SequencePattern__Group_1_0_3_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__0__Impl"
    // InternalFiacre.g:25758:1: rule__SequencePattern__Group_1_0_3_1__0__Impl : ( 'within' ) ;
    public final void rule__SequencePattern__Group_1_0_3_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25762:1: ( ( 'within' ) )
            // InternalFiacre.g:25763:1: ( 'within' )
            {
            // InternalFiacre.g:25763:1: ( 'within' )
            // InternalFiacre.g:25764:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_1_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__1"
    // InternalFiacre.g:25773:1: rule__SequencePattern__Group_1_0_3_1__1 : rule__SequencePattern__Group_1_0_3_1__1__Impl rule__SequencePattern__Group_1_0_3_1__2 ;
    public final void rule__SequencePattern__Group_1_0_3_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25777:1: ( rule__SequencePattern__Group_1_0_3_1__1__Impl rule__SequencePattern__Group_1_0_3_1__2 )
            // InternalFiacre.g:25778:2: rule__SequencePattern__Group_1_0_3_1__1__Impl rule__SequencePattern__Group_1_0_3_1__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__SequencePattern__Group_1_0_3_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__1__Impl"
    // InternalFiacre.g:25785:1: rule__SequencePattern__Group_1_0_3_1__1__Impl : ( ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25789:1: ( ( ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 ) ) )
            // InternalFiacre.g:25790:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 ) )
            {
            // InternalFiacre.g:25790:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 ) )
            // InternalFiacre.g:25791:2: ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_1_1()); 
            }
            // InternalFiacre.g:25792:2: ( rule__SequencePattern__LowerAssignment_1_0_3_1_1 )
            // InternalFiacre.g:25792:3: rule__SequencePattern__LowerAssignment_1_0_3_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__LowerAssignment_1_0_3_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__2"
    // InternalFiacre.g:25800:1: rule__SequencePattern__Group_1_0_3_1__2 : rule__SequencePattern__Group_1_0_3_1__2__Impl rule__SequencePattern__Group_1_0_3_1__3 ;
    public final void rule__SequencePattern__Group_1_0_3_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25804:1: ( rule__SequencePattern__Group_1_0_3_1__2__Impl rule__SequencePattern__Group_1_0_3_1__3 )
            // InternalFiacre.g:25805:2: rule__SequencePattern__Group_1_0_3_1__2__Impl rule__SequencePattern__Group_1_0_3_1__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__SequencePattern__Group_1_0_3_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__2__Impl"
    // InternalFiacre.g:25812:1: rule__SequencePattern__Group_1_0_3_1__2__Impl : ( ',' ) ;
    public final void rule__SequencePattern__Group_1_0_3_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25816:1: ( ( ',' ) )
            // InternalFiacre.g:25817:1: ( ',' )
            {
            // InternalFiacre.g:25817:1: ( ',' )
            // InternalFiacre.g:25818:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_1_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__3"
    // InternalFiacre.g:25827:1: rule__SequencePattern__Group_1_0_3_1__3 : rule__SequencePattern__Group_1_0_3_1__3__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25831:1: ( rule__SequencePattern__Group_1_0_3_1__3__Impl )
            // InternalFiacre.g:25832:2: rule__SequencePattern__Group_1_0_3_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__3"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_1__3__Impl"
    // InternalFiacre.g:25838:1: rule__SequencePattern__Group_1_0_3_1__3__Impl : ( ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25842:1: ( ( ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 ) ) )
            // InternalFiacre.g:25843:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 ) )
            {
            // InternalFiacre.g:25843:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 ) )
            // InternalFiacre.g:25844:2: ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_1_3()); 
            }
            // InternalFiacre.g:25845:2: ( rule__SequencePattern__UpperAssignment_1_0_3_1_3 )
            // InternalFiacre.g:25845:3: rule__SequencePattern__UpperAssignment_1_0_3_1_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__UpperAssignment_1_0_3_1_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_1__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__0"
    // InternalFiacre.g:25854:1: rule__SequencePattern__Group_1_0_3_2__0 : rule__SequencePattern__Group_1_0_3_2__0__Impl rule__SequencePattern__Group_1_0_3_2__1 ;
    public final void rule__SequencePattern__Group_1_0_3_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25858:1: ( rule__SequencePattern__Group_1_0_3_2__0__Impl rule__SequencePattern__Group_1_0_3_2__1 )
            // InternalFiacre.g:25859:2: rule__SequencePattern__Group_1_0_3_2__0__Impl rule__SequencePattern__Group_1_0_3_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0_3_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__0__Impl"
    // InternalFiacre.g:25866:1: rule__SequencePattern__Group_1_0_3_2__0__Impl : ( 'after' ) ;
    public final void rule__SequencePattern__Group_1_0_3_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25870:1: ( ( 'after' ) )
            // InternalFiacre.g:25871:1: ( 'after' )
            {
            // InternalFiacre.g:25871:1: ( 'after' )
            // InternalFiacre.g:25872:2: 'after'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterKeyword_1_0_3_2_0()); 
            }
            match(input,119,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterKeyword_1_0_3_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__1"
    // InternalFiacre.g:25881:1: rule__SequencePattern__Group_1_0_3_2__1 : rule__SequencePattern__Group_1_0_3_2__1__Impl rule__SequencePattern__Group_1_0_3_2__2 ;
    public final void rule__SequencePattern__Group_1_0_3_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25885:1: ( rule__SequencePattern__Group_1_0_3_2__1__Impl rule__SequencePattern__Group_1_0_3_2__2 )
            // InternalFiacre.g:25886:2: rule__SequencePattern__Group_1_0_3_2__1__Impl rule__SequencePattern__Group_1_0_3_2__2
            {
            pushFollow(FollowSets000.FOLLOW_136);
            rule__SequencePattern__Group_1_0_3_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__1__Impl"
    // InternalFiacre.g:25893:1: rule__SequencePattern__Group_1_0_3_2__1__Impl : ( ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25897:1: ( ( ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 ) ) )
            // InternalFiacre.g:25898:1: ( ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 ) )
            {
            // InternalFiacre.g:25898:1: ( ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 ) )
            // InternalFiacre.g:25899:2: ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterAssignment_1_0_3_2_1()); 
            }
            // InternalFiacre.g:25900:2: ( rule__SequencePattern__AfterAssignment_1_0_3_2_1 )
            // InternalFiacre.g:25900:3: rule__SequencePattern__AfterAssignment_1_0_3_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__AfterAssignment_1_0_3_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterAssignment_1_0_3_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__2"
    // InternalFiacre.g:25908:1: rule__SequencePattern__Group_1_0_3_2__2 : rule__SequencePattern__Group_1_0_3_2__2__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25912:1: ( rule__SequencePattern__Group_1_0_3_2__2__Impl )
            // InternalFiacre.g:25913:2: rule__SequencePattern__Group_1_0_3_2__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2__2__Impl"
    // InternalFiacre.g:25919:1: rule__SequencePattern__Group_1_0_3_2__2__Impl : ( ( rule__SequencePattern__Alternatives_1_0_3_2_2 )? ) ;
    public final void rule__SequencePattern__Group_1_0_3_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25923:1: ( ( ( rule__SequencePattern__Alternatives_1_0_3_2_2 )? ) )
            // InternalFiacre.g:25924:1: ( ( rule__SequencePattern__Alternatives_1_0_3_2_2 )? )
            {
            // InternalFiacre.g:25924:1: ( ( rule__SequencePattern__Alternatives_1_0_3_2_2 )? )
            // InternalFiacre.g:25925:2: ( rule__SequencePattern__Alternatives_1_0_3_2_2 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAlternatives_1_0_3_2_2()); 
            }
            // InternalFiacre.g:25926:2: ( rule__SequencePattern__Alternatives_1_0_3_2_2 )?
            int alt190=2;
            int LA190_0 = input.LA(1);

            if ( ((LA190_0>=120 && LA190_0<=121)) ) {
                alt190=1;
            }
            switch (alt190) {
                case 1 :
                    // InternalFiacre.g:25926:3: rule__SequencePattern__Alternatives_1_0_3_2_2
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Alternatives_1_0_3_2_2();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAlternatives_1_0_3_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__0"
    // InternalFiacre.g:25935:1: rule__SequencePattern__Group_1_0_3_2_2_0__0 : rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl rule__SequencePattern__Group_1_0_3_2_2_0__1 ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25939:1: ( rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl rule__SequencePattern__Group_1_0_3_2_2_0__1 )
            // InternalFiacre.g:25940:2: rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl rule__SequencePattern__Group_1_0_3_2_2_0__1
            {
            pushFollow(FollowSets000.FOLLOW_47);
            rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl"
    // InternalFiacre.g:25947:1: rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl : ( 'within' ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25951:1: ( ( 'within' ) )
            // InternalFiacre.g:25952:1: ( 'within' )
            {
            // InternalFiacre.g:25952:1: ( 'within' )
            // InternalFiacre.g:25953:2: 'within'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_2_2_0_0()); 
            }
            match(input,120,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getWithinKeyword_1_0_3_2_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__1"
    // InternalFiacre.g:25962:1: rule__SequencePattern__Group_1_0_3_2_2_0__1 : rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl rule__SequencePattern__Group_1_0_3_2_2_0__2 ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25966:1: ( rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl rule__SequencePattern__Group_1_0_3_2_2_0__2 )
            // InternalFiacre.g:25967:2: rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl rule__SequencePattern__Group_1_0_3_2_2_0__2
            {
            pushFollow(FollowSets000.FOLLOW_19);
            rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl"
    // InternalFiacre.g:25974:1: rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl : ( ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25978:1: ( ( ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 ) ) )
            // InternalFiacre.g:25979:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 ) )
            {
            // InternalFiacre.g:25979:1: ( ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 ) )
            // InternalFiacre.g:25980:2: ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_2_2_0_1()); 
            }
            // InternalFiacre.g:25981:2: ( rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 )
            // InternalFiacre.g:25981:3: rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerAssignment_1_0_3_2_2_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__2"
    // InternalFiacre.g:25989:1: rule__SequencePattern__Group_1_0_3_2_2_0__2 : rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl rule__SequencePattern__Group_1_0_3_2_2_0__3 ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:25993:1: ( rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl rule__SequencePattern__Group_1_0_3_2_2_0__3 )
            // InternalFiacre.g:25994:2: rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl rule__SequencePattern__Group_1_0_3_2_2_0__3
            {
            pushFollow(FollowSets000.FOLLOW_48);
            rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl"
    // InternalFiacre.g:26001:1: rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl : ( ',' ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26005:1: ( ( ',' ) )
            // InternalFiacre.g:26006:1: ( ',' )
            {
            // InternalFiacre.g:26006:1: ( ',' )
            // InternalFiacre.g:26007:2: ','
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_2_2_0_2()); 
            }
            match(input,24,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getCommaKeyword_1_0_3_2_2_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__3"
    // InternalFiacre.g:26016:1: rule__SequencePattern__Group_1_0_3_2_2_0__3 : rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26020:1: ( rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl )
            // InternalFiacre.g:26021:2: rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__3"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl"
    // InternalFiacre.g:26027:1: rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl : ( ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26031:1: ( ( ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 ) ) )
            // InternalFiacre.g:26032:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 ) )
            {
            // InternalFiacre.g:26032:1: ( ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 ) )
            // InternalFiacre.g:26033:2: ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_2_2_0_3()); 
            }
            // InternalFiacre.g:26034:2: ( rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 )
            // InternalFiacre.g:26034:3: rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperAssignment_1_0_3_2_2_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_0__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_1__0"
    // InternalFiacre.g:26043:1: rule__SequencePattern__Group_1_0_3_2_2_1__0 : rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl rule__SequencePattern__Group_1_0_3_2_2_1__1 ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26047:1: ( rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl rule__SequencePattern__Group_1_0_3_2_2_1__1 )
            // InternalFiacre.g:26048:2: rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl rule__SequencePattern__Group_1_0_3_2_2_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_1__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl"
    // InternalFiacre.g:26055:1: rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl : ( 'until' ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26059:1: ( ( 'until' ) )
            // InternalFiacre.g:26060:1: ( 'until' )
            {
            // InternalFiacre.g:26060:1: ( 'until' )
            // InternalFiacre.g:26061:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilKeyword_1_0_3_2_2_1_0()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilKeyword_1_0_3_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_1__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_1__1"
    // InternalFiacre.g:26070:1: rule__SequencePattern__Group_1_0_3_2_2_1__1 : rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26074:1: ( rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl )
            // InternalFiacre.g:26075:2: rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_1__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl"
    // InternalFiacre.g:26081:1: rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl : ( ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26085:1: ( ( ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 ) ) )
            // InternalFiacre.g:26086:1: ( ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 ) )
            {
            // InternalFiacre.g:26086:1: ( ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 ) )
            // InternalFiacre.g:26087:2: ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilAssignment_1_0_3_2_2_1_1()); 
            }
            // InternalFiacre.g:26088:2: ( rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 )
            // InternalFiacre.g:26088:3: rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilAssignment_1_0_3_2_2_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_2_2_1__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__0"
    // InternalFiacre.g:26097:1: rule__SequencePattern__Group_1_0_3_3__0 : rule__SequencePattern__Group_1_0_3_3__0__Impl rule__SequencePattern__Group_1_0_3_3__1 ;
    public final void rule__SequencePattern__Group_1_0_3_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26101:1: ( rule__SequencePattern__Group_1_0_3_3__0__Impl rule__SequencePattern__Group_1_0_3_3__1 )
            // InternalFiacre.g:26102:2: rule__SequencePattern__Group_1_0_3_3__0__Impl rule__SequencePattern__Group_1_0_3_3__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0_3_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__0"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__0__Impl"
    // InternalFiacre.g:26109:1: rule__SequencePattern__Group_1_0_3_3__0__Impl : ( 'between' ) ;
    public final void rule__SequencePattern__Group_1_0_3_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26113:1: ( ( 'between' ) )
            // InternalFiacre.g:26114:1: ( 'between' )
            {
            // InternalFiacre.g:26114:1: ( 'between' )
            // InternalFiacre.g:26115:2: 'between'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBetweenKeyword_1_0_3_3_0()); 
            }
            match(input,123,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBetweenKeyword_1_0_3_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__1"
    // InternalFiacre.g:26124:1: rule__SequencePattern__Group_1_0_3_3__1 : rule__SequencePattern__Group_1_0_3_3__1__Impl rule__SequencePattern__Group_1_0_3_3__2 ;
    public final void rule__SequencePattern__Group_1_0_3_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26128:1: ( rule__SequencePattern__Group_1_0_3_3__1__Impl rule__SequencePattern__Group_1_0_3_3__2 )
            // InternalFiacre.g:26129:2: rule__SequencePattern__Group_1_0_3_3__1__Impl rule__SequencePattern__Group_1_0_3_3__2
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__SequencePattern__Group_1_0_3_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_3__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__1"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__1__Impl"
    // InternalFiacre.g:26136:1: rule__SequencePattern__Group_1_0_3_3__1__Impl : ( ( rule__SequencePattern__MinAssignment_1_0_3_3_1 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26140:1: ( ( ( rule__SequencePattern__MinAssignment_1_0_3_3_1 ) ) )
            // InternalFiacre.g:26141:1: ( ( rule__SequencePattern__MinAssignment_1_0_3_3_1 ) )
            {
            // InternalFiacre.g:26141:1: ( ( rule__SequencePattern__MinAssignment_1_0_3_3_1 ) )
            // InternalFiacre.g:26142:2: ( rule__SequencePattern__MinAssignment_1_0_3_3_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMinAssignment_1_0_3_3_1()); 
            }
            // InternalFiacre.g:26143:2: ( rule__SequencePattern__MinAssignment_1_0_3_3_1 )
            // InternalFiacre.g:26143:3: rule__SequencePattern__MinAssignment_1_0_3_3_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__MinAssignment_1_0_3_3_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMinAssignment_1_0_3_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__2"
    // InternalFiacre.g:26151:1: rule__SequencePattern__Group_1_0_3_3__2 : rule__SequencePattern__Group_1_0_3_3__2__Impl rule__SequencePattern__Group_1_0_3_3__3 ;
    public final void rule__SequencePattern__Group_1_0_3_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26155:1: ( rule__SequencePattern__Group_1_0_3_3__2__Impl rule__SequencePattern__Group_1_0_3_3__3 )
            // InternalFiacre.g:26156:2: rule__SequencePattern__Group_1_0_3_3__2__Impl rule__SequencePattern__Group_1_0_3_3__3
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_0_3_3__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_3__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__2"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__2__Impl"
    // InternalFiacre.g:26163:1: rule__SequencePattern__Group_1_0_3_3__2__Impl : ( 'and' ) ;
    public final void rule__SequencePattern__Group_1_0_3_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26167:1: ( ( 'and' ) )
            // InternalFiacre.g:26168:1: ( 'and' )
            {
            // InternalFiacre.g:26168:1: ( 'and' )
            // InternalFiacre.g:26169:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAndKeyword_1_0_3_3_2()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAndKeyword_1_0_3_3_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__3"
    // InternalFiacre.g:26178:1: rule__SequencePattern__Group_1_0_3_3__3 : rule__SequencePattern__Group_1_0_3_3__3__Impl ;
    public final void rule__SequencePattern__Group_1_0_3_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26182:1: ( rule__SequencePattern__Group_1_0_3_3__3__Impl )
            // InternalFiacre.g:26183:2: rule__SequencePattern__Group_1_0_3_3__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_0_3_3__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__3"


    // $ANTLR start "rule__SequencePattern__Group_1_0_3_3__3__Impl"
    // InternalFiacre.g:26189:1: rule__SequencePattern__Group_1_0_3_3__3__Impl : ( ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 ) ) ;
    public final void rule__SequencePattern__Group_1_0_3_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26193:1: ( ( ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 ) ) )
            // InternalFiacre.g:26194:1: ( ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 ) )
            {
            // InternalFiacre.g:26194:1: ( ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 ) )
            // InternalFiacre.g:26195:2: ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMaxAssignment_1_0_3_3_3()); 
            }
            // InternalFiacre.g:26196:2: ( rule__SequencePattern__MaxAssignment_1_0_3_3_3 )
            // InternalFiacre.g:26196:3: rule__SequencePattern__MaxAssignment_1_0_3_3_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__MaxAssignment_1_0_3_3_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMaxAssignment_1_0_3_3_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_0_3_3__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1__0"
    // InternalFiacre.g:26205:1: rule__SequencePattern__Group_1_1__0 : rule__SequencePattern__Group_1_1__0__Impl rule__SequencePattern__Group_1_1__1 ;
    public final void rule__SequencePattern__Group_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26209:1: ( rule__SequencePattern__Group_1_1__0__Impl rule__SequencePattern__Group_1_1__1 )
            // InternalFiacre.g:26210:2: rule__SequencePattern__Group_1_1__0__Impl rule__SequencePattern__Group_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__0"


    // $ANTLR start "rule__SequencePattern__Group_1_1__0__Impl"
    // InternalFiacre.g:26217:1: rule__SequencePattern__Group_1_1__0__Impl : ( 'precedes' ) ;
    public final void rule__SequencePattern__Group_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26221:1: ( ( 'precedes' ) )
            // InternalFiacre.g:26222:1: ( 'precedes' )
            {
            // InternalFiacre.g:26222:1: ( 'precedes' )
            // InternalFiacre.g:26223:2: 'precedes'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getPrecedesKeyword_1_1_0()); 
            }
            match(input,128,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getPrecedesKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1__1"
    // InternalFiacre.g:26232:1: rule__SequencePattern__Group_1_1__1 : rule__SequencePattern__Group_1_1__1__Impl rule__SequencePattern__Group_1_1__2 ;
    public final void rule__SequencePattern__Group_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26236:1: ( rule__SequencePattern__Group_1_1__1__Impl rule__SequencePattern__Group_1_1__2 )
            // InternalFiacre.g:26237:2: rule__SequencePattern__Group_1_1__1__Impl rule__SequencePattern__Group_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__1"


    // $ANTLR start "rule__SequencePattern__Group_1_1__1__Impl"
    // InternalFiacre.g:26244:1: rule__SequencePattern__Group_1_1__1__Impl : ( () ) ;
    public final void rule__SequencePattern__Group_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26248:1: ( ( () ) )
            // InternalFiacre.g:26249:1: ( () )
            {
            // InternalFiacre.g:26249:1: ( () )
            // InternalFiacre.g:26250:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getPrecedesPatternSubjectAction_1_1_1()); 
            }
            // InternalFiacre.g:26251:2: ()
            // InternalFiacre.g:26251:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getPrecedesPatternSubjectAction_1_1_1()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1__2"
    // InternalFiacre.g:26259:1: rule__SequencePattern__Group_1_1__2 : rule__SequencePattern__Group_1_1__2__Impl rule__SequencePattern__Group_1_1__3 ;
    public final void rule__SequencePattern__Group_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26263:1: ( rule__SequencePattern__Group_1_1__2__Impl rule__SequencePattern__Group_1_1__3 )
            // InternalFiacre.g:26264:2: rule__SequencePattern__Group_1_1__2__Impl rule__SequencePattern__Group_1_1__3
            {
            pushFollow(FollowSets000.FOLLOW_138);
            rule__SequencePattern__Group_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__2"


    // $ANTLR start "rule__SequencePattern__Group_1_1__2__Impl"
    // InternalFiacre.g:26271:1: rule__SequencePattern__Group_1_1__2__Impl : ( ( rule__SequencePattern__FollowerAssignment_1_1_2 ) ) ;
    public final void rule__SequencePattern__Group_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26275:1: ( ( ( rule__SequencePattern__FollowerAssignment_1_1_2 ) ) )
            // InternalFiacre.g:26276:1: ( ( rule__SequencePattern__FollowerAssignment_1_1_2 ) )
            {
            // InternalFiacre.g:26276:1: ( ( rule__SequencePattern__FollowerAssignment_1_1_2 ) )
            // InternalFiacre.g:26277:2: ( rule__SequencePattern__FollowerAssignment_1_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getFollowerAssignment_1_1_2()); 
            }
            // InternalFiacre.g:26278:2: ( rule__SequencePattern__FollowerAssignment_1_1_2 )
            // InternalFiacre.g:26278:3: rule__SequencePattern__FollowerAssignment_1_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__FollowerAssignment_1_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getFollowerAssignment_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1__3"
    // InternalFiacre.g:26286:1: rule__SequencePattern__Group_1_1__3 : rule__SequencePattern__Group_1_1__3__Impl ;
    public final void rule__SequencePattern__Group_1_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26290:1: ( rule__SequencePattern__Group_1_1__3__Impl )
            // InternalFiacre.g:26291:2: rule__SequencePattern__Group_1_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__3"


    // $ANTLR start "rule__SequencePattern__Group_1_1__3__Impl"
    // InternalFiacre.g:26297:1: rule__SequencePattern__Group_1_1__3__Impl : ( ( rule__SequencePattern__Alternatives_1_1_3 )? ) ;
    public final void rule__SequencePattern__Group_1_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26301:1: ( ( ( rule__SequencePattern__Alternatives_1_1_3 )? ) )
            // InternalFiacre.g:26302:1: ( ( rule__SequencePattern__Alternatives_1_1_3 )? )
            {
            // InternalFiacre.g:26302:1: ( ( rule__SequencePattern__Alternatives_1_1_3 )? )
            // InternalFiacre.g:26303:2: ( rule__SequencePattern__Alternatives_1_1_3 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAlternatives_1_1_3()); 
            }
            // InternalFiacre.g:26304:2: ( rule__SequencePattern__Alternatives_1_1_3 )?
            int alt191=2;
            int LA191_0 = input.LA(1);

            if ( (LA191_0==119||(LA191_0>=122 && LA191_0<=123)) ) {
                alt191=1;
            }
            switch (alt191) {
                case 1 :
                    // InternalFiacre.g:26304:3: rule__SequencePattern__Alternatives_1_1_3
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Alternatives_1_1_3();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAlternatives_1_1_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1__3__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_0__0"
    // InternalFiacre.g:26313:1: rule__SequencePattern__Group_1_1_3_0__0 : rule__SequencePattern__Group_1_1_3_0__0__Impl rule__SequencePattern__Group_1_1_3_0__1 ;
    public final void rule__SequencePattern__Group_1_1_3_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26317:1: ( rule__SequencePattern__Group_1_1_3_0__0__Impl rule__SequencePattern__Group_1_1_3_0__1 )
            // InternalFiacre.g:26318:2: rule__SequencePattern__Group_1_1_3_0__0__Impl rule__SequencePattern__Group_1_1_3_0__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1_3_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_0__0"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_0__0__Impl"
    // InternalFiacre.g:26325:1: rule__SequencePattern__Group_1_1_3_0__0__Impl : ( 'before' ) ;
    public final void rule__SequencePattern__Group_1_1_3_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26329:1: ( ( 'before' ) )
            // InternalFiacre.g:26330:1: ( 'before' )
            {
            // InternalFiacre.g:26330:1: ( 'before' )
            // InternalFiacre.g:26331:2: 'before'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeKeyword_1_1_3_0_0()); 
            }
            match(input,122,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeKeyword_1_1_3_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_0__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_0__1"
    // InternalFiacre.g:26340:1: rule__SequencePattern__Group_1_1_3_0__1 : rule__SequencePattern__Group_1_1_3_0__1__Impl ;
    public final void rule__SequencePattern__Group_1_1_3_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26344:1: ( rule__SequencePattern__Group_1_1_3_0__1__Impl )
            // InternalFiacre.g:26345:2: rule__SequencePattern__Group_1_1_3_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_0__1"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_0__1__Impl"
    // InternalFiacre.g:26351:1: rule__SequencePattern__Group_1_1_3_0__1__Impl : ( ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 ) ) ;
    public final void rule__SequencePattern__Group_1_1_3_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26355:1: ( ( ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 ) ) )
            // InternalFiacre.g:26356:1: ( ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 ) )
            {
            // InternalFiacre.g:26356:1: ( ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 ) )
            // InternalFiacre.g:26357:2: ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeAssignment_1_1_3_0_1()); 
            }
            // InternalFiacre.g:26358:2: ( rule__SequencePattern__BeforeAssignment_1_1_3_0_1 )
            // InternalFiacre.g:26358:3: rule__SequencePattern__BeforeAssignment_1_1_3_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__BeforeAssignment_1_1_3_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeAssignment_1_1_3_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_0__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__0"
    // InternalFiacre.g:26367:1: rule__SequencePattern__Group_1_1_3_1__0 : rule__SequencePattern__Group_1_1_3_1__0__Impl rule__SequencePattern__Group_1_1_3_1__1 ;
    public final void rule__SequencePattern__Group_1_1_3_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26371:1: ( rule__SequencePattern__Group_1_1_3_1__0__Impl rule__SequencePattern__Group_1_1_3_1__1 )
            // InternalFiacre.g:26372:2: rule__SequencePattern__Group_1_1_3_1__0__Impl rule__SequencePattern__Group_1_1_3_1__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1_3_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__0"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__0__Impl"
    // InternalFiacre.g:26379:1: rule__SequencePattern__Group_1_1_3_1__0__Impl : ( 'after' ) ;
    public final void rule__SequencePattern__Group_1_1_3_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26383:1: ( ( 'after' ) )
            // InternalFiacre.g:26384:1: ( 'after' )
            {
            // InternalFiacre.g:26384:1: ( 'after' )
            // InternalFiacre.g:26385:2: 'after'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterKeyword_1_1_3_1_0()); 
            }
            match(input,119,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterKeyword_1_1_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__1"
    // InternalFiacre.g:26394:1: rule__SequencePattern__Group_1_1_3_1__1 : rule__SequencePattern__Group_1_1_3_1__1__Impl rule__SequencePattern__Group_1_1_3_1__2 ;
    public final void rule__SequencePattern__Group_1_1_3_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26398:1: ( rule__SequencePattern__Group_1_1_3_1__1__Impl rule__SequencePattern__Group_1_1_3_1__2 )
            // InternalFiacre.g:26399:2: rule__SequencePattern__Group_1_1_3_1__1__Impl rule__SequencePattern__Group_1_1_3_1__2
            {
            pushFollow(FollowSets000.FOLLOW_140);
            rule__SequencePattern__Group_1_1_3_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__1"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__1__Impl"
    // InternalFiacre.g:26406:1: rule__SequencePattern__Group_1_1_3_1__1__Impl : ( ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 ) ) ;
    public final void rule__SequencePattern__Group_1_1_3_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26410:1: ( ( ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 ) ) )
            // InternalFiacre.g:26411:1: ( ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 ) )
            {
            // InternalFiacre.g:26411:1: ( ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 ) )
            // InternalFiacre.g:26412:2: ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterAssignment_1_1_3_1_1()); 
            }
            // InternalFiacre.g:26413:2: ( rule__SequencePattern__AfterAssignment_1_1_3_1_1 )
            // InternalFiacre.g:26413:3: rule__SequencePattern__AfterAssignment_1_1_3_1_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__AfterAssignment_1_1_3_1_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterAssignment_1_1_3_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__2"
    // InternalFiacre.g:26421:1: rule__SequencePattern__Group_1_1_3_1__2 : rule__SequencePattern__Group_1_1_3_1__2__Impl ;
    public final void rule__SequencePattern__Group_1_1_3_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26425:1: ( rule__SequencePattern__Group_1_1_3_1__2__Impl )
            // InternalFiacre.g:26426:2: rule__SequencePattern__Group_1_1_3_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__2"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1__2__Impl"
    // InternalFiacre.g:26432:1: rule__SequencePattern__Group_1_1_3_1__2__Impl : ( ( rule__SequencePattern__Group_1_1_3_1_2__0 )? ) ;
    public final void rule__SequencePattern__Group_1_1_3_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26436:1: ( ( ( rule__SequencePattern__Group_1_1_3_1_2__0 )? ) )
            // InternalFiacre.g:26437:1: ( ( rule__SequencePattern__Group_1_1_3_1_2__0 )? )
            {
            // InternalFiacre.g:26437:1: ( ( rule__SequencePattern__Group_1_1_3_1_2__0 )? )
            // InternalFiacre.g:26438:2: ( rule__SequencePattern__Group_1_1_3_1_2__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_1_2()); 
            }
            // InternalFiacre.g:26439:2: ( rule__SequencePattern__Group_1_1_3_1_2__0 )?
            int alt192=2;
            int LA192_0 = input.LA(1);

            if ( (LA192_0==121) ) {
                alt192=1;
            }
            switch (alt192) {
                case 1 :
                    // InternalFiacre.g:26439:3: rule__SequencePattern__Group_1_1_3_1_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__SequencePattern__Group_1_1_3_1_2__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getGroup_1_1_3_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1_2__0"
    // InternalFiacre.g:26448:1: rule__SequencePattern__Group_1_1_3_1_2__0 : rule__SequencePattern__Group_1_1_3_1_2__0__Impl rule__SequencePattern__Group_1_1_3_1_2__1 ;
    public final void rule__SequencePattern__Group_1_1_3_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26452:1: ( rule__SequencePattern__Group_1_1_3_1_2__0__Impl rule__SequencePattern__Group_1_1_3_1_2__1 )
            // InternalFiacre.g:26453:2: rule__SequencePattern__Group_1_1_3_1_2__0__Impl rule__SequencePattern__Group_1_1_3_1_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1_3_1_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_1_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1_2__0"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1_2__0__Impl"
    // InternalFiacre.g:26460:1: rule__SequencePattern__Group_1_1_3_1_2__0__Impl : ( 'until' ) ;
    public final void rule__SequencePattern__Group_1_1_3_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26464:1: ( ( 'until' ) )
            // InternalFiacre.g:26465:1: ( 'until' )
            {
            // InternalFiacre.g:26465:1: ( 'until' )
            // InternalFiacre.g:26466:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilKeyword_1_1_3_1_2_0()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilKeyword_1_1_3_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1_2__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1_2__1"
    // InternalFiacre.g:26475:1: rule__SequencePattern__Group_1_1_3_1_2__1 : rule__SequencePattern__Group_1_1_3_1_2__1__Impl ;
    public final void rule__SequencePattern__Group_1_1_3_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26479:1: ( rule__SequencePattern__Group_1_1_3_1_2__1__Impl )
            // InternalFiacre.g:26480:2: rule__SequencePattern__Group_1_1_3_1_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_1_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1_2__1"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_1_2__1__Impl"
    // InternalFiacre.g:26486:1: rule__SequencePattern__Group_1_1_3_1_2__1__Impl : ( ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 ) ) ;
    public final void rule__SequencePattern__Group_1_1_3_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26490:1: ( ( ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 ) ) )
            // InternalFiacre.g:26491:1: ( ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 ) )
            {
            // InternalFiacre.g:26491:1: ( ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 ) )
            // InternalFiacre.g:26492:2: ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilAssignment_1_1_3_1_2_1()); 
            }
            // InternalFiacre.g:26493:2: ( rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 )
            // InternalFiacre.g:26493:3: rule__SequencePattern__UntilAssignment_1_1_3_1_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__UntilAssignment_1_1_3_1_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilAssignment_1_1_3_1_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_1_2__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__0"
    // InternalFiacre.g:26502:1: rule__SequencePattern__Group_1_1_3_2__0 : rule__SequencePattern__Group_1_1_3_2__0__Impl rule__SequencePattern__Group_1_1_3_2__1 ;
    public final void rule__SequencePattern__Group_1_1_3_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26506:1: ( rule__SequencePattern__Group_1_1_3_2__0__Impl rule__SequencePattern__Group_1_1_3_2__1 )
            // InternalFiacre.g:26507:2: rule__SequencePattern__Group_1_1_3_2__0__Impl rule__SequencePattern__Group_1_1_3_2__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1_3_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__0"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__0__Impl"
    // InternalFiacre.g:26514:1: rule__SequencePattern__Group_1_1_3_2__0__Impl : ( 'between' ) ;
    public final void rule__SequencePattern__Group_1_1_3_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26518:1: ( ( 'between' ) )
            // InternalFiacre.g:26519:1: ( 'between' )
            {
            // InternalFiacre.g:26519:1: ( 'between' )
            // InternalFiacre.g:26520:2: 'between'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBetweenKeyword_1_1_3_2_0()); 
            }
            match(input,123,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBetweenKeyword_1_1_3_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__0__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__1"
    // InternalFiacre.g:26529:1: rule__SequencePattern__Group_1_1_3_2__1 : rule__SequencePattern__Group_1_1_3_2__1__Impl rule__SequencePattern__Group_1_1_3_2__2 ;
    public final void rule__SequencePattern__Group_1_1_3_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26533:1: ( rule__SequencePattern__Group_1_1_3_2__1__Impl rule__SequencePattern__Group_1_1_3_2__2 )
            // InternalFiacre.g:26534:2: rule__SequencePattern__Group_1_1_3_2__1__Impl rule__SequencePattern__Group_1_1_3_2__2
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__SequencePattern__Group_1_1_3_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__1"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__1__Impl"
    // InternalFiacre.g:26541:1: rule__SequencePattern__Group_1_1_3_2__1__Impl : ( ( rule__SequencePattern__MinAssignment_1_1_3_2_1 ) ) ;
    public final void rule__SequencePattern__Group_1_1_3_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26545:1: ( ( ( rule__SequencePattern__MinAssignment_1_1_3_2_1 ) ) )
            // InternalFiacre.g:26546:1: ( ( rule__SequencePattern__MinAssignment_1_1_3_2_1 ) )
            {
            // InternalFiacre.g:26546:1: ( ( rule__SequencePattern__MinAssignment_1_1_3_2_1 ) )
            // InternalFiacre.g:26547:2: ( rule__SequencePattern__MinAssignment_1_1_3_2_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMinAssignment_1_1_3_2_1()); 
            }
            // InternalFiacre.g:26548:2: ( rule__SequencePattern__MinAssignment_1_1_3_2_1 )
            // InternalFiacre.g:26548:3: rule__SequencePattern__MinAssignment_1_1_3_2_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__MinAssignment_1_1_3_2_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMinAssignment_1_1_3_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__1__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__2"
    // InternalFiacre.g:26556:1: rule__SequencePattern__Group_1_1_3_2__2 : rule__SequencePattern__Group_1_1_3_2__2__Impl rule__SequencePattern__Group_1_1_3_2__3 ;
    public final void rule__SequencePattern__Group_1_1_3_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26560:1: ( rule__SequencePattern__Group_1_1_3_2__2__Impl rule__SequencePattern__Group_1_1_3_2__3 )
            // InternalFiacre.g:26561:2: rule__SequencePattern__Group_1_1_3_2__2__Impl rule__SequencePattern__Group_1_1_3_2__3
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__SequencePattern__Group_1_1_3_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_2__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__2"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__2__Impl"
    // InternalFiacre.g:26568:1: rule__SequencePattern__Group_1_1_3_2__2__Impl : ( 'and' ) ;
    public final void rule__SequencePattern__Group_1_1_3_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26572:1: ( ( 'and' ) )
            // InternalFiacre.g:26573:1: ( 'and' )
            {
            // InternalFiacre.g:26573:1: ( 'and' )
            // InternalFiacre.g:26574:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAndKeyword_1_1_3_2_2()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAndKeyword_1_1_3_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__2__Impl"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__3"
    // InternalFiacre.g:26583:1: rule__SequencePattern__Group_1_1_3_2__3 : rule__SequencePattern__Group_1_1_3_2__3__Impl ;
    public final void rule__SequencePattern__Group_1_1_3_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26587:1: ( rule__SequencePattern__Group_1_1_3_2__3__Impl )
            // InternalFiacre.g:26588:2: rule__SequencePattern__Group_1_1_3_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__Group_1_1_3_2__3__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__3"


    // $ANTLR start "rule__SequencePattern__Group_1_1_3_2__3__Impl"
    // InternalFiacre.g:26594:1: rule__SequencePattern__Group_1_1_3_2__3__Impl : ( ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 ) ) ;
    public final void rule__SequencePattern__Group_1_1_3_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26598:1: ( ( ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 ) ) )
            // InternalFiacre.g:26599:1: ( ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 ) )
            {
            // InternalFiacre.g:26599:1: ( ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 ) )
            // InternalFiacre.g:26600:2: ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMaxAssignment_1_1_3_2_3()); 
            }
            // InternalFiacre.g:26601:2: ( rule__SequencePattern__MaxAssignment_1_1_3_2_3 )
            // InternalFiacre.g:26601:3: rule__SequencePattern__MaxAssignment_1_1_3_2_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__SequencePattern__MaxAssignment_1_1_3_2_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMaxAssignment_1_1_3_2_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__Group_1_1_3_2__3__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__0"
    // InternalFiacre.g:26610:1: rule__LTLQuantified__Group_0__0 : rule__LTLQuantified__Group_0__0__Impl rule__LTLQuantified__Group_0__1 ;
    public final void rule__LTLQuantified__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26614:1: ( rule__LTLQuantified__Group_0__0__Impl rule__LTLQuantified__Group_0__1 )
            // InternalFiacre.g:26615:2: rule__LTLQuantified__Group_0__0__Impl rule__LTLQuantified__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__LTLQuantified__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__0"


    // $ANTLR start "rule__LTLQuantified__Group_0__0__Impl"
    // InternalFiacre.g:26622:1: rule__LTLQuantified__Group_0__0__Impl : ( ( rule__LTLQuantified__Alternatives_0_0 ) ) ;
    public final void rule__LTLQuantified__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26626:1: ( ( ( rule__LTLQuantified__Alternatives_0_0 ) ) )
            // InternalFiacre.g:26627:1: ( ( rule__LTLQuantified__Alternatives_0_0 ) )
            {
            // InternalFiacre.g:26627:1: ( ( rule__LTLQuantified__Alternatives_0_0 ) )
            // InternalFiacre.g:26628:2: ( rule__LTLQuantified__Alternatives_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getAlternatives_0_0()); 
            }
            // InternalFiacre.g:26629:2: ( rule__LTLQuantified__Alternatives_0_0 )
            // InternalFiacre.g:26629:3: rule__LTLQuantified__Alternatives_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Alternatives_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getAlternatives_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__0__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__1"
    // InternalFiacre.g:26637:1: rule__LTLQuantified__Group_0__1 : rule__LTLQuantified__Group_0__1__Impl rule__LTLQuantified__Group_0__2 ;
    public final void rule__LTLQuantified__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26641:1: ( rule__LTLQuantified__Group_0__1__Impl rule__LTLQuantified__Group_0__2 )
            // InternalFiacre.g:26642:2: rule__LTLQuantified__Group_0__1__Impl rule__LTLQuantified__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_46);
            rule__LTLQuantified__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__1"


    // $ANTLR start "rule__LTLQuantified__Group_0__1__Impl"
    // InternalFiacre.g:26649:1: rule__LTLQuantified__Group_0__1__Impl : ( ( rule__LTLQuantified__IndexAssignment_0_1 ) ) ;
    public final void rule__LTLQuantified__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26653:1: ( ( ( rule__LTLQuantified__IndexAssignment_0_1 ) ) )
            // InternalFiacre.g:26654:1: ( ( rule__LTLQuantified__IndexAssignment_0_1 ) )
            {
            // InternalFiacre.g:26654:1: ( ( rule__LTLQuantified__IndexAssignment_0_1 ) )
            // InternalFiacre.g:26655:2: ( rule__LTLQuantified__IndexAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getIndexAssignment_0_1()); 
            }
            // InternalFiacre.g:26656:2: ( rule__LTLQuantified__IndexAssignment_0_1 )
            // InternalFiacre.g:26656:3: rule__LTLQuantified__IndexAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__IndexAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getIndexAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__1__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__2"
    // InternalFiacre.g:26664:1: rule__LTLQuantified__Group_0__2 : rule__LTLQuantified__Group_0__2__Impl rule__LTLQuantified__Group_0__3 ;
    public final void rule__LTLQuantified__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26668:1: ( rule__LTLQuantified__Group_0__2__Impl rule__LTLQuantified__Group_0__3 )
            // InternalFiacre.g:26669:2: rule__LTLQuantified__Group_0__2__Impl rule__LTLQuantified__Group_0__3
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__LTLQuantified__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__3();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__2"


    // $ANTLR start "rule__LTLQuantified__Group_0__2__Impl"
    // InternalFiacre.g:26676:1: rule__LTLQuantified__Group_0__2__Impl : ( 'in' ) ;
    public final void rule__LTLQuantified__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26680:1: ( ( 'in' ) )
            // InternalFiacre.g:26681:1: ( 'in' )
            {
            // InternalFiacre.g:26681:1: ( 'in' )
            // InternalFiacre.g:26682:2: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getInKeyword_0_2()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getInKeyword_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__2__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__3"
    // InternalFiacre.g:26691:1: rule__LTLQuantified__Group_0__3 : rule__LTLQuantified__Group_0__3__Impl rule__LTLQuantified__Group_0__4 ;
    public final void rule__LTLQuantified__Group_0__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26695:1: ( rule__LTLQuantified__Group_0__3__Impl rule__LTLQuantified__Group_0__4 )
            // InternalFiacre.g:26696:2: rule__LTLQuantified__Group_0__3__Impl rule__LTLQuantified__Group_0__4
            {
            pushFollow(FollowSets000.FOLLOW_131);
            rule__LTLQuantified__Group_0__3__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__4();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__3"


    // $ANTLR start "rule__LTLQuantified__Group_0__3__Impl"
    // InternalFiacre.g:26703:1: rule__LTLQuantified__Group_0__3__Impl : ( ( rule__LTLQuantified__TypeAssignment_0_3 ) ) ;
    public final void rule__LTLQuantified__Group_0__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26707:1: ( ( ( rule__LTLQuantified__TypeAssignment_0_3 ) ) )
            // InternalFiacre.g:26708:1: ( ( rule__LTLQuantified__TypeAssignment_0_3 ) )
            {
            // InternalFiacre.g:26708:1: ( ( rule__LTLQuantified__TypeAssignment_0_3 ) )
            // InternalFiacre.g:26709:2: ( rule__LTLQuantified__TypeAssignment_0_3 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getTypeAssignment_0_3()); 
            }
            // InternalFiacre.g:26710:2: ( rule__LTLQuantified__TypeAssignment_0_3 )
            // InternalFiacre.g:26710:3: rule__LTLQuantified__TypeAssignment_0_3
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__TypeAssignment_0_3();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getTypeAssignment_0_3()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__3__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__4"
    // InternalFiacre.g:26718:1: rule__LTLQuantified__Group_0__4 : rule__LTLQuantified__Group_0__4__Impl rule__LTLQuantified__Group_0__5 ;
    public final void rule__LTLQuantified__Group_0__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26722:1: ( rule__LTLQuantified__Group_0__4__Impl rule__LTLQuantified__Group_0__5 )
            // InternalFiacre.g:26723:2: rule__LTLQuantified__Group_0__4__Impl rule__LTLQuantified__Group_0__5
            {
            pushFollow(FollowSets000.FOLLOW_143);
            rule__LTLQuantified__Group_0__4__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__5();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__4"


    // $ANTLR start "rule__LTLQuantified__Group_0__4__Impl"
    // InternalFiacre.g:26730:1: rule__LTLQuantified__Group_0__4__Impl : ( '.' ) ;
    public final void rule__LTLQuantified__Group_0__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26734:1: ( ( '.' ) )
            // InternalFiacre.g:26735:1: ( '.' )
            {
            // InternalFiacre.g:26735:1: ( '.' )
            // InternalFiacre.g:26736:2: '.'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getFullStopKeyword_0_4()); 
            }
            match(input,61,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getFullStopKeyword_0_4()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__4__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0__5"
    // InternalFiacre.g:26745:1: rule__LTLQuantified__Group_0__5 : rule__LTLQuantified__Group_0__5__Impl ;
    public final void rule__LTLQuantified__Group_0__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26749:1: ( rule__LTLQuantified__Group_0__5__Impl )
            // InternalFiacre.g:26750:2: rule__LTLQuantified__Group_0__5__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0__5__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__5"


    // $ANTLR start "rule__LTLQuantified__Group_0__5__Impl"
    // InternalFiacre.g:26756:1: rule__LTLQuantified__Group_0__5__Impl : ( ( rule__LTLQuantified__ChildAssignment_0_5 ) ) ;
    public final void rule__LTLQuantified__Group_0__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26760:1: ( ( ( rule__LTLQuantified__ChildAssignment_0_5 ) ) )
            // InternalFiacre.g:26761:1: ( ( rule__LTLQuantified__ChildAssignment_0_5 ) )
            {
            // InternalFiacre.g:26761:1: ( ( rule__LTLQuantified__ChildAssignment_0_5 ) )
            // InternalFiacre.g:26762:2: ( rule__LTLQuantified__ChildAssignment_0_5 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getChildAssignment_0_5()); 
            }
            // InternalFiacre.g:26763:2: ( rule__LTLQuantified__ChildAssignment_0_5 )
            // InternalFiacre.g:26763:3: rule__LTLQuantified__ChildAssignment_0_5
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__ChildAssignment_0_5();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getChildAssignment_0_5()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0__5__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_0__0"
    // InternalFiacre.g:26772:1: rule__LTLQuantified__Group_0_0_0__0 : rule__LTLQuantified__Group_0_0_0__0__Impl rule__LTLQuantified__Group_0_0_0__1 ;
    public final void rule__LTLQuantified__Group_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26776:1: ( rule__LTLQuantified__Group_0_0_0__0__Impl rule__LTLQuantified__Group_0_0_0__1 )
            // InternalFiacre.g:26777:2: rule__LTLQuantified__Group_0_0_0__0__Impl rule__LTLQuantified__Group_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_90);
            rule__LTLQuantified__Group_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_0__0"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_0__0__Impl"
    // InternalFiacre.g:26784:1: rule__LTLQuantified__Group_0_0_0__0__Impl : ( () ) ;
    public final void rule__LTLQuantified__Group_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26788:1: ( ( () ) )
            // InternalFiacre.g:26789:1: ( () )
            {
            // InternalFiacre.g:26789:1: ( () )
            // InternalFiacre.g:26790:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getLTLAllAction_0_0_0_0()); 
            }
            // InternalFiacre.g:26791:2: ()
            // InternalFiacre.g:26791:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getLTLAllAction_0_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_0__0__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_0__1"
    // InternalFiacre.g:26799:1: rule__LTLQuantified__Group_0_0_0__1 : rule__LTLQuantified__Group_0_0_0__1__Impl ;
    public final void rule__LTLQuantified__Group_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26803:1: ( rule__LTLQuantified__Group_0_0_0__1__Impl )
            // InternalFiacre.g:26804:2: rule__LTLQuantified__Group_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_0__1"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_0__1__Impl"
    // InternalFiacre.g:26810:1: rule__LTLQuantified__Group_0_0_0__1__Impl : ( 'all' ) ;
    public final void rule__LTLQuantified__Group_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26814:1: ( ( 'all' ) )
            // InternalFiacre.g:26815:1: ( 'all' )
            {
            // InternalFiacre.g:26815:1: ( 'all' )
            // InternalFiacre.g:26816:2: 'all'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getAllKeyword_0_0_0_1()); 
            }
            match(input,77,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getAllKeyword_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_0__1__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_1__0"
    // InternalFiacre.g:26826:1: rule__LTLQuantified__Group_0_0_1__0 : rule__LTLQuantified__Group_0_0_1__0__Impl rule__LTLQuantified__Group_0_0_1__1 ;
    public final void rule__LTLQuantified__Group_0_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26830:1: ( rule__LTLQuantified__Group_0_0_1__0__Impl rule__LTLQuantified__Group_0_0_1__1 )
            // InternalFiacre.g:26831:2: rule__LTLQuantified__Group_0_0_1__0__Impl rule__LTLQuantified__Group_0_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_91);
            rule__LTLQuantified__Group_0_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_1__0"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_1__0__Impl"
    // InternalFiacre.g:26838:1: rule__LTLQuantified__Group_0_0_1__0__Impl : ( () ) ;
    public final void rule__LTLQuantified__Group_0_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26842:1: ( ( () ) )
            // InternalFiacre.g:26843:1: ( () )
            {
            // InternalFiacre.g:26843:1: ( () )
            // InternalFiacre.g:26844:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getLTLExistsAction_0_0_1_0()); 
            }
            // InternalFiacre.g:26845:2: ()
            // InternalFiacre.g:26845:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getLTLExistsAction_0_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_1__0__Impl"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_1__1"
    // InternalFiacre.g:26853:1: rule__LTLQuantified__Group_0_0_1__1 : rule__LTLQuantified__Group_0_0_1__1__Impl ;
    public final void rule__LTLQuantified__Group_0_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26857:1: ( rule__LTLQuantified__Group_0_0_1__1__Impl )
            // InternalFiacre.g:26858:2: rule__LTLQuantified__Group_0_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLQuantified__Group_0_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_1__1"


    // $ANTLR start "rule__LTLQuantified__Group_0_0_1__1__Impl"
    // InternalFiacre.g:26864:1: rule__LTLQuantified__Group_0_0_1__1__Impl : ( 'exists' ) ;
    public final void rule__LTLQuantified__Group_0_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26868:1: ( ( 'exists' ) )
            // InternalFiacre.g:26869:1: ( 'exists' )
            {
            // InternalFiacre.g:26869:1: ( 'exists' )
            // InternalFiacre.g:26870:2: 'exists'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getExistsKeyword_0_0_1_1()); 
            }
            match(input,78,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getExistsKeyword_0_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__Group_0_0_1__1__Impl"


    // $ANTLR start "rule__LTLDisjunction__Group__0"
    // InternalFiacre.g:26880:1: rule__LTLDisjunction__Group__0 : rule__LTLDisjunction__Group__0__Impl rule__LTLDisjunction__Group__1 ;
    public final void rule__LTLDisjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26884:1: ( rule__LTLDisjunction__Group__0__Impl rule__LTLDisjunction__Group__1 )
            // InternalFiacre.g:26885:2: rule__LTLDisjunction__Group__0__Impl rule__LTLDisjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__LTLDisjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group__0"


    // $ANTLR start "rule__LTLDisjunction__Group__0__Impl"
    // InternalFiacre.g:26892:1: rule__LTLDisjunction__Group__0__Impl : ( ruleLTLImplication ) ;
    public final void rule__LTLDisjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26896:1: ( ( ruleLTLImplication ) )
            // InternalFiacre.g:26897:1: ( ruleLTLImplication )
            {
            // InternalFiacre.g:26897:1: ( ruleLTLImplication )
            // InternalFiacre.g:26898:2: ruleLTLImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getLTLImplicationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getLTLImplicationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group__0__Impl"


    // $ANTLR start "rule__LTLDisjunction__Group__1"
    // InternalFiacre.g:26907:1: rule__LTLDisjunction__Group__1 : rule__LTLDisjunction__Group__1__Impl ;
    public final void rule__LTLDisjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26911:1: ( rule__LTLDisjunction__Group__1__Impl )
            // InternalFiacre.g:26912:2: rule__LTLDisjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group__1"


    // $ANTLR start "rule__LTLDisjunction__Group__1__Impl"
    // InternalFiacre.g:26918:1: rule__LTLDisjunction__Group__1__Impl : ( ( rule__LTLDisjunction__Group_1__0 )* ) ;
    public final void rule__LTLDisjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26922:1: ( ( ( rule__LTLDisjunction__Group_1__0 )* ) )
            // InternalFiacre.g:26923:1: ( ( rule__LTLDisjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:26923:1: ( ( rule__LTLDisjunction__Group_1__0 )* )
            // InternalFiacre.g:26924:2: ( rule__LTLDisjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:26925:2: ( rule__LTLDisjunction__Group_1__0 )*
            loop193:
            do {
                int alt193=2;
                int LA193_0 = input.LA(1);

                if ( (LA193_0==79) ) {
                    alt193=1;
                }


                switch (alt193) {
            	case 1 :
            	    // InternalFiacre.g:26925:3: rule__LTLDisjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_94);
            	    rule__LTLDisjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop193;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group__1__Impl"


    // $ANTLR start "rule__LTLDisjunction__Group_1__0"
    // InternalFiacre.g:26934:1: rule__LTLDisjunction__Group_1__0 : rule__LTLDisjunction__Group_1__0__Impl rule__LTLDisjunction__Group_1__1 ;
    public final void rule__LTLDisjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26938:1: ( rule__LTLDisjunction__Group_1__0__Impl rule__LTLDisjunction__Group_1__1 )
            // InternalFiacre.g:26939:2: rule__LTLDisjunction__Group_1__0__Impl rule__LTLDisjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__LTLDisjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__0"


    // $ANTLR start "rule__LTLDisjunction__Group_1__0__Impl"
    // InternalFiacre.g:26946:1: rule__LTLDisjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__LTLDisjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26950:1: ( ( () ) )
            // InternalFiacre.g:26951:1: ( () )
            {
            // InternalFiacre.g:26951:1: ( () )
            // InternalFiacre.g:26952:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getLTLDisjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:26953:2: ()
            // InternalFiacre.g:26953:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getLTLDisjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__0__Impl"


    // $ANTLR start "rule__LTLDisjunction__Group_1__1"
    // InternalFiacre.g:26961:1: rule__LTLDisjunction__Group_1__1 : rule__LTLDisjunction__Group_1__1__Impl rule__LTLDisjunction__Group_1__2 ;
    public final void rule__LTLDisjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26965:1: ( rule__LTLDisjunction__Group_1__1__Impl rule__LTLDisjunction__Group_1__2 )
            // InternalFiacre.g:26966:2: rule__LTLDisjunction__Group_1__1__Impl rule__LTLDisjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_143);
            rule__LTLDisjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__1"


    // $ANTLR start "rule__LTLDisjunction__Group_1__1__Impl"
    // InternalFiacre.g:26973:1: rule__LTLDisjunction__Group_1__1__Impl : ( 'or' ) ;
    public final void rule__LTLDisjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26977:1: ( ( 'or' ) )
            // InternalFiacre.g:26978:1: ( 'or' )
            {
            // InternalFiacre.g:26978:1: ( 'or' )
            // InternalFiacre.g:26979:2: 'or'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getOrKeyword_1_1()); 
            }
            match(input,79,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getOrKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__1__Impl"


    // $ANTLR start "rule__LTLDisjunction__Group_1__2"
    // InternalFiacre.g:26988:1: rule__LTLDisjunction__Group_1__2 : rule__LTLDisjunction__Group_1__2__Impl ;
    public final void rule__LTLDisjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:26992:1: ( rule__LTLDisjunction__Group_1__2__Impl )
            // InternalFiacre.g:26993:2: rule__LTLDisjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__2"


    // $ANTLR start "rule__LTLDisjunction__Group_1__2__Impl"
    // InternalFiacre.g:26999:1: rule__LTLDisjunction__Group_1__2__Impl : ( ( rule__LTLDisjunction__RightAssignment_1_2 ) ) ;
    public final void rule__LTLDisjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27003:1: ( ( ( rule__LTLDisjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:27004:1: ( ( rule__LTLDisjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:27004:1: ( ( rule__LTLDisjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:27005:2: ( rule__LTLDisjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:27006:2: ( rule__LTLDisjunction__RightAssignment_1_2 )
            // InternalFiacre.g:27006:3: rule__LTLDisjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLDisjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__Group_1__2__Impl"


    // $ANTLR start "rule__LTLImplication__Group__0"
    // InternalFiacre.g:27015:1: rule__LTLImplication__Group__0 : rule__LTLImplication__Group__0__Impl rule__LTLImplication__Group__1 ;
    public final void rule__LTLImplication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27019:1: ( rule__LTLImplication__Group__0__Impl rule__LTLImplication__Group__1 )
            // InternalFiacre.g:27020:2: rule__LTLImplication__Group__0__Impl rule__LTLImplication__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__LTLImplication__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group__0"


    // $ANTLR start "rule__LTLImplication__Group__0__Impl"
    // InternalFiacre.g:27027:1: rule__LTLImplication__Group__0__Impl : ( ruleLTLConjunction ) ;
    public final void rule__LTLImplication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27031:1: ( ( ruleLTLConjunction ) )
            // InternalFiacre.g:27032:1: ( ruleLTLConjunction )
            {
            // InternalFiacre.g:27032:1: ( ruleLTLConjunction )
            // InternalFiacre.g:27033:2: ruleLTLConjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getLTLConjunctionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getLTLConjunctionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group__0__Impl"


    // $ANTLR start "rule__LTLImplication__Group__1"
    // InternalFiacre.g:27042:1: rule__LTLImplication__Group__1 : rule__LTLImplication__Group__1__Impl ;
    public final void rule__LTLImplication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27046:1: ( rule__LTLImplication__Group__1__Impl )
            // InternalFiacre.g:27047:2: rule__LTLImplication__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group__1"


    // $ANTLR start "rule__LTLImplication__Group__1__Impl"
    // InternalFiacre.g:27053:1: rule__LTLImplication__Group__1__Impl : ( ( rule__LTLImplication__Group_1__0 )? ) ;
    public final void rule__LTLImplication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27057:1: ( ( ( rule__LTLImplication__Group_1__0 )? ) )
            // InternalFiacre.g:27058:1: ( ( rule__LTLImplication__Group_1__0 )? )
            {
            // InternalFiacre.g:27058:1: ( ( rule__LTLImplication__Group_1__0 )? )
            // InternalFiacre.g:27059:2: ( rule__LTLImplication__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:27060:2: ( rule__LTLImplication__Group_1__0 )?
            int alt194=2;
            int LA194_0 = input.LA(1);

            if ( (LA194_0==80) ) {
                alt194=1;
            }
            switch (alt194) {
                case 1 :
                    // InternalFiacre.g:27060:3: rule__LTLImplication__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLImplication__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group__1__Impl"


    // $ANTLR start "rule__LTLImplication__Group_1__0"
    // InternalFiacre.g:27069:1: rule__LTLImplication__Group_1__0 : rule__LTLImplication__Group_1__0__Impl rule__LTLImplication__Group_1__1 ;
    public final void rule__LTLImplication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27073:1: ( rule__LTLImplication__Group_1__0__Impl rule__LTLImplication__Group_1__1 )
            // InternalFiacre.g:27074:2: rule__LTLImplication__Group_1__0__Impl rule__LTLImplication__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__LTLImplication__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__0"


    // $ANTLR start "rule__LTLImplication__Group_1__0__Impl"
    // InternalFiacre.g:27081:1: rule__LTLImplication__Group_1__0__Impl : ( () ) ;
    public final void rule__LTLImplication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27085:1: ( ( () ) )
            // InternalFiacre.g:27086:1: ( () )
            {
            // InternalFiacre.g:27086:1: ( () )
            // InternalFiacre.g:27087:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getLTLImplicationLeftAction_1_0()); 
            }
            // InternalFiacre.g:27088:2: ()
            // InternalFiacre.g:27088:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getLTLImplicationLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__0__Impl"


    // $ANTLR start "rule__LTLImplication__Group_1__1"
    // InternalFiacre.g:27096:1: rule__LTLImplication__Group_1__1 : rule__LTLImplication__Group_1__1__Impl rule__LTLImplication__Group_1__2 ;
    public final void rule__LTLImplication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27100:1: ( rule__LTLImplication__Group_1__1__Impl rule__LTLImplication__Group_1__2 )
            // InternalFiacre.g:27101:2: rule__LTLImplication__Group_1__1__Impl rule__LTLImplication__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_143);
            rule__LTLImplication__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__1"


    // $ANTLR start "rule__LTLImplication__Group_1__1__Impl"
    // InternalFiacre.g:27108:1: rule__LTLImplication__Group_1__1__Impl : ( '=>' ) ;
    public final void rule__LTLImplication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27112:1: ( ( '=>' ) )
            // InternalFiacre.g:27113:1: ( '=>' )
            {
            // InternalFiacre.g:27113:1: ( '=>' )
            // InternalFiacre.g:27114:2: '=>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }
            match(input,80,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__1__Impl"


    // $ANTLR start "rule__LTLImplication__Group_1__2"
    // InternalFiacre.g:27123:1: rule__LTLImplication__Group_1__2 : rule__LTLImplication__Group_1__2__Impl ;
    public final void rule__LTLImplication__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27127:1: ( rule__LTLImplication__Group_1__2__Impl )
            // InternalFiacre.g:27128:2: rule__LTLImplication__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__2"


    // $ANTLR start "rule__LTLImplication__Group_1__2__Impl"
    // InternalFiacre.g:27134:1: rule__LTLImplication__Group_1__2__Impl : ( ( rule__LTLImplication__RightAssignment_1_2 ) ) ;
    public final void rule__LTLImplication__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27138:1: ( ( ( rule__LTLImplication__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:27139:1: ( ( rule__LTLImplication__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:27139:1: ( ( rule__LTLImplication__RightAssignment_1_2 ) )
            // InternalFiacre.g:27140:2: ( rule__LTLImplication__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:27141:2: ( rule__LTLImplication__RightAssignment_1_2 )
            // InternalFiacre.g:27141:3: rule__LTLImplication__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLImplication__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__Group_1__2__Impl"


    // $ANTLR start "rule__LTLConjunction__Group__0"
    // InternalFiacre.g:27150:1: rule__LTLConjunction__Group__0 : rule__LTLConjunction__Group__0__Impl rule__LTLConjunction__Group__1 ;
    public final void rule__LTLConjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27154:1: ( rule__LTLConjunction__Group__0__Impl rule__LTLConjunction__Group__1 )
            // InternalFiacre.g:27155:2: rule__LTLConjunction__Group__0__Impl rule__LTLConjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__LTLConjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group__0"


    // $ANTLR start "rule__LTLConjunction__Group__0__Impl"
    // InternalFiacre.g:27162:1: rule__LTLConjunction__Group__0__Impl : ( ruleLTLBinary ) ;
    public final void rule__LTLConjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27166:1: ( ( ruleLTLBinary ) )
            // InternalFiacre.g:27167:1: ( ruleLTLBinary )
            {
            // InternalFiacre.g:27167:1: ( ruleLTLBinary )
            // InternalFiacre.g:27168:2: ruleLTLBinary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getLTLBinaryParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLBinary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getLTLBinaryParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group__0__Impl"


    // $ANTLR start "rule__LTLConjunction__Group__1"
    // InternalFiacre.g:27177:1: rule__LTLConjunction__Group__1 : rule__LTLConjunction__Group__1__Impl ;
    public final void rule__LTLConjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27181:1: ( rule__LTLConjunction__Group__1__Impl )
            // InternalFiacre.g:27182:2: rule__LTLConjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group__1"


    // $ANTLR start "rule__LTLConjunction__Group__1__Impl"
    // InternalFiacre.g:27188:1: rule__LTLConjunction__Group__1__Impl : ( ( rule__LTLConjunction__Group_1__0 )* ) ;
    public final void rule__LTLConjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27192:1: ( ( ( rule__LTLConjunction__Group_1__0 )* ) )
            // InternalFiacre.g:27193:1: ( ( rule__LTLConjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:27193:1: ( ( rule__LTLConjunction__Group_1__0 )* )
            // InternalFiacre.g:27194:2: ( rule__LTLConjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:27195:2: ( rule__LTLConjunction__Group_1__0 )*
            loop195:
            do {
                int alt195=2;
                int LA195_0 = input.LA(1);

                if ( (LA195_0==81) ) {
                    alt195=1;
                }


                switch (alt195) {
            	case 1 :
            	    // InternalFiacre.g:27195:3: rule__LTLConjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_97);
            	    rule__LTLConjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop195;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group__1__Impl"


    // $ANTLR start "rule__LTLConjunction__Group_1__0"
    // InternalFiacre.g:27204:1: rule__LTLConjunction__Group_1__0 : rule__LTLConjunction__Group_1__0__Impl rule__LTLConjunction__Group_1__1 ;
    public final void rule__LTLConjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27208:1: ( rule__LTLConjunction__Group_1__0__Impl rule__LTLConjunction__Group_1__1 )
            // InternalFiacre.g:27209:2: rule__LTLConjunction__Group_1__0__Impl rule__LTLConjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__LTLConjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__0"


    // $ANTLR start "rule__LTLConjunction__Group_1__0__Impl"
    // InternalFiacre.g:27216:1: rule__LTLConjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__LTLConjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27220:1: ( ( () ) )
            // InternalFiacre.g:27221:1: ( () )
            {
            // InternalFiacre.g:27221:1: ( () )
            // InternalFiacre.g:27222:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getLTLConjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:27223:2: ()
            // InternalFiacre.g:27223:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getLTLConjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__0__Impl"


    // $ANTLR start "rule__LTLConjunction__Group_1__1"
    // InternalFiacre.g:27231:1: rule__LTLConjunction__Group_1__1 : rule__LTLConjunction__Group_1__1__Impl rule__LTLConjunction__Group_1__2 ;
    public final void rule__LTLConjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27235:1: ( rule__LTLConjunction__Group_1__1__Impl rule__LTLConjunction__Group_1__2 )
            // InternalFiacre.g:27236:2: rule__LTLConjunction__Group_1__1__Impl rule__LTLConjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_143);
            rule__LTLConjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__1"


    // $ANTLR start "rule__LTLConjunction__Group_1__1__Impl"
    // InternalFiacre.g:27243:1: rule__LTLConjunction__Group_1__1__Impl : ( 'and' ) ;
    public final void rule__LTLConjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27247:1: ( ( 'and' ) )
            // InternalFiacre.g:27248:1: ( 'and' )
            {
            // InternalFiacre.g:27248:1: ( 'and' )
            // InternalFiacre.g:27249:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getAndKeyword_1_1()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getAndKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__1__Impl"


    // $ANTLR start "rule__LTLConjunction__Group_1__2"
    // InternalFiacre.g:27258:1: rule__LTLConjunction__Group_1__2 : rule__LTLConjunction__Group_1__2__Impl ;
    public final void rule__LTLConjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27262:1: ( rule__LTLConjunction__Group_1__2__Impl )
            // InternalFiacre.g:27263:2: rule__LTLConjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__2"


    // $ANTLR start "rule__LTLConjunction__Group_1__2__Impl"
    // InternalFiacre.g:27269:1: rule__LTLConjunction__Group_1__2__Impl : ( ( rule__LTLConjunction__RightAssignment_1_2 ) ) ;
    public final void rule__LTLConjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27273:1: ( ( ( rule__LTLConjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:27274:1: ( ( rule__LTLConjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:27274:1: ( ( rule__LTLConjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:27275:2: ( rule__LTLConjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:27276:2: ( rule__LTLConjunction__RightAssignment_1_2 )
            // InternalFiacre.g:27276:3: rule__LTLConjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLConjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__Group_1__2__Impl"


    // $ANTLR start "rule__LTLBinary__Group__0"
    // InternalFiacre.g:27285:1: rule__LTLBinary__Group__0 : rule__LTLBinary__Group__0__Impl rule__LTLBinary__Group__1 ;
    public final void rule__LTLBinary__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27289:1: ( rule__LTLBinary__Group__0__Impl rule__LTLBinary__Group__1 )
            // InternalFiacre.g:27290:2: rule__LTLBinary__Group__0__Impl rule__LTLBinary__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_144);
            rule__LTLBinary__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group__0"


    // $ANTLR start "rule__LTLBinary__Group__0__Impl"
    // InternalFiacre.g:27297:1: rule__LTLBinary__Group__0__Impl : ( ruleLTLUnary ) ;
    public final void rule__LTLBinary__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27301:1: ( ( ruleLTLUnary ) )
            // InternalFiacre.g:27302:1: ( ruleLTLUnary )
            {
            // InternalFiacre.g:27302:1: ( ruleLTLUnary )
            // InternalFiacre.g:27303:2: ruleLTLUnary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getLTLUnaryParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getLTLUnaryParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group__0__Impl"


    // $ANTLR start "rule__LTLBinary__Group__1"
    // InternalFiacre.g:27312:1: rule__LTLBinary__Group__1 : rule__LTLBinary__Group__1__Impl ;
    public final void rule__LTLBinary__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27316:1: ( rule__LTLBinary__Group__1__Impl )
            // InternalFiacre.g:27317:2: rule__LTLBinary__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group__1"


    // $ANTLR start "rule__LTLBinary__Group__1__Impl"
    // InternalFiacre.g:27323:1: rule__LTLBinary__Group__1__Impl : ( ( rule__LTLBinary__Alternatives_1 )? ) ;
    public final void rule__LTLBinary__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27327:1: ( ( ( rule__LTLBinary__Alternatives_1 )? ) )
            // InternalFiacre.g:27328:1: ( ( rule__LTLBinary__Alternatives_1 )? )
            {
            // InternalFiacre.g:27328:1: ( ( rule__LTLBinary__Alternatives_1 )? )
            // InternalFiacre.g:27329:2: ( rule__LTLBinary__Alternatives_1 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getAlternatives_1()); 
            }
            // InternalFiacre.g:27330:2: ( rule__LTLBinary__Alternatives_1 )?
            int alt196=2;
            int LA196_0 = input.LA(1);

            if ( (LA196_0==121||LA196_0==129) ) {
                alt196=1;
            }
            switch (alt196) {
                case 1 :
                    // InternalFiacre.g:27330:3: rule__LTLBinary__Alternatives_1
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__LTLBinary__Alternatives_1();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getAlternatives_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group__1__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_0__0"
    // InternalFiacre.g:27339:1: rule__LTLBinary__Group_1_0__0 : rule__LTLBinary__Group_1_0__0__Impl rule__LTLBinary__Group_1_0__1 ;
    public final void rule__LTLBinary__Group_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27343:1: ( rule__LTLBinary__Group_1_0__0__Impl rule__LTLBinary__Group_1_0__1 )
            // InternalFiacre.g:27344:2: rule__LTLBinary__Group_1_0__0__Impl rule__LTLBinary__Group_1_0__1
            {
            pushFollow(FollowSets000.FOLLOW_140);
            rule__LTLBinary__Group_1_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__0"


    // $ANTLR start "rule__LTLBinary__Group_1_0__0__Impl"
    // InternalFiacre.g:27351:1: rule__LTLBinary__Group_1_0__0__Impl : ( () ) ;
    public final void rule__LTLBinary__Group_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27355:1: ( ( () ) )
            // InternalFiacre.g:27356:1: ( () )
            {
            // InternalFiacre.g:27356:1: ( () )
            // InternalFiacre.g:27357:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getLTLUntilLeftAction_1_0_0()); 
            }
            // InternalFiacre.g:27358:2: ()
            // InternalFiacre.g:27358:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getLTLUntilLeftAction_1_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__0__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_0__1"
    // InternalFiacre.g:27366:1: rule__LTLBinary__Group_1_0__1 : rule__LTLBinary__Group_1_0__1__Impl rule__LTLBinary__Group_1_0__2 ;
    public final void rule__LTLBinary__Group_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27370:1: ( rule__LTLBinary__Group_1_0__1__Impl rule__LTLBinary__Group_1_0__2 )
            // InternalFiacre.g:27371:2: rule__LTLBinary__Group_1_0__1__Impl rule__LTLBinary__Group_1_0__2
            {
            pushFollow(FollowSets000.FOLLOW_132);
            rule__LTLBinary__Group_1_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__1"


    // $ANTLR start "rule__LTLBinary__Group_1_0__1__Impl"
    // InternalFiacre.g:27378:1: rule__LTLBinary__Group_1_0__1__Impl : ( 'until' ) ;
    public final void rule__LTLBinary__Group_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27382:1: ( ( 'until' ) )
            // InternalFiacre.g:27383:1: ( 'until' )
            {
            // InternalFiacre.g:27383:1: ( 'until' )
            // InternalFiacre.g:27384:2: 'until'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getUntilKeyword_1_0_1()); 
            }
            match(input,121,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getUntilKeyword_1_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__1__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_0__2"
    // InternalFiacre.g:27393:1: rule__LTLBinary__Group_1_0__2 : rule__LTLBinary__Group_1_0__2__Impl ;
    public final void rule__LTLBinary__Group_1_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27397:1: ( rule__LTLBinary__Group_1_0__2__Impl )
            // InternalFiacre.g:27398:2: rule__LTLBinary__Group_1_0__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__2"


    // $ANTLR start "rule__LTLBinary__Group_1_0__2__Impl"
    // InternalFiacre.g:27404:1: rule__LTLBinary__Group_1_0__2__Impl : ( ( rule__LTLBinary__RightAssignment_1_0_2 ) ) ;
    public final void rule__LTLBinary__Group_1_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27408:1: ( ( ( rule__LTLBinary__RightAssignment_1_0_2 ) ) )
            // InternalFiacre.g:27409:1: ( ( rule__LTLBinary__RightAssignment_1_0_2 ) )
            {
            // InternalFiacre.g:27409:1: ( ( rule__LTLBinary__RightAssignment_1_0_2 ) )
            // InternalFiacre.g:27410:2: ( rule__LTLBinary__RightAssignment_1_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getRightAssignment_1_0_2()); 
            }
            // InternalFiacre.g:27411:2: ( rule__LTLBinary__RightAssignment_1_0_2 )
            // InternalFiacre.g:27411:3: rule__LTLBinary__RightAssignment_1_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__RightAssignment_1_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getRightAssignment_1_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_0__2__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_1__0"
    // InternalFiacre.g:27420:1: rule__LTLBinary__Group_1_1__0 : rule__LTLBinary__Group_1_1__0__Impl rule__LTLBinary__Group_1_1__1 ;
    public final void rule__LTLBinary__Group_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27424:1: ( rule__LTLBinary__Group_1_1__0__Impl rule__LTLBinary__Group_1_1__1 )
            // InternalFiacre.g:27425:2: rule__LTLBinary__Group_1_1__0__Impl rule__LTLBinary__Group_1_1__1
            {
            pushFollow(FollowSets000.FOLLOW_144);
            rule__LTLBinary__Group_1_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__0"


    // $ANTLR start "rule__LTLBinary__Group_1_1__0__Impl"
    // InternalFiacre.g:27432:1: rule__LTLBinary__Group_1_1__0__Impl : ( () ) ;
    public final void rule__LTLBinary__Group_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27436:1: ( ( () ) )
            // InternalFiacre.g:27437:1: ( () )
            {
            // InternalFiacre.g:27437:1: ( () )
            // InternalFiacre.g:27438:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getLTLReleaseLeftAction_1_1_0()); 
            }
            // InternalFiacre.g:27439:2: ()
            // InternalFiacre.g:27439:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getLTLReleaseLeftAction_1_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__0__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_1__1"
    // InternalFiacre.g:27447:1: rule__LTLBinary__Group_1_1__1 : rule__LTLBinary__Group_1_1__1__Impl rule__LTLBinary__Group_1_1__2 ;
    public final void rule__LTLBinary__Group_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27451:1: ( rule__LTLBinary__Group_1_1__1__Impl rule__LTLBinary__Group_1_1__2 )
            // InternalFiacre.g:27452:2: rule__LTLBinary__Group_1_1__1__Impl rule__LTLBinary__Group_1_1__2
            {
            pushFollow(FollowSets000.FOLLOW_132);
            rule__LTLBinary__Group_1_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__1"


    // $ANTLR start "rule__LTLBinary__Group_1_1__1__Impl"
    // InternalFiacre.g:27459:1: rule__LTLBinary__Group_1_1__1__Impl : ( 'release' ) ;
    public final void rule__LTLBinary__Group_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27463:1: ( ( 'release' ) )
            // InternalFiacre.g:27464:1: ( 'release' )
            {
            // InternalFiacre.g:27464:1: ( 'release' )
            // InternalFiacre.g:27465:2: 'release'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getReleaseKeyword_1_1_1()); 
            }
            match(input,129,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getReleaseKeyword_1_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__1__Impl"


    // $ANTLR start "rule__LTLBinary__Group_1_1__2"
    // InternalFiacre.g:27474:1: rule__LTLBinary__Group_1_1__2 : rule__LTLBinary__Group_1_1__2__Impl ;
    public final void rule__LTLBinary__Group_1_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27478:1: ( rule__LTLBinary__Group_1_1__2__Impl )
            // InternalFiacre.g:27479:2: rule__LTLBinary__Group_1_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__Group_1_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__2"


    // $ANTLR start "rule__LTLBinary__Group_1_1__2__Impl"
    // InternalFiacre.g:27485:1: rule__LTLBinary__Group_1_1__2__Impl : ( ( rule__LTLBinary__RightAssignment_1_1_2 ) ) ;
    public final void rule__LTLBinary__Group_1_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27489:1: ( ( ( rule__LTLBinary__RightAssignment_1_1_2 ) ) )
            // InternalFiacre.g:27490:1: ( ( rule__LTLBinary__RightAssignment_1_1_2 ) )
            {
            // InternalFiacre.g:27490:1: ( ( rule__LTLBinary__RightAssignment_1_1_2 ) )
            // InternalFiacre.g:27491:2: ( rule__LTLBinary__RightAssignment_1_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getRightAssignment_1_1_2()); 
            }
            // InternalFiacre.g:27492:2: ( rule__LTLBinary__RightAssignment_1_1_2 )
            // InternalFiacre.g:27492:3: rule__LTLBinary__RightAssignment_1_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLBinary__RightAssignment_1_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getRightAssignment_1_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__Group_1_1__2__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0__0"
    // InternalFiacre.g:27501:1: rule__LTLUnary__Group_0__0 : rule__LTLUnary__Group_0__0__Impl rule__LTLUnary__Group_0__1 ;
    public final void rule__LTLUnary__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27505:1: ( rule__LTLUnary__Group_0__0__Impl rule__LTLUnary__Group_0__1 )
            // InternalFiacre.g:27506:2: rule__LTLUnary__Group_0__0__Impl rule__LTLUnary__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_132);
            rule__LTLUnary__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0__0"


    // $ANTLR start "rule__LTLUnary__Group_0__0__Impl"
    // InternalFiacre.g:27513:1: rule__LTLUnary__Group_0__0__Impl : ( ( rule__LTLUnary__Alternatives_0_0 ) ) ;
    public final void rule__LTLUnary__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27517:1: ( ( ( rule__LTLUnary__Alternatives_0_0 ) ) )
            // InternalFiacre.g:27518:1: ( ( rule__LTLUnary__Alternatives_0_0 ) )
            {
            // InternalFiacre.g:27518:1: ( ( rule__LTLUnary__Alternatives_0_0 ) )
            // InternalFiacre.g:27519:2: ( rule__LTLUnary__Alternatives_0_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getAlternatives_0_0()); 
            }
            // InternalFiacre.g:27520:2: ( rule__LTLUnary__Alternatives_0_0 )
            // InternalFiacre.g:27520:3: rule__LTLUnary__Alternatives_0_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Alternatives_0_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getAlternatives_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0__0__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0__1"
    // InternalFiacre.g:27528:1: rule__LTLUnary__Group_0__1 : rule__LTLUnary__Group_0__1__Impl ;
    public final void rule__LTLUnary__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27532:1: ( rule__LTLUnary__Group_0__1__Impl )
            // InternalFiacre.g:27533:2: rule__LTLUnary__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0__1"


    // $ANTLR start "rule__LTLUnary__Group_0__1__Impl"
    // InternalFiacre.g:27539:1: rule__LTLUnary__Group_0__1__Impl : ( ( rule__LTLUnary__OperandAssignment_0_1 ) ) ;
    public final void rule__LTLUnary__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27543:1: ( ( ( rule__LTLUnary__OperandAssignment_0_1 ) ) )
            // InternalFiacre.g:27544:1: ( ( rule__LTLUnary__OperandAssignment_0_1 ) )
            {
            // InternalFiacre.g:27544:1: ( ( rule__LTLUnary__OperandAssignment_0_1 ) )
            // InternalFiacre.g:27545:2: ( rule__LTLUnary__OperandAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getOperandAssignment_0_1()); 
            }
            // InternalFiacre.g:27546:2: ( rule__LTLUnary__OperandAssignment_0_1 )
            // InternalFiacre.g:27546:3: rule__LTLUnary__OperandAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__OperandAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getOperandAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0__1__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_0__0"
    // InternalFiacre.g:27555:1: rule__LTLUnary__Group_0_0_0__0 : rule__LTLUnary__Group_0_0_0__0__Impl rule__LTLUnary__Group_0_0_0__1 ;
    public final void rule__LTLUnary__Group_0_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27559:1: ( rule__LTLUnary__Group_0_0_0__0__Impl rule__LTLUnary__Group_0_0_0__1 )
            // InternalFiacre.g:27560:2: rule__LTLUnary__Group_0_0_0__0__Impl rule__LTLUnary__Group_0_0_0__1
            {
            pushFollow(FollowSets000.FOLLOW_113);
            rule__LTLUnary__Group_0_0_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_0__0"


    // $ANTLR start "rule__LTLUnary__Group_0_0_0__0__Impl"
    // InternalFiacre.g:27567:1: rule__LTLUnary__Group_0_0_0__0__Impl : ( () ) ;
    public final void rule__LTLUnary__Group_0_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27571:1: ( ( () ) )
            // InternalFiacre.g:27572:1: ( () )
            {
            // InternalFiacre.g:27572:1: ( () )
            // InternalFiacre.g:27573:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLTLUnaryNegationAction_0_0_0_0()); 
            }
            // InternalFiacre.g:27574:2: ()
            // InternalFiacre.g:27574:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLTLUnaryNegationAction_0_0_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_0__0__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_0__1"
    // InternalFiacre.g:27582:1: rule__LTLUnary__Group_0_0_0__1 : rule__LTLUnary__Group_0_0_0__1__Impl ;
    public final void rule__LTLUnary__Group_0_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27586:1: ( rule__LTLUnary__Group_0_0_0__1__Impl )
            // InternalFiacre.g:27587:2: rule__LTLUnary__Group_0_0_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_0__1"


    // $ANTLR start "rule__LTLUnary__Group_0_0_0__1__Impl"
    // InternalFiacre.g:27593:1: rule__LTLUnary__Group_0_0_0__1__Impl : ( 'not' ) ;
    public final void rule__LTLUnary__Group_0_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27597:1: ( ( 'not' ) )
            // InternalFiacre.g:27598:1: ( 'not' )
            {
            // InternalFiacre.g:27598:1: ( 'not' )
            // InternalFiacre.g:27599:2: 'not'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getNotKeyword_0_0_0_1()); 
            }
            match(input,91,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getNotKeyword_0_0_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_0__1__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_1__0"
    // InternalFiacre.g:27609:1: rule__LTLUnary__Group_0_0_1__0 : rule__LTLUnary__Group_0_0_1__0__Impl rule__LTLUnary__Group_0_0_1__1 ;
    public final void rule__LTLUnary__Group_0_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27613:1: ( rule__LTLUnary__Group_0_0_1__0__Impl rule__LTLUnary__Group_0_0_1__1 )
            // InternalFiacre.g:27614:2: rule__LTLUnary__Group_0_0_1__0__Impl rule__LTLUnary__Group_0_0_1__1
            {
            pushFollow(FollowSets000.FOLLOW_145);
            rule__LTLUnary__Group_0_0_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_1__0"


    // $ANTLR start "rule__LTLUnary__Group_0_0_1__0__Impl"
    // InternalFiacre.g:27621:1: rule__LTLUnary__Group_0_0_1__0__Impl : ( () ) ;
    public final void rule__LTLUnary__Group_0_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27625:1: ( ( () ) )
            // InternalFiacre.g:27626:1: ( () )
            {
            // InternalFiacre.g:27626:1: ( () )
            // InternalFiacre.g:27627:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLTLUnaryNextAction_0_0_1_0()); 
            }
            // InternalFiacre.g:27628:2: ()
            // InternalFiacre.g:27628:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLTLUnaryNextAction_0_0_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_1__0__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_1__1"
    // InternalFiacre.g:27636:1: rule__LTLUnary__Group_0_0_1__1 : rule__LTLUnary__Group_0_0_1__1__Impl ;
    public final void rule__LTLUnary__Group_0_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27640:1: ( rule__LTLUnary__Group_0_0_1__1__Impl )
            // InternalFiacre.g:27641:2: rule__LTLUnary__Group_0_0_1__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_1__1"


    // $ANTLR start "rule__LTLUnary__Group_0_0_1__1__Impl"
    // InternalFiacre.g:27647:1: rule__LTLUnary__Group_0_0_1__1__Impl : ( 'next' ) ;
    public final void rule__LTLUnary__Group_0_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27651:1: ( ( 'next' ) )
            // InternalFiacre.g:27652:1: ( 'next' )
            {
            // InternalFiacre.g:27652:1: ( 'next' )
            // InternalFiacre.g:27653:2: 'next'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getNextKeyword_0_0_1_1()); 
            }
            match(input,130,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getNextKeyword_0_0_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_1__1__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_2__0"
    // InternalFiacre.g:27663:1: rule__LTLUnary__Group_0_0_2__0 : rule__LTLUnary__Group_0_0_2__0__Impl rule__LTLUnary__Group_0_0_2__1 ;
    public final void rule__LTLUnary__Group_0_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27667:1: ( rule__LTLUnary__Group_0_0_2__0__Impl rule__LTLUnary__Group_0_0_2__1 )
            // InternalFiacre.g:27668:2: rule__LTLUnary__Group_0_0_2__0__Impl rule__LTLUnary__Group_0_0_2__1
            {
            pushFollow(FollowSets000.FOLLOW_56);
            rule__LTLUnary__Group_0_0_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_2__0"


    // $ANTLR start "rule__LTLUnary__Group_0_0_2__0__Impl"
    // InternalFiacre.g:27675:1: rule__LTLUnary__Group_0_0_2__0__Impl : ( () ) ;
    public final void rule__LTLUnary__Group_0_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27679:1: ( ( () ) )
            // InternalFiacre.g:27680:1: ( () )
            {
            // InternalFiacre.g:27680:1: ( () )
            // InternalFiacre.g:27681:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLTLUnaryAlwaysAction_0_0_2_0()); 
            }
            // InternalFiacre.g:27682:2: ()
            // InternalFiacre.g:27682:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLTLUnaryAlwaysAction_0_0_2_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_2__0__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_2__1"
    // InternalFiacre.g:27690:1: rule__LTLUnary__Group_0_0_2__1 : rule__LTLUnary__Group_0_0_2__1__Impl ;
    public final void rule__LTLUnary__Group_0_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27694:1: ( rule__LTLUnary__Group_0_0_2__1__Impl )
            // InternalFiacre.g:27695:2: rule__LTLUnary__Group_0_0_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_2__1"


    // $ANTLR start "rule__LTLUnary__Group_0_0_2__1__Impl"
    // InternalFiacre.g:27701:1: rule__LTLUnary__Group_0_0_2__1__Impl : ( '[]' ) ;
    public final void rule__LTLUnary__Group_0_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27705:1: ( ( '[]' ) )
            // InternalFiacre.g:27706:1: ( '[]' )
            {
            // InternalFiacre.g:27706:1: ( '[]' )
            // InternalFiacre.g:27707:2: '[]'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLeftSquareBracketRightSquareBracketKeyword_0_0_2_1()); 
            }
            match(input,52,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLeftSquareBracketRightSquareBracketKeyword_0_0_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_2__1__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_3__0"
    // InternalFiacre.g:27717:1: rule__LTLUnary__Group_0_0_3__0 : rule__LTLUnary__Group_0_0_3__0__Impl rule__LTLUnary__Group_0_0_3__1 ;
    public final void rule__LTLUnary__Group_0_0_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27721:1: ( rule__LTLUnary__Group_0_0_3__0__Impl rule__LTLUnary__Group_0_0_3__1 )
            // InternalFiacre.g:27722:2: rule__LTLUnary__Group_0_0_3__0__Impl rule__LTLUnary__Group_0_0_3__1
            {
            pushFollow(FollowSets000.FOLLOW_146);
            rule__LTLUnary__Group_0_0_3__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_3__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_3__0"


    // $ANTLR start "rule__LTLUnary__Group_0_0_3__0__Impl"
    // InternalFiacre.g:27729:1: rule__LTLUnary__Group_0_0_3__0__Impl : ( () ) ;
    public final void rule__LTLUnary__Group_0_0_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27733:1: ( ( () ) )
            // InternalFiacre.g:27734:1: ( () )
            {
            // InternalFiacre.g:27734:1: ( () )
            // InternalFiacre.g:27735:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLTLUnaryEventuallyAction_0_0_3_0()); 
            }
            // InternalFiacre.g:27736:2: ()
            // InternalFiacre.g:27736:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLTLUnaryEventuallyAction_0_0_3_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_3__0__Impl"


    // $ANTLR start "rule__LTLUnary__Group_0_0_3__1"
    // InternalFiacre.g:27744:1: rule__LTLUnary__Group_0_0_3__1 : rule__LTLUnary__Group_0_0_3__1__Impl ;
    public final void rule__LTLUnary__Group_0_0_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27748:1: ( rule__LTLUnary__Group_0_0_3__1__Impl )
            // InternalFiacre.g:27749:2: rule__LTLUnary__Group_0_0_3__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LTLUnary__Group_0_0_3__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_3__1"


    // $ANTLR start "rule__LTLUnary__Group_0_0_3__1__Impl"
    // InternalFiacre.g:27755:1: rule__LTLUnary__Group_0_0_3__1__Impl : ( '<>' ) ;
    public final void rule__LTLUnary__Group_0_0_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27759:1: ( ( '<>' ) )
            // InternalFiacre.g:27760:1: ( '<>' )
            {
            // InternalFiacre.g:27760:1: ( '<>' )
            // InternalFiacre.g:27761:2: '<>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getLessThanSignGreaterThanSignKeyword_0_0_3_1()); 
            }
            match(input,83,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getLessThanSignGreaterThanSignKeyword_0_0_3_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__Group_0_0_3__1__Impl"


    // $ANTLR start "rule__AtomicLTL__Group_0__0"
    // InternalFiacre.g:27771:1: rule__AtomicLTL__Group_0__0 : rule__AtomicLTL__Group_0__0__Impl rule__AtomicLTL__Group_0__1 ;
    public final void rule__AtomicLTL__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27775:1: ( rule__AtomicLTL__Group_0__0__Impl rule__AtomicLTL__Group_0__1 )
            // InternalFiacre.g:27776:2: rule__AtomicLTL__Group_0__0__Impl rule__AtomicLTL__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__AtomicLTL__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_0__0"


    // $ANTLR start "rule__AtomicLTL__Group_0__0__Impl"
    // InternalFiacre.g:27783:1: rule__AtomicLTL__Group_0__0__Impl : ( () ) ;
    public final void rule__AtomicLTL__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27787:1: ( ( () ) )
            // InternalFiacre.g:27788:1: ( () )
            {
            // InternalFiacre.g:27788:1: ( () )
            // InternalFiacre.g:27789:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getLTLVariableAction_0_0()); 
            }
            // InternalFiacre.g:27790:2: ()
            // InternalFiacre.g:27790:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getLTLVariableAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_0__0__Impl"


    // $ANTLR start "rule__AtomicLTL__Group_0__1"
    // InternalFiacre.g:27798:1: rule__AtomicLTL__Group_0__1 : rule__AtomicLTL__Group_0__1__Impl ;
    public final void rule__AtomicLTL__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27802:1: ( rule__AtomicLTL__Group_0__1__Impl )
            // InternalFiacre.g:27803:2: rule__AtomicLTL__Group_0__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_0__1"


    // $ANTLR start "rule__AtomicLTL__Group_0__1__Impl"
    // InternalFiacre.g:27809:1: rule__AtomicLTL__Group_0__1__Impl : ( ( rule__AtomicLTL__DeclarationAssignment_0_1 ) ) ;
    public final void rule__AtomicLTL__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27813:1: ( ( ( rule__AtomicLTL__DeclarationAssignment_0_1 ) ) )
            // InternalFiacre.g:27814:1: ( ( rule__AtomicLTL__DeclarationAssignment_0_1 ) )
            {
            // InternalFiacre.g:27814:1: ( ( rule__AtomicLTL__DeclarationAssignment_0_1 ) )
            // InternalFiacre.g:27815:2: ( rule__AtomicLTL__DeclarationAssignment_0_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getDeclarationAssignment_0_1()); 
            }
            // InternalFiacre.g:27816:2: ( rule__AtomicLTL__DeclarationAssignment_0_1 )
            // InternalFiacre.g:27816:3: rule__AtomicLTL__DeclarationAssignment_0_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__DeclarationAssignment_0_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getDeclarationAssignment_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_0__1__Impl"


    // $ANTLR start "rule__AtomicLTL__Group_2__0"
    // InternalFiacre.g:27825:1: rule__AtomicLTL__Group_2__0 : rule__AtomicLTL__Group_2__0__Impl rule__AtomicLTL__Group_2__1 ;
    public final void rule__AtomicLTL__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27829:1: ( rule__AtomicLTL__Group_2__0__Impl rule__AtomicLTL__Group_2__1 )
            // InternalFiacre.g:27830:2: rule__AtomicLTL__Group_2__0__Impl rule__AtomicLTL__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_143);
            rule__AtomicLTL__Group_2__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Group_2__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__0"


    // $ANTLR start "rule__AtomicLTL__Group_2__0__Impl"
    // InternalFiacre.g:27837:1: rule__AtomicLTL__Group_2__0__Impl : ( '(' ) ;
    public final void rule__AtomicLTL__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27841:1: ( ( '(' ) )
            // InternalFiacre.g:27842:1: ( '(' )
            {
            // InternalFiacre.g:27842:1: ( '(' )
            // InternalFiacre.g:27843:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getLeftParenthesisKeyword_2_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getLeftParenthesisKeyword_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__0__Impl"


    // $ANTLR start "rule__AtomicLTL__Group_2__1"
    // InternalFiacre.g:27852:1: rule__AtomicLTL__Group_2__1 : rule__AtomicLTL__Group_2__1__Impl rule__AtomicLTL__Group_2__2 ;
    public final void rule__AtomicLTL__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27856:1: ( rule__AtomicLTL__Group_2__1__Impl rule__AtomicLTL__Group_2__2 )
            // InternalFiacre.g:27857:2: rule__AtomicLTL__Group_2__1__Impl rule__AtomicLTL__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__AtomicLTL__Group_2__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Group_2__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__1"


    // $ANTLR start "rule__AtomicLTL__Group_2__1__Impl"
    // InternalFiacre.g:27864:1: rule__AtomicLTL__Group_2__1__Impl : ( ruleLTLProperty ) ;
    public final void rule__AtomicLTL__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27868:1: ( ( ruleLTLProperty ) )
            // InternalFiacre.g:27869:1: ( ruleLTLProperty )
            {
            // InternalFiacre.g:27869:1: ( ruleLTLProperty )
            // InternalFiacre.g:27870:2: ruleLTLProperty
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getLTLPropertyParserRuleCall_2_1()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getLTLPropertyParserRuleCall_2_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__1__Impl"


    // $ANTLR start "rule__AtomicLTL__Group_2__2"
    // InternalFiacre.g:27879:1: rule__AtomicLTL__Group_2__2 : rule__AtomicLTL__Group_2__2__Impl ;
    public final void rule__AtomicLTL__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27883:1: ( rule__AtomicLTL__Group_2__2__Impl )
            // InternalFiacre.g:27884:2: rule__AtomicLTL__Group_2__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicLTL__Group_2__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__2"


    // $ANTLR start "rule__AtomicLTL__Group_2__2__Impl"
    // InternalFiacre.g:27890:1: rule__AtomicLTL__Group_2__2__Impl : ( ')' ) ;
    public final void rule__AtomicLTL__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27894:1: ( ( ')' ) )
            // InternalFiacre.g:27895:1: ( ')' )
            {
            // InternalFiacre.g:27895:1: ( ')' )
            // InternalFiacre.g:27896:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getRightParenthesisKeyword_2_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getRightParenthesisKeyword_2_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__Group_2__2__Impl"


    // $ANTLR start "rule__EnterStateEvent__Group__0"
    // InternalFiacre.g:27906:1: rule__EnterStateEvent__Group__0 : rule__EnterStateEvent__Group__0__Impl rule__EnterStateEvent__Group__1 ;
    public final void rule__EnterStateEvent__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27910:1: ( rule__EnterStateEvent__Group__0__Impl rule__EnterStateEvent__Group__1 )
            // InternalFiacre.g:27911:2: rule__EnterStateEvent__Group__0__Impl rule__EnterStateEvent__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__EnterStateEvent__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnterStateEvent__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnterStateEvent__Group__0"


    // $ANTLR start "rule__EnterStateEvent__Group__0__Impl"
    // InternalFiacre.g:27918:1: rule__EnterStateEvent__Group__0__Impl : ( 'enter' ) ;
    public final void rule__EnterStateEvent__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27922:1: ( ( 'enter' ) )
            // InternalFiacre.g:27923:1: ( 'enter' )
            {
            // InternalFiacre.g:27923:1: ( 'enter' )
            // InternalFiacre.g:27924:2: 'enter'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnterStateEventAccess().getEnterKeyword_0()); 
            }
            match(input,131,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnterStateEventAccess().getEnterKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnterStateEvent__Group__0__Impl"


    // $ANTLR start "rule__EnterStateEvent__Group__1"
    // InternalFiacre.g:27933:1: rule__EnterStateEvent__Group__1 : rule__EnterStateEvent__Group__1__Impl ;
    public final void rule__EnterStateEvent__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27937:1: ( rule__EnterStateEvent__Group__1__Impl )
            // InternalFiacre.g:27938:2: rule__EnterStateEvent__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnterStateEvent__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnterStateEvent__Group__1"


    // $ANTLR start "rule__EnterStateEvent__Group__1__Impl"
    // InternalFiacre.g:27944:1: rule__EnterStateEvent__Group__1__Impl : ( ( rule__EnterStateEvent__SubjectAssignment_1 ) ) ;
    public final void rule__EnterStateEvent__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27948:1: ( ( ( rule__EnterStateEvent__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:27949:1: ( ( rule__EnterStateEvent__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:27949:1: ( ( rule__EnterStateEvent__SubjectAssignment_1 ) )
            // InternalFiacre.g:27950:2: ( rule__EnterStateEvent__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnterStateEventAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:27951:2: ( rule__EnterStateEvent__SubjectAssignment_1 )
            // InternalFiacre.g:27951:3: rule__EnterStateEvent__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EnterStateEvent__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnterStateEventAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnterStateEvent__Group__1__Impl"


    // $ANTLR start "rule__LeaveStateEvent__Group__0"
    // InternalFiacre.g:27960:1: rule__LeaveStateEvent__Group__0 : rule__LeaveStateEvent__Group__0__Impl rule__LeaveStateEvent__Group__1 ;
    public final void rule__LeaveStateEvent__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27964:1: ( rule__LeaveStateEvent__Group__0__Impl rule__LeaveStateEvent__Group__1 )
            // InternalFiacre.g:27965:2: rule__LeaveStateEvent__Group__0__Impl rule__LeaveStateEvent__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_134);
            rule__LeaveStateEvent__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LeaveStateEvent__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LeaveStateEvent__Group__0"


    // $ANTLR start "rule__LeaveStateEvent__Group__0__Impl"
    // InternalFiacre.g:27972:1: rule__LeaveStateEvent__Group__0__Impl : ( 'leave' ) ;
    public final void rule__LeaveStateEvent__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27976:1: ( ( 'leave' ) )
            // InternalFiacre.g:27977:1: ( 'leave' )
            {
            // InternalFiacre.g:27977:1: ( 'leave' )
            // InternalFiacre.g:27978:2: 'leave'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLeaveStateEventAccess().getLeaveKeyword_0()); 
            }
            match(input,132,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLeaveStateEventAccess().getLeaveKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LeaveStateEvent__Group__0__Impl"


    // $ANTLR start "rule__LeaveStateEvent__Group__1"
    // InternalFiacre.g:27987:1: rule__LeaveStateEvent__Group__1 : rule__LeaveStateEvent__Group__1__Impl ;
    public final void rule__LeaveStateEvent__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:27991:1: ( rule__LeaveStateEvent__Group__1__Impl )
            // InternalFiacre.g:27992:2: rule__LeaveStateEvent__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LeaveStateEvent__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LeaveStateEvent__Group__1"


    // $ANTLR start "rule__LeaveStateEvent__Group__1__Impl"
    // InternalFiacre.g:27998:1: rule__LeaveStateEvent__Group__1__Impl : ( ( rule__LeaveStateEvent__SubjectAssignment_1 ) ) ;
    public final void rule__LeaveStateEvent__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28002:1: ( ( ( rule__LeaveStateEvent__SubjectAssignment_1 ) ) )
            // InternalFiacre.g:28003:1: ( ( rule__LeaveStateEvent__SubjectAssignment_1 ) )
            {
            // InternalFiacre.g:28003:1: ( ( rule__LeaveStateEvent__SubjectAssignment_1 ) )
            // InternalFiacre.g:28004:2: ( rule__LeaveStateEvent__SubjectAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLeaveStateEventAccess().getSubjectAssignment_1()); 
            }
            // InternalFiacre.g:28005:2: ( rule__LeaveStateEvent__SubjectAssignment_1 )
            // InternalFiacre.g:28005:3: rule__LeaveStateEvent__SubjectAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LeaveStateEvent__SubjectAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getLeaveStateEventAccess().getSubjectAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LeaveStateEvent__Group__1__Impl"


    // $ANTLR start "rule__ObservableDisjunction__Group__0"
    // InternalFiacre.g:28014:1: rule__ObservableDisjunction__Group__0 : rule__ObservableDisjunction__Group__0__Impl rule__ObservableDisjunction__Group__1 ;
    public final void rule__ObservableDisjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28018:1: ( rule__ObservableDisjunction__Group__0__Impl rule__ObservableDisjunction__Group__1 )
            // InternalFiacre.g:28019:2: rule__ObservableDisjunction__Group__0__Impl rule__ObservableDisjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__ObservableDisjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group__0"


    // $ANTLR start "rule__ObservableDisjunction__Group__0__Impl"
    // InternalFiacre.g:28026:1: rule__ObservableDisjunction__Group__0__Impl : ( ruleObservableImplication ) ;
    public final void rule__ObservableDisjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28030:1: ( ( ruleObservableImplication ) )
            // InternalFiacre.g:28031:1: ( ruleObservableImplication )
            {
            // InternalFiacre.g:28031:1: ( ruleObservableImplication )
            // InternalFiacre.g:28032:2: ruleObservableImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getObservableImplicationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getObservableImplicationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group__0__Impl"


    // $ANTLR start "rule__ObservableDisjunction__Group__1"
    // InternalFiacre.g:28041:1: rule__ObservableDisjunction__Group__1 : rule__ObservableDisjunction__Group__1__Impl ;
    public final void rule__ObservableDisjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28045:1: ( rule__ObservableDisjunction__Group__1__Impl )
            // InternalFiacre.g:28046:2: rule__ObservableDisjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group__1"


    // $ANTLR start "rule__ObservableDisjunction__Group__1__Impl"
    // InternalFiacre.g:28052:1: rule__ObservableDisjunction__Group__1__Impl : ( ( rule__ObservableDisjunction__Group_1__0 )* ) ;
    public final void rule__ObservableDisjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28056:1: ( ( ( rule__ObservableDisjunction__Group_1__0 )* ) )
            // InternalFiacre.g:28057:1: ( ( rule__ObservableDisjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:28057:1: ( ( rule__ObservableDisjunction__Group_1__0 )* )
            // InternalFiacre.g:28058:2: ( rule__ObservableDisjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:28059:2: ( rule__ObservableDisjunction__Group_1__0 )*
            loop197:
            do {
                int alt197=2;
                int LA197_0 = input.LA(1);

                if ( (LA197_0==79) ) {
                    alt197=1;
                }


                switch (alt197) {
            	case 1 :
            	    // InternalFiacre.g:28059:3: rule__ObservableDisjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_94);
            	    rule__ObservableDisjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop197;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group__1__Impl"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__0"
    // InternalFiacre.g:28068:1: rule__ObservableDisjunction__Group_1__0 : rule__ObservableDisjunction__Group_1__0__Impl rule__ObservableDisjunction__Group_1__1 ;
    public final void rule__ObservableDisjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28072:1: ( rule__ObservableDisjunction__Group_1__0__Impl rule__ObservableDisjunction__Group_1__1 )
            // InternalFiacre.g:28073:2: rule__ObservableDisjunction__Group_1__0__Impl rule__ObservableDisjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_93);
            rule__ObservableDisjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__0"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__0__Impl"
    // InternalFiacre.g:28080:1: rule__ObservableDisjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__ObservableDisjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28084:1: ( ( () ) )
            // InternalFiacre.g:28085:1: ( () )
            {
            // InternalFiacre.g:28085:1: ( () )
            // InternalFiacre.g:28086:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getObservableDisjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:28087:2: ()
            // InternalFiacre.g:28087:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getObservableDisjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__0__Impl"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__1"
    // InternalFiacre.g:28095:1: rule__ObservableDisjunction__Group_1__1 : rule__ObservableDisjunction__Group_1__1__Impl rule__ObservableDisjunction__Group_1__2 ;
    public final void rule__ObservableDisjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28099:1: ( rule__ObservableDisjunction__Group_1__1__Impl rule__ObservableDisjunction__Group_1__2 )
            // InternalFiacre.g:28100:2: rule__ObservableDisjunction__Group_1__1__Impl rule__ObservableDisjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_147);
            rule__ObservableDisjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__1"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__1__Impl"
    // InternalFiacre.g:28107:1: rule__ObservableDisjunction__Group_1__1__Impl : ( 'or' ) ;
    public final void rule__ObservableDisjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28111:1: ( ( 'or' ) )
            // InternalFiacre.g:28112:1: ( 'or' )
            {
            // InternalFiacre.g:28112:1: ( 'or' )
            // InternalFiacre.g:28113:2: 'or'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getOrKeyword_1_1()); 
            }
            match(input,79,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getOrKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__1__Impl"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__2"
    // InternalFiacre.g:28122:1: rule__ObservableDisjunction__Group_1__2 : rule__ObservableDisjunction__Group_1__2__Impl ;
    public final void rule__ObservableDisjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28126:1: ( rule__ObservableDisjunction__Group_1__2__Impl )
            // InternalFiacre.g:28127:2: rule__ObservableDisjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__2"


    // $ANTLR start "rule__ObservableDisjunction__Group_1__2__Impl"
    // InternalFiacre.g:28133:1: rule__ObservableDisjunction__Group_1__2__Impl : ( ( rule__ObservableDisjunction__RightAssignment_1_2 ) ) ;
    public final void rule__ObservableDisjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28137:1: ( ( ( rule__ObservableDisjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:28138:1: ( ( rule__ObservableDisjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:28138:1: ( ( rule__ObservableDisjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:28139:2: ( rule__ObservableDisjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:28140:2: ( rule__ObservableDisjunction__RightAssignment_1_2 )
            // InternalFiacre.g:28140:3: rule__ObservableDisjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableDisjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__Group_1__2__Impl"


    // $ANTLR start "rule__ObservableImplication__Group__0"
    // InternalFiacre.g:28149:1: rule__ObservableImplication__Group__0 : rule__ObservableImplication__Group__0__Impl rule__ObservableImplication__Group__1 ;
    public final void rule__ObservableImplication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28153:1: ( rule__ObservableImplication__Group__0__Impl rule__ObservableImplication__Group__1 )
            // InternalFiacre.g:28154:2: rule__ObservableImplication__Group__0__Impl rule__ObservableImplication__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__ObservableImplication__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group__0"


    // $ANTLR start "rule__ObservableImplication__Group__0__Impl"
    // InternalFiacre.g:28161:1: rule__ObservableImplication__Group__0__Impl : ( ruleObservableConjunction ) ;
    public final void rule__ObservableImplication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28165:1: ( ( ruleObservableConjunction ) )
            // InternalFiacre.g:28166:1: ( ruleObservableConjunction )
            {
            // InternalFiacre.g:28166:1: ( ruleObservableConjunction )
            // InternalFiacre.g:28167:2: ruleObservableConjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getObservableConjunctionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableConjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getObservableConjunctionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group__0__Impl"


    // $ANTLR start "rule__ObservableImplication__Group__1"
    // InternalFiacre.g:28176:1: rule__ObservableImplication__Group__1 : rule__ObservableImplication__Group__1__Impl ;
    public final void rule__ObservableImplication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28180:1: ( rule__ObservableImplication__Group__1__Impl )
            // InternalFiacre.g:28181:2: rule__ObservableImplication__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group__1"


    // $ANTLR start "rule__ObservableImplication__Group__1__Impl"
    // InternalFiacre.g:28187:1: rule__ObservableImplication__Group__1__Impl : ( ( rule__ObservableImplication__Group_1__0 )? ) ;
    public final void rule__ObservableImplication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28191:1: ( ( ( rule__ObservableImplication__Group_1__0 )? ) )
            // InternalFiacre.g:28192:1: ( ( rule__ObservableImplication__Group_1__0 )? )
            {
            // InternalFiacre.g:28192:1: ( ( rule__ObservableImplication__Group_1__0 )? )
            // InternalFiacre.g:28193:2: ( rule__ObservableImplication__Group_1__0 )?
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getGroup_1()); 
            }
            // InternalFiacre.g:28194:2: ( rule__ObservableImplication__Group_1__0 )?
            int alt198=2;
            int LA198_0 = input.LA(1);

            if ( (LA198_0==80) ) {
                alt198=1;
            }
            switch (alt198) {
                case 1 :
                    // InternalFiacre.g:28194:3: rule__ObservableImplication__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_2);
                    rule__ObservableImplication__Group_1__0();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group__1__Impl"


    // $ANTLR start "rule__ObservableImplication__Group_1__0"
    // InternalFiacre.g:28203:1: rule__ObservableImplication__Group_1__0 : rule__ObservableImplication__Group_1__0__Impl rule__ObservableImplication__Group_1__1 ;
    public final void rule__ObservableImplication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28207:1: ( rule__ObservableImplication__Group_1__0__Impl rule__ObservableImplication__Group_1__1 )
            // InternalFiacre.g:28208:2: rule__ObservableImplication__Group_1__0__Impl rule__ObservableImplication__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_95);
            rule__ObservableImplication__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__0"


    // $ANTLR start "rule__ObservableImplication__Group_1__0__Impl"
    // InternalFiacre.g:28215:1: rule__ObservableImplication__Group_1__0__Impl : ( () ) ;
    public final void rule__ObservableImplication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28219:1: ( ( () ) )
            // InternalFiacre.g:28220:1: ( () )
            {
            // InternalFiacre.g:28220:1: ( () )
            // InternalFiacre.g:28221:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getObservableImplicationLeftAction_1_0()); 
            }
            // InternalFiacre.g:28222:2: ()
            // InternalFiacre.g:28222:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getObservableImplicationLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__0__Impl"


    // $ANTLR start "rule__ObservableImplication__Group_1__1"
    // InternalFiacre.g:28230:1: rule__ObservableImplication__Group_1__1 : rule__ObservableImplication__Group_1__1__Impl rule__ObservableImplication__Group_1__2 ;
    public final void rule__ObservableImplication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28234:1: ( rule__ObservableImplication__Group_1__1__Impl rule__ObservableImplication__Group_1__2 )
            // InternalFiacre.g:28235:2: rule__ObservableImplication__Group_1__1__Impl rule__ObservableImplication__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_147);
            rule__ObservableImplication__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__1"


    // $ANTLR start "rule__ObservableImplication__Group_1__1__Impl"
    // InternalFiacre.g:28242:1: rule__ObservableImplication__Group_1__1__Impl : ( '=>' ) ;
    public final void rule__ObservableImplication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28246:1: ( ( '=>' ) )
            // InternalFiacre.g:28247:1: ( '=>' )
            {
            // InternalFiacre.g:28247:1: ( '=>' )
            // InternalFiacre.g:28248:2: '=>'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }
            match(input,80,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getEqualsSignGreaterThanSignKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__1__Impl"


    // $ANTLR start "rule__ObservableImplication__Group_1__2"
    // InternalFiacre.g:28257:1: rule__ObservableImplication__Group_1__2 : rule__ObservableImplication__Group_1__2__Impl ;
    public final void rule__ObservableImplication__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28261:1: ( rule__ObservableImplication__Group_1__2__Impl )
            // InternalFiacre.g:28262:2: rule__ObservableImplication__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__2"


    // $ANTLR start "rule__ObservableImplication__Group_1__2__Impl"
    // InternalFiacre.g:28268:1: rule__ObservableImplication__Group_1__2__Impl : ( ( rule__ObservableImplication__RightAssignment_1_2 ) ) ;
    public final void rule__ObservableImplication__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28272:1: ( ( ( rule__ObservableImplication__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:28273:1: ( ( rule__ObservableImplication__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:28273:1: ( ( rule__ObservableImplication__RightAssignment_1_2 ) )
            // InternalFiacre.g:28274:2: ( rule__ObservableImplication__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:28275:2: ( rule__ObservableImplication__RightAssignment_1_2 )
            // InternalFiacre.g:28275:3: rule__ObservableImplication__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableImplication__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__Group_1__2__Impl"


    // $ANTLR start "rule__ObservableConjunction__Group__0"
    // InternalFiacre.g:28284:1: rule__ObservableConjunction__Group__0 : rule__ObservableConjunction__Group__0__Impl rule__ObservableConjunction__Group__1 ;
    public final void rule__ObservableConjunction__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28288:1: ( rule__ObservableConjunction__Group__0__Impl rule__ObservableConjunction__Group__1 )
            // InternalFiacre.g:28289:2: rule__ObservableConjunction__Group__0__Impl rule__ObservableConjunction__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__ObservableConjunction__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group__0"


    // $ANTLR start "rule__ObservableConjunction__Group__0__Impl"
    // InternalFiacre.g:28296:1: rule__ObservableConjunction__Group__0__Impl : ( ruleObservableNegation ) ;
    public final void rule__ObservableConjunction__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28300:1: ( ( ruleObservableNegation ) )
            // InternalFiacre.g:28301:1: ( ruleObservableNegation )
            {
            // InternalFiacre.g:28301:1: ( ruleObservableNegation )
            // InternalFiacre.g:28302:2: ruleObservableNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getObservableNegationParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getObservableNegationParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group__0__Impl"


    // $ANTLR start "rule__ObservableConjunction__Group__1"
    // InternalFiacre.g:28311:1: rule__ObservableConjunction__Group__1 : rule__ObservableConjunction__Group__1__Impl ;
    public final void rule__ObservableConjunction__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28315:1: ( rule__ObservableConjunction__Group__1__Impl )
            // InternalFiacre.g:28316:2: rule__ObservableConjunction__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group__1"


    // $ANTLR start "rule__ObservableConjunction__Group__1__Impl"
    // InternalFiacre.g:28322:1: rule__ObservableConjunction__Group__1__Impl : ( ( rule__ObservableConjunction__Group_1__0 )* ) ;
    public final void rule__ObservableConjunction__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28326:1: ( ( ( rule__ObservableConjunction__Group_1__0 )* ) )
            // InternalFiacre.g:28327:1: ( ( rule__ObservableConjunction__Group_1__0 )* )
            {
            // InternalFiacre.g:28327:1: ( ( rule__ObservableConjunction__Group_1__0 )* )
            // InternalFiacre.g:28328:2: ( rule__ObservableConjunction__Group_1__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getGroup_1()); 
            }
            // InternalFiacre.g:28329:2: ( rule__ObservableConjunction__Group_1__0 )*
            loop199:
            do {
                int alt199=2;
                int LA199_0 = input.LA(1);

                if ( (LA199_0==81) ) {
                    alt199=1;
                }


                switch (alt199) {
            	case 1 :
            	    // InternalFiacre.g:28329:3: rule__ObservableConjunction__Group_1__0
            	    {
            	    pushFollow(FollowSets000.FOLLOW_97);
            	    rule__ObservableConjunction__Group_1__0();

            	    state._fsp--;
            	    if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop199;
                }
            } while (true);

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getGroup_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group__1__Impl"


    // $ANTLR start "rule__ObservableConjunction__Group_1__0"
    // InternalFiacre.g:28338:1: rule__ObservableConjunction__Group_1__0 : rule__ObservableConjunction__Group_1__0__Impl rule__ObservableConjunction__Group_1__1 ;
    public final void rule__ObservableConjunction__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28342:1: ( rule__ObservableConjunction__Group_1__0__Impl rule__ObservableConjunction__Group_1__1 )
            // InternalFiacre.g:28343:2: rule__ObservableConjunction__Group_1__0__Impl rule__ObservableConjunction__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_96);
            rule__ObservableConjunction__Group_1__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group_1__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__0"


    // $ANTLR start "rule__ObservableConjunction__Group_1__0__Impl"
    // InternalFiacre.g:28350:1: rule__ObservableConjunction__Group_1__0__Impl : ( () ) ;
    public final void rule__ObservableConjunction__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28354:1: ( ( () ) )
            // InternalFiacre.g:28355:1: ( () )
            {
            // InternalFiacre.g:28355:1: ( () )
            // InternalFiacre.g:28356:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getObservableConjunctionLeftAction_1_0()); 
            }
            // InternalFiacre.g:28357:2: ()
            // InternalFiacre.g:28357:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getObservableConjunctionLeftAction_1_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__0__Impl"


    // $ANTLR start "rule__ObservableConjunction__Group_1__1"
    // InternalFiacre.g:28365:1: rule__ObservableConjunction__Group_1__1 : rule__ObservableConjunction__Group_1__1__Impl rule__ObservableConjunction__Group_1__2 ;
    public final void rule__ObservableConjunction__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28369:1: ( rule__ObservableConjunction__Group_1__1__Impl rule__ObservableConjunction__Group_1__2 )
            // InternalFiacre.g:28370:2: rule__ObservableConjunction__Group_1__1__Impl rule__ObservableConjunction__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_147);
            rule__ObservableConjunction__Group_1__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group_1__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__1"


    // $ANTLR start "rule__ObservableConjunction__Group_1__1__Impl"
    // InternalFiacre.g:28377:1: rule__ObservableConjunction__Group_1__1__Impl : ( 'and' ) ;
    public final void rule__ObservableConjunction__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28381:1: ( ( 'and' ) )
            // InternalFiacre.g:28382:1: ( 'and' )
            {
            // InternalFiacre.g:28382:1: ( 'and' )
            // InternalFiacre.g:28383:2: 'and'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getAndKeyword_1_1()); 
            }
            match(input,81,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getAndKeyword_1_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__1__Impl"


    // $ANTLR start "rule__ObservableConjunction__Group_1__2"
    // InternalFiacre.g:28392:1: rule__ObservableConjunction__Group_1__2 : rule__ObservableConjunction__Group_1__2__Impl ;
    public final void rule__ObservableConjunction__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28396:1: ( rule__ObservableConjunction__Group_1__2__Impl )
            // InternalFiacre.g:28397:2: rule__ObservableConjunction__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__Group_1__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__2"


    // $ANTLR start "rule__ObservableConjunction__Group_1__2__Impl"
    // InternalFiacre.g:28403:1: rule__ObservableConjunction__Group_1__2__Impl : ( ( rule__ObservableConjunction__RightAssignment_1_2 ) ) ;
    public final void rule__ObservableConjunction__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28407:1: ( ( ( rule__ObservableConjunction__RightAssignment_1_2 ) ) )
            // InternalFiacre.g:28408:1: ( ( rule__ObservableConjunction__RightAssignment_1_2 ) )
            {
            // InternalFiacre.g:28408:1: ( ( rule__ObservableConjunction__RightAssignment_1_2 ) )
            // InternalFiacre.g:28409:2: ( rule__ObservableConjunction__RightAssignment_1_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getRightAssignment_1_2()); 
            }
            // InternalFiacre.g:28410:2: ( rule__ObservableConjunction__RightAssignment_1_2 )
            // InternalFiacre.g:28410:3: rule__ObservableConjunction__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableConjunction__RightAssignment_1_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getRightAssignment_1_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__Group_1__2__Impl"


    // $ANTLR start "rule__ObservableNegation__Group_0__0"
    // InternalFiacre.g:28419:1: rule__ObservableNegation__Group_0__0 : rule__ObservableNegation__Group_0__0__Impl rule__ObservableNegation__Group_0__1 ;
    public final void rule__ObservableNegation__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28423:1: ( rule__ObservableNegation__Group_0__0__Impl rule__ObservableNegation__Group_0__1 )
            // InternalFiacre.g:28424:2: rule__ObservableNegation__Group_0__0__Impl rule__ObservableNegation__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_113);
            rule__ObservableNegation__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableNegation__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__0"


    // $ANTLR start "rule__ObservableNegation__Group_0__0__Impl"
    // InternalFiacre.g:28431:1: rule__ObservableNegation__Group_0__0__Impl : ( () ) ;
    public final void rule__ObservableNegation__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28435:1: ( ( () ) )
            // InternalFiacre.g:28436:1: ( () )
            {
            // InternalFiacre.g:28436:1: ( () )
            // InternalFiacre.g:28437:2: ()
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationAccess().getObservableNegationAction_0_0()); 
            }
            // InternalFiacre.g:28438:2: ()
            // InternalFiacre.g:28438:3: 
            {
            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationAccess().getObservableNegationAction_0_0()); 
            }

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__0__Impl"


    // $ANTLR start "rule__ObservableNegation__Group_0__1"
    // InternalFiacre.g:28446:1: rule__ObservableNegation__Group_0__1 : rule__ObservableNegation__Group_0__1__Impl rule__ObservableNegation__Group_0__2 ;
    public final void rule__ObservableNegation__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28450:1: ( rule__ObservableNegation__Group_0__1__Impl rule__ObservableNegation__Group_0__2 )
            // InternalFiacre.g:28451:2: rule__ObservableNegation__Group_0__1__Impl rule__ObservableNegation__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_147);
            rule__ObservableNegation__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableNegation__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__1"


    // $ANTLR start "rule__ObservableNegation__Group_0__1__Impl"
    // InternalFiacre.g:28458:1: rule__ObservableNegation__Group_0__1__Impl : ( 'not' ) ;
    public final void rule__ObservableNegation__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28462:1: ( ( 'not' ) )
            // InternalFiacre.g:28463:1: ( 'not' )
            {
            // InternalFiacre.g:28463:1: ( 'not' )
            // InternalFiacre.g:28464:2: 'not'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationAccess().getNotKeyword_0_1()); 
            }
            match(input,91,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationAccess().getNotKeyword_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__1__Impl"


    // $ANTLR start "rule__ObservableNegation__Group_0__2"
    // InternalFiacre.g:28473:1: rule__ObservableNegation__Group_0__2 : rule__ObservableNegation__Group_0__2__Impl ;
    public final void rule__ObservableNegation__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28477:1: ( rule__ObservableNegation__Group_0__2__Impl )
            // InternalFiacre.g:28478:2: rule__ObservableNegation__Group_0__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableNegation__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__2"


    // $ANTLR start "rule__ObservableNegation__Group_0__2__Impl"
    // InternalFiacre.g:28484:1: rule__ObservableNegation__Group_0__2__Impl : ( ( rule__ObservableNegation__ChildAssignment_0_2 ) ) ;
    public final void rule__ObservableNegation__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28488:1: ( ( ( rule__ObservableNegation__ChildAssignment_0_2 ) ) )
            // InternalFiacre.g:28489:1: ( ( rule__ObservableNegation__ChildAssignment_0_2 ) )
            {
            // InternalFiacre.g:28489:1: ( ( rule__ObservableNegation__ChildAssignment_0_2 ) )
            // InternalFiacre.g:28490:2: ( rule__ObservableNegation__ChildAssignment_0_2 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationAccess().getChildAssignment_0_2()); 
            }
            // InternalFiacre.g:28491:2: ( rule__ObservableNegation__ChildAssignment_0_2 )
            // InternalFiacre.g:28491:3: rule__ObservableNegation__ChildAssignment_0_2
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ObservableNegation__ChildAssignment_0_2();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationAccess().getChildAssignment_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__Group_0__2__Impl"


    // $ANTLR start "rule__AtomicObservable__Group_0__0"
    // InternalFiacre.g:28500:1: rule__AtomicObservable__Group_0__0 : rule__AtomicObservable__Group_0__0__Impl rule__AtomicObservable__Group_0__1 ;
    public final void rule__AtomicObservable__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28504:1: ( rule__AtomicObservable__Group_0__0__Impl rule__AtomicObservable__Group_0__1 )
            // InternalFiacre.g:28505:2: rule__AtomicObservable__Group_0__0__Impl rule__AtomicObservable__Group_0__1
            {
            pushFollow(FollowSets000.FOLLOW_147);
            rule__AtomicObservable__Group_0__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicObservable__Group_0__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__0"


    // $ANTLR start "rule__AtomicObservable__Group_0__0__Impl"
    // InternalFiacre.g:28512:1: rule__AtomicObservable__Group_0__0__Impl : ( '(' ) ;
    public final void rule__AtomicObservable__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28516:1: ( ( '(' ) )
            // InternalFiacre.g:28517:1: ( '(' )
            {
            // InternalFiacre.g:28517:1: ( '(' )
            // InternalFiacre.g:28518:2: '('
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicObservableAccess().getLeftParenthesisKeyword_0_0()); 
            }
            match(input,22,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicObservableAccess().getLeftParenthesisKeyword_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__0__Impl"


    // $ANTLR start "rule__AtomicObservable__Group_0__1"
    // InternalFiacre.g:28527:1: rule__AtomicObservable__Group_0__1 : rule__AtomicObservable__Group_0__1__Impl rule__AtomicObservable__Group_0__2 ;
    public final void rule__AtomicObservable__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28531:1: ( rule__AtomicObservable__Group_0__1__Impl rule__AtomicObservable__Group_0__2 )
            // InternalFiacre.g:28532:2: rule__AtomicObservable__Group_0__1__Impl rule__AtomicObservable__Group_0__2
            {
            pushFollow(FollowSets000.FOLLOW_68);
            rule__AtomicObservable__Group_0__1__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicObservable__Group_0__2();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__1"


    // $ANTLR start "rule__AtomicObservable__Group_0__1__Impl"
    // InternalFiacre.g:28539:1: rule__AtomicObservable__Group_0__1__Impl : ( ruleObservable ) ;
    public final void rule__AtomicObservable__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28543:1: ( ( ruleObservable ) )
            // InternalFiacre.g:28544:1: ( ruleObservable )
            {
            // InternalFiacre.g:28544:1: ( ruleObservable )
            // InternalFiacre.g:28545:2: ruleObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicObservableAccess().getObservableParserRuleCall_0_1()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicObservableAccess().getObservableParserRuleCall_0_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__1__Impl"


    // $ANTLR start "rule__AtomicObservable__Group_0__2"
    // InternalFiacre.g:28554:1: rule__AtomicObservable__Group_0__2 : rule__AtomicObservable__Group_0__2__Impl ;
    public final void rule__AtomicObservable__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28558:1: ( rule__AtomicObservable__Group_0__2__Impl )
            // InternalFiacre.g:28559:2: rule__AtomicObservable__Group_0__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__AtomicObservable__Group_0__2__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__2"


    // $ANTLR start "rule__AtomicObservable__Group_0__2__Impl"
    // InternalFiacre.g:28565:1: rule__AtomicObservable__Group_0__2__Impl : ( ')' ) ;
    public final void rule__AtomicObservable__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28569:1: ( ( ')' ) )
            // InternalFiacre.g:28570:1: ( ')' )
            {
            // InternalFiacre.g:28570:1: ( ')' )
            // InternalFiacre.g:28571:2: ')'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicObservableAccess().getRightParenthesisKeyword_0_2()); 
            }
            match(input,23,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicObservableAccess().getRightParenthesisKeyword_0_2()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicObservable__Group_0__2__Impl"


    // $ANTLR start "rule__PathEvent__Group__0"
    // InternalFiacre.g:28581:1: rule__PathEvent__Group__0 : rule__PathEvent__Group__0__Impl rule__PathEvent__Group__1 ;
    public final void rule__PathEvent__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28585:1: ( rule__PathEvent__Group__0__Impl rule__PathEvent__Group__1 )
            // InternalFiacre.g:28586:2: rule__PathEvent__Group__0__Impl rule__PathEvent__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_148);
            rule__PathEvent__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathEvent__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__Group__0"


    // $ANTLR start "rule__PathEvent__Group__0__Impl"
    // InternalFiacre.g:28593:1: rule__PathEvent__Group__0__Impl : ( ( rule__PathEvent__PathAssignment_0 ) ) ;
    public final void rule__PathEvent__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28597:1: ( ( ( rule__PathEvent__PathAssignment_0 ) ) )
            // InternalFiacre.g:28598:1: ( ( rule__PathEvent__PathAssignment_0 ) )
            {
            // InternalFiacre.g:28598:1: ( ( rule__PathEvent__PathAssignment_0 ) )
            // InternalFiacre.g:28599:2: ( rule__PathEvent__PathAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventAccess().getPathAssignment_0()); 
            }
            // InternalFiacre.g:28600:2: ( rule__PathEvent__PathAssignment_0 )
            // InternalFiacre.g:28600:3: rule__PathEvent__PathAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathEvent__PathAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventAccess().getPathAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__Group__0__Impl"


    // $ANTLR start "rule__PathEvent__Group__1"
    // InternalFiacre.g:28608:1: rule__PathEvent__Group__1 : rule__PathEvent__Group__1__Impl ;
    public final void rule__PathEvent__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28612:1: ( rule__PathEvent__Group__1__Impl )
            // InternalFiacre.g:28613:2: rule__PathEvent__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathEvent__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__Group__1"


    // $ANTLR start "rule__PathEvent__Group__1__Impl"
    // InternalFiacre.g:28619:1: rule__PathEvent__Group__1__Impl : ( ( rule__PathEvent__ItemAssignment_1 ) ) ;
    public final void rule__PathEvent__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28623:1: ( ( ( rule__PathEvent__ItemAssignment_1 ) ) )
            // InternalFiacre.g:28624:1: ( ( rule__PathEvent__ItemAssignment_1 ) )
            {
            // InternalFiacre.g:28624:1: ( ( rule__PathEvent__ItemAssignment_1 ) )
            // InternalFiacre.g:28625:2: ( rule__PathEvent__ItemAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventAccess().getItemAssignment_1()); 
            }
            // InternalFiacre.g:28626:2: ( rule__PathEvent__ItemAssignment_1 )
            // InternalFiacre.g:28626:3: rule__PathEvent__ItemAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__PathEvent__ItemAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventAccess().getItemAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__Group__1__Impl"


    // $ANTLR start "rule__Path__Group__0"
    // InternalFiacre.g:28635:1: rule__Path__Group__0 : rule__Path__Group__0__Impl rule__Path__Group__1 ;
    public final void rule__Path__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28639:1: ( rule__Path__Group__0__Impl rule__Path__Group__1 )
            // InternalFiacre.g:28640:2: rule__Path__Group__0__Impl rule__Path__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_109);
            rule__Path__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Path__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__Group__0"


    // $ANTLR start "rule__Path__Group__0__Impl"
    // InternalFiacre.g:28647:1: rule__Path__Group__0__Impl : ( ( rule__Path__ItemsAssignment_0 ) ) ;
    public final void rule__Path__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28651:1: ( ( ( rule__Path__ItemsAssignment_0 ) ) )
            // InternalFiacre.g:28652:1: ( ( rule__Path__ItemsAssignment_0 ) )
            {
            // InternalFiacre.g:28652:1: ( ( rule__Path__ItemsAssignment_0 ) )
            // InternalFiacre.g:28653:2: ( rule__Path__ItemsAssignment_0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathAccess().getItemsAssignment_0()); 
            }
            // InternalFiacre.g:28654:2: ( rule__Path__ItemsAssignment_0 )
            // InternalFiacre.g:28654:3: rule__Path__ItemsAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Path__ItemsAssignment_0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathAccess().getItemsAssignment_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__Group__0__Impl"


    // $ANTLR start "rule__Path__Group__1"
    // InternalFiacre.g:28662:1: rule__Path__Group__1 : rule__Path__Group__1__Impl ;
    public final void rule__Path__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28666:1: ( rule__Path__Group__1__Impl )
            // InternalFiacre.g:28667:2: rule__Path__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Path__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__Group__1"


    // $ANTLR start "rule__Path__Group__1__Impl"
    // InternalFiacre.g:28673:1: rule__Path__Group__1__Impl : ( '/' ) ;
    public final void rule__Path__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28677:1: ( ( '/' ) )
            // InternalFiacre.g:28678:1: ( '/' )
            {
            // InternalFiacre.g:28678:1: ( '/' )
            // InternalFiacre.g:28679:2: '/'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathAccess().getSolidusKeyword_1()); 
            }
            match(input,89,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathAccess().getSolidusKeyword_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__Group__1__Impl"


    // $ANTLR start "rule__StateSubject__Group__0"
    // InternalFiacre.g:28689:1: rule__StateSubject__Group__0 : rule__StateSubject__Group__0__Impl rule__StateSubject__Group__1 ;
    public final void rule__StateSubject__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28693:1: ( rule__StateSubject__Group__0__Impl rule__StateSubject__Group__1 )
            // InternalFiacre.g:28694:2: rule__StateSubject__Group__0__Impl rule__StateSubject__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__StateSubject__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateSubject__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateSubject__Group__0"


    // $ANTLR start "rule__StateSubject__Group__0__Impl"
    // InternalFiacre.g:28701:1: rule__StateSubject__Group__0__Impl : ( 'state' ) ;
    public final void rule__StateSubject__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28705:1: ( ( 'state' ) )
            // InternalFiacre.g:28706:1: ( 'state' )
            {
            // InternalFiacre.g:28706:1: ( 'state' )
            // InternalFiacre.g:28707:2: 'state'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectAccess().getStateKeyword_0()); 
            }
            match(input,133,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectAccess().getStateKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateSubject__Group__0__Impl"


    // $ANTLR start "rule__StateSubject__Group__1"
    // InternalFiacre.g:28716:1: rule__StateSubject__Group__1 : rule__StateSubject__Group__1__Impl ;
    public final void rule__StateSubject__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28720:1: ( rule__StateSubject__Group__1__Impl )
            // InternalFiacre.g:28721:2: rule__StateSubject__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateSubject__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateSubject__Group__1"


    // $ANTLR start "rule__StateSubject__Group__1__Impl"
    // InternalFiacre.g:28727:1: rule__StateSubject__Group__1__Impl : ( ( rule__StateSubject__StateAssignment_1 ) ) ;
    public final void rule__StateSubject__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28731:1: ( ( ( rule__StateSubject__StateAssignment_1 ) ) )
            // InternalFiacre.g:28732:1: ( ( rule__StateSubject__StateAssignment_1 ) )
            {
            // InternalFiacre.g:28732:1: ( ( rule__StateSubject__StateAssignment_1 ) )
            // InternalFiacre.g:28733:2: ( rule__StateSubject__StateAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectAccess().getStateAssignment_1()); 
            }
            // InternalFiacre.g:28734:2: ( rule__StateSubject__StateAssignment_1 )
            // InternalFiacre.g:28734:3: rule__StateSubject__StateAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__StateSubject__StateAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectAccess().getStateAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateSubject__Group__1__Impl"


    // $ANTLR start "rule__ValueSubject__Group__0"
    // InternalFiacre.g:28743:1: rule__ValueSubject__Group__0 : rule__ValueSubject__Group__0__Impl rule__ValueSubject__Group__1 ;
    public final void rule__ValueSubject__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28747:1: ( rule__ValueSubject__Group__0__Impl rule__ValueSubject__Group__1 )
            // InternalFiacre.g:28748:2: rule__ValueSubject__Group__0__Impl rule__ValueSubject__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_23);
            rule__ValueSubject__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ValueSubject__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ValueSubject__Group__0"


    // $ANTLR start "rule__ValueSubject__Group__0__Impl"
    // InternalFiacre.g:28755:1: rule__ValueSubject__Group__0__Impl : ( 'value' ) ;
    public final void rule__ValueSubject__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28759:1: ( ( 'value' ) )
            // InternalFiacre.g:28760:1: ( 'value' )
            {
            // InternalFiacre.g:28760:1: ( 'value' )
            // InternalFiacre.g:28761:2: 'value'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getValueSubjectAccess().getValueKeyword_0()); 
            }
            match(input,134,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getValueSubjectAccess().getValueKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ValueSubject__Group__0__Impl"


    // $ANTLR start "rule__ValueSubject__Group__1"
    // InternalFiacre.g:28770:1: rule__ValueSubject__Group__1 : rule__ValueSubject__Group__1__Impl ;
    public final void rule__ValueSubject__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28774:1: ( rule__ValueSubject__Group__1__Impl )
            // InternalFiacre.g:28775:2: rule__ValueSubject__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ValueSubject__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ValueSubject__Group__1"


    // $ANTLR start "rule__ValueSubject__Group__1__Impl"
    // InternalFiacre.g:28781:1: rule__ValueSubject__Group__1__Impl : ( ( rule__ValueSubject__ValueAssignment_1 ) ) ;
    public final void rule__ValueSubject__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28785:1: ( ( ( rule__ValueSubject__ValueAssignment_1 ) ) )
            // InternalFiacre.g:28786:1: ( ( rule__ValueSubject__ValueAssignment_1 ) )
            {
            // InternalFiacre.g:28786:1: ( ( rule__ValueSubject__ValueAssignment_1 ) )
            // InternalFiacre.g:28787:2: ( rule__ValueSubject__ValueAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getValueSubjectAccess().getValueAssignment_1()); 
            }
            // InternalFiacre.g:28788:2: ( rule__ValueSubject__ValueAssignment_1 )
            // InternalFiacre.g:28788:3: rule__ValueSubject__ValueAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__ValueSubject__ValueAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getValueSubjectAccess().getValueAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ValueSubject__Group__1__Impl"


    // $ANTLR start "rule__TagSubject__Group__0"
    // InternalFiacre.g:28797:1: rule__TagSubject__Group__0 : rule__TagSubject__Group__0__Impl rule__TagSubject__Group__1 ;
    public final void rule__TagSubject__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28801:1: ( rule__TagSubject__Group__0__Impl rule__TagSubject__Group__1 )
            // InternalFiacre.g:28802:2: rule__TagSubject__Group__0__Impl rule__TagSubject__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__TagSubject__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TagSubject__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TagSubject__Group__0"


    // $ANTLR start "rule__TagSubject__Group__0__Impl"
    // InternalFiacre.g:28809:1: rule__TagSubject__Group__0__Impl : ( 'tag' ) ;
    public final void rule__TagSubject__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28813:1: ( ( 'tag' ) )
            // InternalFiacre.g:28814:1: ( 'tag' )
            {
            // InternalFiacre.g:28814:1: ( 'tag' )
            // InternalFiacre.g:28815:2: 'tag'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectAccess().getTagKeyword_0()); 
            }
            match(input,135,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectAccess().getTagKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TagSubject__Group__0__Impl"


    // $ANTLR start "rule__TagSubject__Group__1"
    // InternalFiacre.g:28824:1: rule__TagSubject__Group__1 : rule__TagSubject__Group__1__Impl ;
    public final void rule__TagSubject__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28828:1: ( rule__TagSubject__Group__1__Impl )
            // InternalFiacre.g:28829:2: rule__TagSubject__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TagSubject__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TagSubject__Group__1"


    // $ANTLR start "rule__TagSubject__Group__1__Impl"
    // InternalFiacre.g:28835:1: rule__TagSubject__Group__1__Impl : ( ( rule__TagSubject__TagAssignment_1 ) ) ;
    public final void rule__TagSubject__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28839:1: ( ( ( rule__TagSubject__TagAssignment_1 ) ) )
            // InternalFiacre.g:28840:1: ( ( rule__TagSubject__TagAssignment_1 ) )
            {
            // InternalFiacre.g:28840:1: ( ( rule__TagSubject__TagAssignment_1 ) )
            // InternalFiacre.g:28841:2: ( rule__TagSubject__TagAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectAccess().getTagAssignment_1()); 
            }
            // InternalFiacre.g:28842:2: ( rule__TagSubject__TagAssignment_1 )
            // InternalFiacre.g:28842:3: rule__TagSubject__TagAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__TagSubject__TagAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectAccess().getTagAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TagSubject__Group__1__Impl"


    // $ANTLR start "rule__EventSubject__Group__0"
    // InternalFiacre.g:28851:1: rule__EventSubject__Group__0 : rule__EventSubject__Group__0__Impl rule__EventSubject__Group__1 ;
    public final void rule__EventSubject__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28855:1: ( rule__EventSubject__Group__0__Impl rule__EventSubject__Group__1 )
            // InternalFiacre.g:28856:2: rule__EventSubject__Group__0__Impl rule__EventSubject__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_9);
            rule__EventSubject__Group__0__Impl();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EventSubject__Group__1();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EventSubject__Group__0"


    // $ANTLR start "rule__EventSubject__Group__0__Impl"
    // InternalFiacre.g:28863:1: rule__EventSubject__Group__0__Impl : ( 'event' ) ;
    public final void rule__EventSubject__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28867:1: ( ( 'event' ) )
            // InternalFiacre.g:28868:1: ( 'event' )
            {
            // InternalFiacre.g:28868:1: ( 'event' )
            // InternalFiacre.g:28869:2: 'event'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEventSubjectAccess().getEventKeyword_0()); 
            }
            match(input,136,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEventSubjectAccess().getEventKeyword_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EventSubject__Group__0__Impl"


    // $ANTLR start "rule__EventSubject__Group__1"
    // InternalFiacre.g:28878:1: rule__EventSubject__Group__1 : rule__EventSubject__Group__1__Impl ;
    public final void rule__EventSubject__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28882:1: ( rule__EventSubject__Group__1__Impl )
            // InternalFiacre.g:28883:2: rule__EventSubject__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EventSubject__Group__1__Impl();

            state._fsp--;
            if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EventSubject__Group__1"


    // $ANTLR start "rule__EventSubject__Group__1__Impl"
    // InternalFiacre.g:28889:1: rule__EventSubject__Group__1__Impl : ( ( rule__EventSubject__EventAssignment_1 ) ) ;
    public final void rule__EventSubject__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28893:1: ( ( ( rule__EventSubject__EventAssignment_1 ) ) )
            // InternalFiacre.g:28894:1: ( ( rule__EventSubject__EventAssignment_1 ) )
            {
            // InternalFiacre.g:28894:1: ( ( rule__EventSubject__EventAssignment_1 ) )
            // InternalFiacre.g:28895:2: ( rule__EventSubject__EventAssignment_1 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEventSubjectAccess().getEventAssignment_1()); 
            }
            // InternalFiacre.g:28896:2: ( rule__EventSubject__EventAssignment_1 )
            // InternalFiacre.g:28896:3: rule__EventSubject__EventAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__EventSubject__EventAssignment_1();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getEventSubjectAccess().getEventAssignment_1()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EventSubject__Group__1__Impl"


    // $ANTLR start "rule__Model__ImportsAssignment_1"
    // InternalFiacre.g:28905:1: rule__Model__ImportsAssignment_1 : ( ruleImportDeclaration ) ;
    public final void rule__Model__ImportsAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28909:1: ( ( ruleImportDeclaration ) )
            // InternalFiacre.g:28910:2: ( ruleImportDeclaration )
            {
            // InternalFiacre.g:28910:2: ( ruleImportDeclaration )
            // InternalFiacre.g:28911:3: ruleImportDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getImportsImportDeclarationParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleImportDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getImportsImportDeclarationParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__ImportsAssignment_1"


    // $ANTLR start "rule__Model__DeclarationsAssignment_2_0"
    // InternalFiacre.g:28920:1: rule__Model__DeclarationsAssignment_2_0 : ( ruleDeclaration ) ;
    public final void rule__Model__DeclarationsAssignment_2_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28924:1: ( ( ruleDeclaration ) )
            // InternalFiacre.g:28925:2: ( ruleDeclaration )
            {
            // InternalFiacre.g:28925:2: ( ruleDeclaration )
            // InternalFiacre.g:28926:3: ruleDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getDeclarationsDeclarationParserRuleCall_2_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getDeclarationsDeclarationParserRuleCall_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__DeclarationsAssignment_2_0"


    // $ANTLR start "rule__Model__RequirementsAssignment_2_1"
    // InternalFiacre.g:28935:1: rule__Model__RequirementsAssignment_2_1 : ( ruleRequirement ) ;
    public final void rule__Model__RequirementsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28939:1: ( ( ruleRequirement ) )
            // InternalFiacre.g:28940:2: ( ruleRequirement )
            {
            // InternalFiacre.g:28940:2: ( ruleRequirement )
            // InternalFiacre.g:28941:3: ruleRequirement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getRequirementsRequirementParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRequirement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getRequirementsRequirementParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__RequirementsAssignment_2_1"


    // $ANTLR start "rule__Model__RootAssignment_2_2"
    // InternalFiacre.g:28950:1: rule__Model__RootAssignment_2_2 : ( ruleRoot ) ;
    public final void rule__Model__RootAssignment_2_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28954:1: ( ( ruleRoot ) )
            // InternalFiacre.g:28955:2: ( ruleRoot )
            {
            // InternalFiacre.g:28955:2: ( ruleRoot )
            // InternalFiacre.g:28956:3: ruleRoot
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModelAccess().getRootRootParserRuleCall_2_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRoot();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModelAccess().getRootRootParserRuleCall_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__RootAssignment_2_2"


    // $ANTLR start "rule__Root__DeclarationAssignment_1"
    // InternalFiacre.g:28965:1: rule__Root__DeclarationAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__Root__DeclarationAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28969:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:28970:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:28970:2: ( ( RULE_ID ) )
            // InternalFiacre.g:28971:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getDeclarationRootDeclarationCrossReference_1_0()); 
            }
            // InternalFiacre.g:28972:3: ( RULE_ID )
            // InternalFiacre.g:28973:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getDeclarationRootDeclarationIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getDeclarationRootDeclarationIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getDeclarationRootDeclarationCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__DeclarationAssignment_1"


    // $ANTLR start "rule__Root__ObservedAssignment_2_1_0"
    // InternalFiacre.g:28984:1: rule__Root__ObservedAssignment_2_1_0 : ( ( RULE_ID ) ) ;
    public final void rule__Root__ObservedAssignment_2_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:28988:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:28989:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:28989:2: ( ( RULE_ID ) )
            // InternalFiacre.g:28990:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedRootDeclarationCrossReference_2_1_0_0()); 
            }
            // InternalFiacre.g:28991:3: ( RULE_ID )
            // InternalFiacre.g:28992:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedRootDeclarationIDTerminalRuleCall_2_1_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedRootDeclarationIDTerminalRuleCall_2_1_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedRootDeclarationCrossReference_2_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__ObservedAssignment_2_1_0"


    // $ANTLR start "rule__Root__ObservedAssignment_2_1_1_1"
    // InternalFiacre.g:29003:1: rule__Root__ObservedAssignment_2_1_1_1 : ( ( RULE_ID ) ) ;
    public final void rule__Root__ObservedAssignment_2_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29007:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:29008:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:29008:2: ( ( RULE_ID ) )
            // InternalFiacre.g:29009:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedRootDeclarationCrossReference_2_1_1_1_0()); 
            }
            // InternalFiacre.g:29010:3: ( RULE_ID )
            // InternalFiacre.g:29011:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRootAccess().getObservedRootDeclarationIDTerminalRuleCall_2_1_1_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedRootDeclarationIDTerminalRuleCall_2_1_1_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRootAccess().getObservedRootDeclarationCrossReference_2_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Root__ObservedAssignment_2_1_1_1"


    // $ANTLR start "rule__ImportDeclaration__ImportURIAssignment_1"
    // InternalFiacre.g:29022:1: rule__ImportDeclaration__ImportURIAssignment_1 : ( RULE_STRING ) ;
    public final void rule__ImportDeclaration__ImportURIAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29026:1: ( ( RULE_STRING ) )
            // InternalFiacre.g:29027:2: ( RULE_STRING )
            {
            // InternalFiacre.g:29027:2: ( RULE_STRING )
            // InternalFiacre.g:29028:3: RULE_STRING
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImportDeclarationAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            }
            match(input,RULE_STRING,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImportDeclarationAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ImportDeclaration__ImportURIAssignment_1"


    // $ANTLR start "rule__FunctionDeclaration__NameAssignment_1"
    // InternalFiacre.g:29037:1: rule__FunctionDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__FunctionDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29041:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29042:2: ( RULE_ID )
            {
            // InternalFiacre.g:29042:2: ( RULE_ID )
            // InternalFiacre.g:29043:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__NameAssignment_1"


    // $ANTLR start "rule__FunctionDeclaration__ParametersAssignment_2_1_0"
    // InternalFiacre.g:29052:1: rule__FunctionDeclaration__ParametersAssignment_2_1_0 : ( ruleParametersDeclaration ) ;
    public final void rule__FunctionDeclaration__ParametersAssignment_2_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29056:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29057:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29057:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29058:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getParametersParametersDeclarationParserRuleCall_2_1_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getParametersParametersDeclarationParserRuleCall_2_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__ParametersAssignment_2_1_0"


    // $ANTLR start "rule__FunctionDeclaration__ParametersAssignment_2_1_1_1"
    // InternalFiacre.g:29067:1: rule__FunctionDeclaration__ParametersAssignment_2_1_1_1 : ( ruleParametersDeclaration ) ;
    public final void rule__FunctionDeclaration__ParametersAssignment_2_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29071:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29072:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29072:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29073:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getParametersParametersDeclarationParserRuleCall_2_1_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getParametersParametersDeclarationParserRuleCall_2_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__ParametersAssignment_2_1_1_1"


    // $ANTLR start "rule__FunctionDeclaration__TypeAssignment_4"
    // InternalFiacre.g:29082:1: rule__FunctionDeclaration__TypeAssignment_4 : ( ruleType ) ;
    public final void rule__FunctionDeclaration__TypeAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29086:1: ( ( ruleType ) )
            // InternalFiacre.g:29087:2: ( ruleType )
            {
            // InternalFiacre.g:29087:2: ( ruleType )
            // InternalFiacre.g:29088:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getTypeTypeParserRuleCall_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getTypeTypeParserRuleCall_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__TypeAssignment_4"


    // $ANTLR start "rule__FunctionDeclaration__VariablesAssignment_6_1"
    // InternalFiacre.g:29097:1: rule__FunctionDeclaration__VariablesAssignment_6_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__FunctionDeclaration__VariablesAssignment_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29101:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:29102:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:29102:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:29103:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__VariablesAssignment_6_1"


    // $ANTLR start "rule__FunctionDeclaration__VariablesAssignment_6_2_1"
    // InternalFiacre.g:29112:1: rule__FunctionDeclaration__VariablesAssignment_6_2_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__FunctionDeclaration__VariablesAssignment_6_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29116:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:29117:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:29117:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:29118:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_6_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_6_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__VariablesAssignment_6_2_1"


    // $ANTLR start "rule__FunctionDeclaration__StatementAssignment_7"
    // InternalFiacre.g:29127:1: rule__FunctionDeclaration__StatementAssignment_7 : ( ruleStatement ) ;
    public final void rule__FunctionDeclaration__StatementAssignment_7() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29131:1: ( ( ruleStatement ) )
            // InternalFiacre.g:29132:2: ( ruleStatement )
            {
            // InternalFiacre.g:29132:2: ( ruleStatement )
            // InternalFiacre.g:29133:3: ruleStatement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFunctionDeclarationAccess().getStatementStatementParserRuleCall_7_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFunctionDeclarationAccess().getStatementStatementParserRuleCall_7_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FunctionDeclaration__StatementAssignment_7"


    // $ANTLR start "rule__TypeDeclaration__NameAssignment_1"
    // InternalFiacre.g:29142:1: rule__TypeDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__TypeDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29146:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29147:2: ( RULE_ID )
            {
            // InternalFiacre.g:29147:2: ( RULE_ID )
            // InternalFiacre.g:29148:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__NameAssignment_1"


    // $ANTLR start "rule__TypeDeclaration__ValueAssignment_3"
    // InternalFiacre.g:29157:1: rule__TypeDeclaration__ValueAssignment_3 : ( ruleType ) ;
    public final void rule__TypeDeclaration__ValueAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29161:1: ( ( ruleType ) )
            // InternalFiacre.g:29162:2: ( ruleType )
            {
            // InternalFiacre.g:29162:2: ( ruleType )
            // InternalFiacre.g:29163:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTypeDeclarationAccess().getValueTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTypeDeclarationAccess().getValueTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDeclaration__ValueAssignment_3"


    // $ANTLR start "rule__ChannelDeclaration__NameAssignment_1"
    // InternalFiacre.g:29172:1: rule__ChannelDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ChannelDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29176:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29177:2: ( RULE_ID )
            {
            // InternalFiacre.g:29177:2: ( RULE_ID )
            // InternalFiacre.g:29178:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__NameAssignment_1"


    // $ANTLR start "rule__ChannelDeclaration__ValueAssignment_3"
    // InternalFiacre.g:29187:1: rule__ChannelDeclaration__ValueAssignment_3 : ( ruleChannelType ) ;
    public final void rule__ChannelDeclaration__ValueAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29191:1: ( ( ruleChannelType ) )
            // InternalFiacre.g:29192:2: ( ruleChannelType )
            {
            // InternalFiacre.g:29192:2: ( ruleChannelType )
            // InternalFiacre.g:29193:3: ruleChannelType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelDeclarationAccess().getValueChannelTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleChannelType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelDeclarationAccess().getValueChannelTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelDeclaration__ValueAssignment_3"


    // $ANTLR start "rule__ChannelType__SizeAssignment_1_1"
    // InternalFiacre.g:29202:1: rule__ChannelType__SizeAssignment_1_1 : ( ruleExpression ) ;
    public final void rule__ChannelType__SizeAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29206:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29207:2: ( ruleExpression )
            {
            // InternalFiacre.g:29207:2: ( ruleExpression )
            // InternalFiacre.g:29208:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getSizeExpressionParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getSizeExpressionParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__SizeAssignment_1_1"


    // $ANTLR start "rule__ChannelType__InAssignment_2_0_0_0_0"
    // InternalFiacre.g:29217:1: rule__ChannelType__InAssignment_2_0_0_0_0 : ( ( 'in' ) ) ;
    public final void rule__ChannelType__InAssignment_2_0_0_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29221:1: ( ( ( 'in' ) ) )
            // InternalFiacre.g:29222:2: ( ( 'in' ) )
            {
            // InternalFiacre.g:29222:2: ( ( 'in' ) )
            // InternalFiacre.g:29223:3: ( 'in' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getInInKeyword_2_0_0_0_0_0()); 
            }
            // InternalFiacre.g:29224:3: ( 'in' )
            // InternalFiacre.g:29225:4: 'in'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getInInKeyword_2_0_0_0_0_0()); 
            }
            match(input,49,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getInInKeyword_2_0_0_0_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getInInKeyword_2_0_0_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__InAssignment_2_0_0_0_0"


    // $ANTLR start "rule__ChannelType__OutAssignment_2_0_0_0_1"
    // InternalFiacre.g:29236:1: rule__ChannelType__OutAssignment_2_0_0_0_1 : ( ( 'out' ) ) ;
    public final void rule__ChannelType__OutAssignment_2_0_0_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29240:1: ( ( ( 'out' ) ) )
            // InternalFiacre.g:29241:2: ( ( 'out' ) )
            {
            // InternalFiacre.g:29241:2: ( ( 'out' ) )
            // InternalFiacre.g:29242:3: ( 'out' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_0_1_0()); 
            }
            // InternalFiacre.g:29243:3: ( 'out' )
            // InternalFiacre.g:29244:4: 'out'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_0_1_0()); 
            }
            match(input,137,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__OutAssignment_2_0_0_0_1"


    // $ANTLR start "rule__ChannelType__OutAssignment_2_0_0_1"
    // InternalFiacre.g:29255:1: rule__ChannelType__OutAssignment_2_0_0_1 : ( ( 'out' ) ) ;
    public final void rule__ChannelType__OutAssignment_2_0_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29259:1: ( ( ( 'out' ) ) )
            // InternalFiacre.g:29260:2: ( ( 'out' ) )
            {
            // InternalFiacre.g:29260:2: ( ( 'out' ) )
            // InternalFiacre.g:29261:3: ( 'out' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_1_0()); 
            }
            // InternalFiacre.g:29262:3: ( 'out' )
            // InternalFiacre.g:29263:4: 'out'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_1_0()); 
            }
            match(input,137,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getOutOutKeyword_2_0_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__OutAssignment_2_0_0_1"


    // $ANTLR start "rule__ChannelType__TypeAssignment_2_0_1_0"
    // InternalFiacre.g:29274:1: rule__ChannelType__TypeAssignment_2_0_1_0 : ( ruleTupleType ) ;
    public final void rule__ChannelType__TypeAssignment_2_0_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29278:1: ( ( ruleTupleType ) )
            // InternalFiacre.g:29279:2: ( ruleTupleType )
            {
            // InternalFiacre.g:29279:2: ( ruleTupleType )
            // InternalFiacre.g:29280:3: ruleTupleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getChannelTypeAccess().getTypeTupleTypeParserRuleCall_2_0_1_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleTupleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getChannelTypeAccess().getTypeTupleTypeParserRuleCall_2_0_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ChannelType__TypeAssignment_2_0_1_0"


    // $ANTLR start "rule__TupleType__TypesAssignment_1_2"
    // InternalFiacre.g:29289:1: rule__TupleType__TypesAssignment_1_2 : ( ruleType ) ;
    public final void rule__TupleType__TypesAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29293:1: ( ( ruleType ) )
            // InternalFiacre.g:29294:2: ( ruleType )
            {
            // InternalFiacre.g:29294:2: ( ruleType )
            // InternalFiacre.g:29295:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTupleTypeAccess().getTypesTypeParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTupleTypeAccess().getTypesTypeParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TupleType__TypesAssignment_1_2"


    // $ANTLR start "rule__RangeType__MinimumAssignment_0"
    // InternalFiacre.g:29304:1: rule__RangeType__MinimumAssignment_0 : ( ruleExpression ) ;
    public final void rule__RangeType__MinimumAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29308:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29309:2: ( ruleExpression )
            {
            // InternalFiacre.g:29309:2: ( ruleExpression )
            // InternalFiacre.g:29310:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getMinimumExpressionParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getMinimumExpressionParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__MinimumAssignment_0"


    // $ANTLR start "rule__RangeType__MaximumAssignment_2"
    // InternalFiacre.g:29319:1: rule__RangeType__MaximumAssignment_2 : ( ruleExpression ) ;
    public final void rule__RangeType__MaximumAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29323:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29324:2: ( ruleExpression )
            {
            // InternalFiacre.g:29324:2: ( ruleExpression )
            // InternalFiacre.g:29325:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRangeTypeAccess().getMaximumExpressionParserRuleCall_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRangeTypeAccess().getMaximumExpressionParserRuleCall_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RangeType__MaximumAssignment_2"


    // $ANTLR start "rule__UnionType__TagsAssignment_1"
    // InternalFiacre.g:29334:1: rule__UnionType__TagsAssignment_1 : ( ruleUnionTags ) ;
    public final void rule__UnionType__TagsAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29338:1: ( ( ruleUnionTags ) )
            // InternalFiacre.g:29339:2: ( ruleUnionTags )
            {
            // InternalFiacre.g:29339:2: ( ruleUnionTags )
            // InternalFiacre.g:29340:3: ruleUnionTags
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getTagsUnionTagsParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnionTags();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getTagsUnionTagsParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__TagsAssignment_1"


    // $ANTLR start "rule__UnionType__TagsAssignment_2_1"
    // InternalFiacre.g:29349:1: rule__UnionType__TagsAssignment_2_1 : ( ruleUnionTags ) ;
    public final void rule__UnionType__TagsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29353:1: ( ( ruleUnionTags ) )
            // InternalFiacre.g:29354:2: ( ruleUnionTags )
            {
            // InternalFiacre.g:29354:2: ( ruleUnionTags )
            // InternalFiacre.g:29355:3: ruleUnionTags
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTypeAccess().getTagsUnionTagsParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnionTags();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTypeAccess().getTagsUnionTagsParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionType__TagsAssignment_2_1"


    // $ANTLR start "rule__UnionTags__TagsAssignment_0"
    // InternalFiacre.g:29364:1: rule__UnionTags__TagsAssignment_0 : ( ruleUnionTagDeclaration ) ;
    public final void rule__UnionTags__TagsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29368:1: ( ( ruleUnionTagDeclaration ) )
            // InternalFiacre.g:29369:2: ( ruleUnionTagDeclaration )
            {
            // InternalFiacre.g:29369:2: ( ruleUnionTagDeclaration )
            // InternalFiacre.g:29370:3: ruleUnionTagDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTagsUnionTagDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnionTagDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTagsUnionTagDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__TagsAssignment_0"


    // $ANTLR start "rule__UnionTags__TagsAssignment_1_1"
    // InternalFiacre.g:29379:1: rule__UnionTags__TagsAssignment_1_1 : ( ruleUnionTagDeclaration ) ;
    public final void rule__UnionTags__TagsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29383:1: ( ( ruleUnionTagDeclaration ) )
            // InternalFiacre.g:29384:2: ( ruleUnionTagDeclaration )
            {
            // InternalFiacre.g:29384:2: ( ruleUnionTagDeclaration )
            // InternalFiacre.g:29385:3: ruleUnionTagDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTagsUnionTagDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnionTagDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTagsUnionTagDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__TagsAssignment_1_1"


    // $ANTLR start "rule__UnionTags__TypeAssignment_2_1"
    // InternalFiacre.g:29394:1: rule__UnionTags__TypeAssignment_2_1 : ( ruleType ) ;
    public final void rule__UnionTags__TypeAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29398:1: ( ( ruleType ) )
            // InternalFiacre.g:29399:2: ( ruleType )
            {
            // InternalFiacre.g:29399:2: ( ruleType )
            // InternalFiacre.g:29400:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagsAccess().getTypeTypeParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagsAccess().getTypeTypeParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTags__TypeAssignment_2_1"


    // $ANTLR start "rule__UnionTagDeclaration__NameAssignment"
    // InternalFiacre.g:29409:1: rule__UnionTagDeclaration__NameAssignment : ( RULE_ID ) ;
    public final void rule__UnionTagDeclaration__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29413:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29414:2: ( RULE_ID )
            {
            // InternalFiacre.g:29414:2: ( RULE_ID )
            // InternalFiacre.g:29415:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnionTagDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnionTagDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnionTagDeclaration__NameAssignment"


    // $ANTLR start "rule__RecordType__FieldsAssignment_1"
    // InternalFiacre.g:29424:1: rule__RecordType__FieldsAssignment_1 : ( ruleRecordFields ) ;
    public final void rule__RecordType__FieldsAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29428:1: ( ( ruleRecordFields ) )
            // InternalFiacre.g:29429:2: ( ruleRecordFields )
            {
            // InternalFiacre.g:29429:2: ( ruleRecordFields )
            // InternalFiacre.g:29430:3: ruleRecordFields
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getFieldsRecordFieldsParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRecordFields();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getFieldsRecordFieldsParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__FieldsAssignment_1"


    // $ANTLR start "rule__RecordType__FieldsAssignment_2_1"
    // InternalFiacre.g:29439:1: rule__RecordType__FieldsAssignment_2_1 : ( ruleRecordFields ) ;
    public final void rule__RecordType__FieldsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29443:1: ( ( ruleRecordFields ) )
            // InternalFiacre.g:29444:2: ( ruleRecordFields )
            {
            // InternalFiacre.g:29444:2: ( ruleRecordFields )
            // InternalFiacre.g:29445:3: ruleRecordFields
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordTypeAccess().getFieldsRecordFieldsParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRecordFields();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordTypeAccess().getFieldsRecordFieldsParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordType__FieldsAssignment_2_1"


    // $ANTLR start "rule__RecordFields__FieldsAssignment_0"
    // InternalFiacre.g:29454:1: rule__RecordFields__FieldsAssignment_0 : ( ruleRecordFieldDeclaration ) ;
    public final void rule__RecordFields__FieldsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29458:1: ( ( ruleRecordFieldDeclaration ) )
            // InternalFiacre.g:29459:2: ( ruleRecordFieldDeclaration )
            {
            // InternalFiacre.g:29459:2: ( ruleRecordFieldDeclaration )
            // InternalFiacre.g:29460:3: ruleRecordFieldDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getFieldsRecordFieldDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRecordFieldDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getFieldsRecordFieldDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__FieldsAssignment_0"


    // $ANTLR start "rule__RecordFields__FieldsAssignment_1_1"
    // InternalFiacre.g:29469:1: rule__RecordFields__FieldsAssignment_1_1 : ( ruleRecordFieldDeclaration ) ;
    public final void rule__RecordFields__FieldsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29473:1: ( ( ruleRecordFieldDeclaration ) )
            // InternalFiacre.g:29474:2: ( ruleRecordFieldDeclaration )
            {
            // InternalFiacre.g:29474:2: ( ruleRecordFieldDeclaration )
            // InternalFiacre.g:29475:3: ruleRecordFieldDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getFieldsRecordFieldDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRecordFieldDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getFieldsRecordFieldDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__FieldsAssignment_1_1"


    // $ANTLR start "rule__RecordFields__TypeAssignment_3"
    // InternalFiacre.g:29484:1: rule__RecordFields__TypeAssignment_3 : ( ruleType ) ;
    public final void rule__RecordFields__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29488:1: ( ( ruleType ) )
            // InternalFiacre.g:29489:2: ( ruleType )
            {
            // InternalFiacre.g:29489:2: ( ruleType )
            // InternalFiacre.g:29490:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldsAccess().getTypeTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldsAccess().getTypeTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFields__TypeAssignment_3"


    // $ANTLR start "rule__RecordFieldDeclaration__NameAssignment"
    // InternalFiacre.g:29499:1: rule__RecordFieldDeclaration__NameAssignment : ( RULE_ID ) ;
    public final void rule__RecordFieldDeclaration__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29503:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29504:2: ( RULE_ID )
            {
            // InternalFiacre.g:29504:2: ( RULE_ID )
            // InternalFiacre.g:29505:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordFieldDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordFieldDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordFieldDeclaration__NameAssignment"


    // $ANTLR start "rule__QueueType__SizeAssignment_1"
    // InternalFiacre.g:29514:1: rule__QueueType__SizeAssignment_1 : ( ruleExpression ) ;
    public final void rule__QueueType__SizeAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29518:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29519:2: ( ruleExpression )
            {
            // InternalFiacre.g:29519:2: ( ruleExpression )
            // InternalFiacre.g:29520:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getSizeExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getSizeExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__SizeAssignment_1"


    // $ANTLR start "rule__QueueType__TypeAssignment_3"
    // InternalFiacre.g:29529:1: rule__QueueType__TypeAssignment_3 : ( ruleType ) ;
    public final void rule__QueueType__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29533:1: ( ( ruleType ) )
            // InternalFiacre.g:29534:2: ( ruleType )
            {
            // InternalFiacre.g:29534:2: ( ruleType )
            // InternalFiacre.g:29535:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueTypeAccess().getTypeTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueTypeAccess().getTypeTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueType__TypeAssignment_3"


    // $ANTLR start "rule__ArrayType__SizeAssignment_1"
    // InternalFiacre.g:29544:1: rule__ArrayType__SizeAssignment_1 : ( ruleExpression ) ;
    public final void rule__ArrayType__SizeAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29548:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29549:2: ( ruleExpression )
            {
            // InternalFiacre.g:29549:2: ( ruleExpression )
            // InternalFiacre.g:29550:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getSizeExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getSizeExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__SizeAssignment_1"


    // $ANTLR start "rule__ArrayType__TypeAssignment_3"
    // InternalFiacre.g:29559:1: rule__ArrayType__TypeAssignment_3 : ( ruleType ) ;
    public final void rule__ArrayType__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29563:1: ( ( ruleType ) )
            // InternalFiacre.g:29564:2: ( ruleType )
            {
            // InternalFiacre.g:29564:2: ( ruleType )
            // InternalFiacre.g:29565:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayTypeAccess().getTypeTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayTypeAccess().getTypeTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayType__TypeAssignment_3"


    // $ANTLR start "rule__ReferencedType__TypeAssignment"
    // InternalFiacre.g:29574:1: rule__ReferencedType__TypeAssignment : ( ( RULE_ID ) ) ;
    public final void rule__ReferencedType__TypeAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29578:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:29579:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:29579:2: ( ( RULE_ID ) )
            // InternalFiacre.g:29580:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferencedTypeAccess().getTypeTypeDeclarationUseCrossReference_0()); 
            }
            // InternalFiacre.g:29581:3: ( RULE_ID )
            // InternalFiacre.g:29582:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferencedTypeAccess().getTypeTypeDeclarationUseIDTerminalRuleCall_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferencedTypeAccess().getTypeTypeDeclarationUseIDTerminalRuleCall_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferencedTypeAccess().getTypeTypeDeclarationUseCrossReference_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferencedType__TypeAssignment"


    // $ANTLR start "rule__ConstantDeclaration__NameAssignment_1"
    // InternalFiacre.g:29593:1: rule__ConstantDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ConstantDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29597:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29598:2: ( RULE_ID )
            {
            // InternalFiacre.g:29598:2: ( RULE_ID )
            // InternalFiacre.g:29599:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__NameAssignment_1"


    // $ANTLR start "rule__ConstantDeclaration__TypeAssignment_3"
    // InternalFiacre.g:29608:1: rule__ConstantDeclaration__TypeAssignment_3 : ( ruleType ) ;
    public final void rule__ConstantDeclaration__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29612:1: ( ( ruleType ) )
            // InternalFiacre.g:29613:2: ( ruleType )
            {
            // InternalFiacre.g:29613:2: ( ruleType )
            // InternalFiacre.g:29614:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getTypeTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getTypeTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__TypeAssignment_3"


    // $ANTLR start "rule__ConstantDeclaration__ValueAssignment_5"
    // InternalFiacre.g:29623:1: rule__ConstantDeclaration__ValueAssignment_5 : ( ruleExpression ) ;
    public final void rule__ConstantDeclaration__ValueAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29627:1: ( ( ruleExpression ) )
            // InternalFiacre.g:29628:2: ( ruleExpression )
            {
            // InternalFiacre.g:29628:2: ( ruleExpression )
            // InternalFiacre.g:29629:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantDeclarationAccess().getValueExpressionParserRuleCall_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantDeclarationAccess().getValueExpressionParserRuleCall_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantDeclaration__ValueAssignment_5"


    // $ANTLR start "rule__ProcessDeclaration__NameAssignment_1"
    // InternalFiacre.g:29638:1: rule__ProcessDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ProcessDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29642:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29643:2: ( RULE_ID )
            {
            // InternalFiacre.g:29643:2: ( RULE_ID )
            // InternalFiacre.g:29644:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__NameAssignment_1"


    // $ANTLR start "rule__ProcessDeclaration__PortsAssignment_2_1"
    // InternalFiacre.g:29653:1: rule__ProcessDeclaration__PortsAssignment_2_1 : ( rulePortsDeclaration ) ;
    public final void rule__ProcessDeclaration__PortsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29657:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29658:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29658:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29659:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__PortsAssignment_2_1"


    // $ANTLR start "rule__ProcessDeclaration__PortsAssignment_2_2_1"
    // InternalFiacre.g:29668:1: rule__ProcessDeclaration__PortsAssignment_2_2_1 : ( rulePortsDeclaration ) ;
    public final void rule__ProcessDeclaration__PortsAssignment_2_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29672:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29673:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29673:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29674:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__PortsAssignment_2_2_1"


    // $ANTLR start "rule__ProcessDeclaration__ParametersAssignment_3_1"
    // InternalFiacre.g:29683:1: rule__ProcessDeclaration__ParametersAssignment_3_1 : ( ruleParametersDeclaration ) ;
    public final void rule__ProcessDeclaration__ParametersAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29687:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29688:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29688:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29689:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__ParametersAssignment_3_1"


    // $ANTLR start "rule__ProcessDeclaration__ParametersAssignment_3_2_1"
    // InternalFiacre.g:29698:1: rule__ProcessDeclaration__ParametersAssignment_3_2_1 : ( ruleParametersDeclaration ) ;
    public final void rule__ProcessDeclaration__ParametersAssignment_3_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29702:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29703:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29703:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29704:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__ParametersAssignment_3_2_1"


    // $ANTLR start "rule__ProcessDeclaration__LocalPortsAssignment_5_1"
    // InternalFiacre.g:29713:1: rule__ProcessDeclaration__LocalPortsAssignment_5_1 : ( rulePortsDeclaration ) ;
    public final void rule__ProcessDeclaration__LocalPortsAssignment_5_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29717:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29718:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29718:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29719:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLocalPortsPortsDeclarationParserRuleCall_5_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLocalPortsPortsDeclarationParserRuleCall_5_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__LocalPortsAssignment_5_1"


    // $ANTLR start "rule__ProcessDeclaration__LocalPortsAssignment_5_2_1"
    // InternalFiacre.g:29728:1: rule__ProcessDeclaration__LocalPortsAssignment_5_2_1 : ( rulePortsDeclaration ) ;
    public final void rule__ProcessDeclaration__LocalPortsAssignment_5_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29732:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29733:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29733:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29734:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getLocalPortsPortsDeclarationParserRuleCall_5_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getLocalPortsPortsDeclarationParserRuleCall_5_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__LocalPortsAssignment_5_2_1"


    // $ANTLR start "rule__ProcessDeclaration__PrioritiesAssignment_6_1"
    // InternalFiacre.g:29743:1: rule__ProcessDeclaration__PrioritiesAssignment_6_1 : ( rulePriorityDeclaration ) ;
    public final void rule__ProcessDeclaration__PrioritiesAssignment_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29747:1: ( ( rulePriorityDeclaration ) )
            // InternalFiacre.g:29748:2: ( rulePriorityDeclaration )
            {
            // InternalFiacre.g:29748:2: ( rulePriorityDeclaration )
            // InternalFiacre.g:29749:3: rulePriorityDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__PrioritiesAssignment_6_1"


    // $ANTLR start "rule__ProcessDeclaration__PrioritiesAssignment_6_2_1"
    // InternalFiacre.g:29758:1: rule__ProcessDeclaration__PrioritiesAssignment_6_2_1 : ( rulePriorityDeclaration ) ;
    public final void rule__ProcessDeclaration__PrioritiesAssignment_6_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29762:1: ( ( rulePriorityDeclaration ) )
            // InternalFiacre.g:29763:2: ( rulePriorityDeclaration )
            {
            // InternalFiacre.g:29763:2: ( rulePriorityDeclaration )
            // InternalFiacre.g:29764:3: rulePriorityDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_6_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_6_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__PrioritiesAssignment_6_2_1"


    // $ANTLR start "rule__ProcessDeclaration__StatesAssignment_8"
    // InternalFiacre.g:29773:1: rule__ProcessDeclaration__StatesAssignment_8 : ( ruleStateDeclaration ) ;
    public final void rule__ProcessDeclaration__StatesAssignment_8() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29777:1: ( ( ruleStateDeclaration ) )
            // InternalFiacre.g:29778:2: ( ruleStateDeclaration )
            {
            // InternalFiacre.g:29778:2: ( ruleStateDeclaration )
            // InternalFiacre.g:29779:3: ruleStateDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getStatesStateDeclarationParserRuleCall_8_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStateDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getStatesStateDeclarationParserRuleCall_8_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__StatesAssignment_8"


    // $ANTLR start "rule__ProcessDeclaration__StatesAssignment_9_1"
    // InternalFiacre.g:29788:1: rule__ProcessDeclaration__StatesAssignment_9_1 : ( ruleStateDeclaration ) ;
    public final void rule__ProcessDeclaration__StatesAssignment_9_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29792:1: ( ( ruleStateDeclaration ) )
            // InternalFiacre.g:29793:2: ( ruleStateDeclaration )
            {
            // InternalFiacre.g:29793:2: ( ruleStateDeclaration )
            // InternalFiacre.g:29794:3: ruleStateDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getStatesStateDeclarationParserRuleCall_9_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStateDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getStatesStateDeclarationParserRuleCall_9_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__StatesAssignment_9_1"


    // $ANTLR start "rule__ProcessDeclaration__VariablesAssignment_10_1"
    // InternalFiacre.g:29803:1: rule__ProcessDeclaration__VariablesAssignment_10_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__ProcessDeclaration__VariablesAssignment_10_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29807:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:29808:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:29808:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:29809:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_10_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_10_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__VariablesAssignment_10_1"


    // $ANTLR start "rule__ProcessDeclaration__VariablesAssignment_10_2_1"
    // InternalFiacre.g:29818:1: rule__ProcessDeclaration__VariablesAssignment_10_2_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__ProcessDeclaration__VariablesAssignment_10_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29822:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:29823:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:29823:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:29824:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_10_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_10_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__VariablesAssignment_10_2_1"


    // $ANTLR start "rule__ProcessDeclaration__PreludeAssignment_11_1"
    // InternalFiacre.g:29833:1: rule__ProcessDeclaration__PreludeAssignment_11_1 : ( ruleStatementSequence ) ;
    public final void rule__ProcessDeclaration__PreludeAssignment_11_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29837:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:29838:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:29838:2: ( ruleStatementSequence )
            // InternalFiacre.g:29839:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getPreludeStatementSequenceParserRuleCall_11_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getPreludeStatementSequenceParserRuleCall_11_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__PreludeAssignment_11_1"


    // $ANTLR start "rule__ProcessDeclaration__TransitionsAssignment_12"
    // InternalFiacre.g:29848:1: rule__ProcessDeclaration__TransitionsAssignment_12 : ( ruleTransition ) ;
    public final void rule__ProcessDeclaration__TransitionsAssignment_12() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29852:1: ( ( ruleTransition ) )
            // InternalFiacre.g:29853:2: ( ruleTransition )
            {
            // InternalFiacre.g:29853:2: ( ruleTransition )
            // InternalFiacre.g:29854:3: ruleTransition
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProcessDeclarationAccess().getTransitionsTransitionParserRuleCall_12_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleTransition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProcessDeclarationAccess().getTransitionsTransitionParserRuleCall_12_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcessDeclaration__TransitionsAssignment_12"


    // $ANTLR start "rule__StateDeclaration__NameAssignment"
    // InternalFiacre.g:29863:1: rule__StateDeclaration__NameAssignment : ( RULE_ID ) ;
    public final void rule__StateDeclaration__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29867:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29868:2: ( RULE_ID )
            {
            // InternalFiacre.g:29868:2: ( RULE_ID )
            // InternalFiacre.g:29869:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateDeclaration__NameAssignment"


    // $ANTLR start "rule__TransitionSource__OriginAssignment_1"
    // InternalFiacre.g:29878:1: rule__TransitionSource__OriginAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__TransitionSource__OriginAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29882:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:29883:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:29883:2: ( ( RULE_ID ) )
            // InternalFiacre.g:29884:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceAccess().getOriginStateDeclarationCrossReference_1_0()); 
            }
            // InternalFiacre.g:29885:3: ( RULE_ID )
            // InternalFiacre.g:29886:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionSourceAccess().getOriginStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceAccess().getOriginStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionSourceAccess().getOriginStateDeclarationCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TransitionSource__OriginAssignment_1"


    // $ANTLR start "rule__Transition__SourceAssignment_0"
    // InternalFiacre.g:29897:1: rule__Transition__SourceAssignment_0 : ( ruleTransitionSource ) ;
    public final void rule__Transition__SourceAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29901:1: ( ( ruleTransitionSource ) )
            // InternalFiacre.g:29902:2: ( ruleTransitionSource )
            {
            // InternalFiacre.g:29902:2: ( ruleTransitionSource )
            // InternalFiacre.g:29903:3: ruleTransitionSource
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionAccess().getSourceTransitionSourceParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleTransitionSource();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionAccess().getSourceTransitionSourceParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__SourceAssignment_0"


    // $ANTLR start "rule__Transition__ActionAssignment_1"
    // InternalFiacre.g:29912:1: rule__Transition__ActionAssignment_1 : ( ruleStatementSequence ) ;
    public final void rule__Transition__ActionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29916:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:29917:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:29917:2: ( ruleStatementSequence )
            // InternalFiacre.g:29918:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTransitionAccess().getActionStatementSequenceParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTransitionAccess().getActionStatementSequenceParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Transition__ActionAssignment_1"


    // $ANTLR start "rule__ComponentDeclaration__NameAssignment_1"
    // InternalFiacre.g:29927:1: rule__ComponentDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ComponentDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29931:1: ( ( RULE_ID ) )
            // InternalFiacre.g:29932:2: ( RULE_ID )
            {
            // InternalFiacre.g:29932:2: ( RULE_ID )
            // InternalFiacre.g:29933:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__NameAssignment_1"


    // $ANTLR start "rule__ComponentDeclaration__PortsAssignment_2_1"
    // InternalFiacre.g:29942:1: rule__ComponentDeclaration__PortsAssignment_2_1 : ( rulePortsDeclaration ) ;
    public final void rule__ComponentDeclaration__PortsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29946:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29947:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29947:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29948:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__PortsAssignment_2_1"


    // $ANTLR start "rule__ComponentDeclaration__PortsAssignment_2_2_1"
    // InternalFiacre.g:29957:1: rule__ComponentDeclaration__PortsAssignment_2_2_1 : ( rulePortsDeclaration ) ;
    public final void rule__ComponentDeclaration__PortsAssignment_2_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29961:1: ( ( rulePortsDeclaration ) )
            // InternalFiacre.g:29962:2: ( rulePortsDeclaration )
            {
            // InternalFiacre.g:29962:2: ( rulePortsDeclaration )
            // InternalFiacre.g:29963:3: rulePortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPortsPortsDeclarationParserRuleCall_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__PortsAssignment_2_2_1"


    // $ANTLR start "rule__ComponentDeclaration__ParametersAssignment_3_1"
    // InternalFiacre.g:29972:1: rule__ComponentDeclaration__ParametersAssignment_3_1 : ( ruleParametersDeclaration ) ;
    public final void rule__ComponentDeclaration__ParametersAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29976:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29977:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29977:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29978:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__ParametersAssignment_3_1"


    // $ANTLR start "rule__ComponentDeclaration__ParametersAssignment_3_2_1"
    // InternalFiacre.g:29987:1: rule__ComponentDeclaration__ParametersAssignment_3_2_1 : ( ruleParametersDeclaration ) ;
    public final void rule__ComponentDeclaration__ParametersAssignment_3_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:29991:1: ( ( ruleParametersDeclaration ) )
            // InternalFiacre.g:29992:2: ( ruleParametersDeclaration )
            {
            // InternalFiacre.g:29992:2: ( ruleParametersDeclaration )
            // InternalFiacre.g:29993:3: ruleParametersDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParametersDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getParametersParametersDeclarationParserRuleCall_3_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__ParametersAssignment_3_2_1"


    // $ANTLR start "rule__ComponentDeclaration__VariablesAssignment_5_1"
    // InternalFiacre.g:30002:1: rule__ComponentDeclaration__VariablesAssignment_5_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__ComponentDeclaration__VariablesAssignment_5_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30006:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:30007:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:30007:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:30008:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_5_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_5_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__VariablesAssignment_5_1"


    // $ANTLR start "rule__ComponentDeclaration__VariablesAssignment_5_2_1"
    // InternalFiacre.g:30017:1: rule__ComponentDeclaration__VariablesAssignment_5_2_1 : ( ruleVariablesDeclaration ) ;
    public final void rule__ComponentDeclaration__VariablesAssignment_5_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30021:1: ( ( ruleVariablesDeclaration ) )
            // InternalFiacre.g:30022:2: ( ruleVariablesDeclaration )
            {
            // InternalFiacre.g:30022:2: ( ruleVariablesDeclaration )
            // InternalFiacre.g:30023:3: ruleVariablesDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_5_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariablesDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getVariablesVariablesDeclarationParserRuleCall_5_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__VariablesAssignment_5_2_1"


    // $ANTLR start "rule__ComponentDeclaration__LocalPortsAssignment_6_1"
    // InternalFiacre.g:30032:1: rule__ComponentDeclaration__LocalPortsAssignment_6_1 : ( ruleLocalPortsDeclaration ) ;
    public final void rule__ComponentDeclaration__LocalPortsAssignment_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30036:1: ( ( ruleLocalPortsDeclaration ) )
            // InternalFiacre.g:30037:2: ( ruleLocalPortsDeclaration )
            {
            // InternalFiacre.g:30037:2: ( ruleLocalPortsDeclaration )
            // InternalFiacre.g:30038:3: ruleLocalPortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLocalPortsLocalPortsDeclarationParserRuleCall_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLocalPortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLocalPortsLocalPortsDeclarationParserRuleCall_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__LocalPortsAssignment_6_1"


    // $ANTLR start "rule__ComponentDeclaration__LocalPortsAssignment_6_2_1"
    // InternalFiacre.g:30047:1: rule__ComponentDeclaration__LocalPortsAssignment_6_2_1 : ( ruleLocalPortsDeclaration ) ;
    public final void rule__ComponentDeclaration__LocalPortsAssignment_6_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30051:1: ( ( ruleLocalPortsDeclaration ) )
            // InternalFiacre.g:30052:2: ( ruleLocalPortsDeclaration )
            {
            // InternalFiacre.g:30052:2: ( ruleLocalPortsDeclaration )
            // InternalFiacre.g:30053:3: ruleLocalPortsDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getLocalPortsLocalPortsDeclarationParserRuleCall_6_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLocalPortsDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getLocalPortsLocalPortsDeclarationParserRuleCall_6_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__LocalPortsAssignment_6_2_1"


    // $ANTLR start "rule__ComponentDeclaration__PrioritiesAssignment_7_1"
    // InternalFiacre.g:30062:1: rule__ComponentDeclaration__PrioritiesAssignment_7_1 : ( rulePriorityDeclaration ) ;
    public final void rule__ComponentDeclaration__PrioritiesAssignment_7_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30066:1: ( ( rulePriorityDeclaration ) )
            // InternalFiacre.g:30067:2: ( rulePriorityDeclaration )
            {
            // InternalFiacre.g:30067:2: ( rulePriorityDeclaration )
            // InternalFiacre.g:30068:3: rulePriorityDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_7_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_7_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__PrioritiesAssignment_7_1"


    // $ANTLR start "rule__ComponentDeclaration__PrioritiesAssignment_7_2_1"
    // InternalFiacre.g:30077:1: rule__ComponentDeclaration__PrioritiesAssignment_7_2_1 : ( rulePriorityDeclaration ) ;
    public final void rule__ComponentDeclaration__PrioritiesAssignment_7_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30081:1: ( ( rulePriorityDeclaration ) )
            // InternalFiacre.g:30082:2: ( rulePriorityDeclaration )
            {
            // InternalFiacre.g:30082:2: ( rulePriorityDeclaration )
            // InternalFiacre.g:30083:3: rulePriorityDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_7_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPrioritiesPriorityDeclarationParserRuleCall_7_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__PrioritiesAssignment_7_2_1"


    // $ANTLR start "rule__ComponentDeclaration__PreludeAssignment_8_1"
    // InternalFiacre.g:30092:1: rule__ComponentDeclaration__PreludeAssignment_8_1 : ( ruleStatementSequence ) ;
    public final void rule__ComponentDeclaration__PreludeAssignment_8_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30096:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:30097:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:30097:2: ( ruleStatementSequence )
            // InternalFiacre.g:30098:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getPreludeStatementSequenceParserRuleCall_8_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getPreludeStatementSequenceParserRuleCall_8_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__PreludeAssignment_8_1"


    // $ANTLR start "rule__ComponentDeclaration__BodyAssignment_9"
    // InternalFiacre.g:30107:1: rule__ComponentDeclaration__BodyAssignment_9 : ( ruleComposition ) ;
    public final void rule__ComponentDeclaration__BodyAssignment_9() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30111:1: ( ( ruleComposition ) )
            // InternalFiacre.g:30112:2: ( ruleComposition )
            {
            // InternalFiacre.g:30112:2: ( ruleComposition )
            // InternalFiacre.g:30113:3: ruleComposition
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentDeclarationAccess().getBodyCompositionParserRuleCall_9_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleComposition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentDeclarationAccess().getBodyCompositionParserRuleCall_9_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentDeclaration__BodyAssignment_9"


    // $ANTLR start "rule__PortsDeclaration__PortsAssignment_0"
    // InternalFiacre.g:30122:1: rule__PortsDeclaration__PortsAssignment_0 : ( rulePortDeclaration ) ;
    public final void rule__PortsDeclaration__PortsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30126:1: ( ( rulePortDeclaration ) )
            // InternalFiacre.g:30127:2: ( rulePortDeclaration )
            {
            // InternalFiacre.g:30127:2: ( rulePortDeclaration )
            // InternalFiacre.g:30128:3: rulePortDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__PortsAssignment_0"


    // $ANTLR start "rule__PortsDeclaration__PortsAssignment_1_1"
    // InternalFiacre.g:30137:1: rule__PortsDeclaration__PortsAssignment_1_1 : ( rulePortDeclaration ) ;
    public final void rule__PortsDeclaration__PortsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30141:1: ( ( rulePortDeclaration ) )
            // InternalFiacre.g:30142:2: ( rulePortDeclaration )
            {
            // InternalFiacre.g:30142:2: ( rulePortDeclaration )
            // InternalFiacre.g:30143:3: rulePortDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__PortsAssignment_1_1"


    // $ANTLR start "rule__PortsDeclaration__TypeAssignment_3"
    // InternalFiacre.g:30152:1: rule__PortsDeclaration__TypeAssignment_3 : ( ruleChannelType ) ;
    public final void rule__PortsDeclaration__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30156:1: ( ( ruleChannelType ) )
            // InternalFiacre.g:30157:2: ( ruleChannelType )
            {
            // InternalFiacre.g:30157:2: ( ruleChannelType )
            // InternalFiacre.g:30158:3: ruleChannelType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortsDeclarationAccess().getTypeChannelTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleChannelType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortsDeclarationAccess().getTypeChannelTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortsDeclaration__TypeAssignment_3"


    // $ANTLR start "rule__PortDeclaration__NameAssignment"
    // InternalFiacre.g:30167:1: rule__PortDeclaration__NameAssignment : ( RULE_ID ) ;
    public final void rule__PortDeclaration__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30171:1: ( ( RULE_ID ) )
            // InternalFiacre.g:30172:2: ( RULE_ID )
            {
            // InternalFiacre.g:30172:2: ( RULE_ID )
            // InternalFiacre.g:30173:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortDeclaration__NameAssignment"


    // $ANTLR start "rule__LocalPortsDeclaration__PortsAssignment_0"
    // InternalFiacre.g:30182:1: rule__LocalPortsDeclaration__PortsAssignment_0 : ( rulePortDeclaration ) ;
    public final void rule__LocalPortsDeclaration__PortsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30186:1: ( ( rulePortDeclaration ) )
            // InternalFiacre.g:30187:2: ( rulePortDeclaration )
            {
            // InternalFiacre.g:30187:2: ( rulePortDeclaration )
            // InternalFiacre.g:30188:3: rulePortDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__PortsAssignment_0"


    // $ANTLR start "rule__LocalPortsDeclaration__PortsAssignment_1_1"
    // InternalFiacre.g:30197:1: rule__LocalPortsDeclaration__PortsAssignment_1_1 : ( rulePortDeclaration ) ;
    public final void rule__LocalPortsDeclaration__PortsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30201:1: ( ( rulePortDeclaration ) )
            // InternalFiacre.g:30202:2: ( rulePortDeclaration )
            {
            // InternalFiacre.g:30202:2: ( rulePortDeclaration )
            // InternalFiacre.g:30203:3: rulePortDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getPortsPortDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__PortsAssignment_1_1"


    // $ANTLR start "rule__LocalPortsDeclaration__TypeAssignment_3"
    // InternalFiacre.g:30212:1: rule__LocalPortsDeclaration__TypeAssignment_3 : ( ruleChannelType ) ;
    public final void rule__LocalPortsDeclaration__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30216:1: ( ( ruleChannelType ) )
            // InternalFiacre.g:30217:2: ( ruleChannelType )
            {
            // InternalFiacre.g:30217:2: ( ruleChannelType )
            // InternalFiacre.g:30218:3: ruleChannelType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getTypeChannelTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleChannelType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getTypeChannelTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__TypeAssignment_3"


    // $ANTLR start "rule__LocalPortsDeclaration__LeftAssignment_4_1"
    // InternalFiacre.g:30227:1: rule__LocalPortsDeclaration__LeftAssignment_4_1 : ( ruleLowerBound ) ;
    public final void rule__LocalPortsDeclaration__LeftAssignment_4_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30231:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:30232:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:30232:2: ( ruleLowerBound )
            // InternalFiacre.g:30233:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getLeftLowerBoundParserRuleCall_4_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getLeftLowerBoundParserRuleCall_4_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__LeftAssignment_4_1"


    // $ANTLR start "rule__LocalPortsDeclaration__RightAssignment_4_3"
    // InternalFiacre.g:30242:1: rule__LocalPortsDeclaration__RightAssignment_4_3 : ( ruleUpperBound ) ;
    public final void rule__LocalPortsDeclaration__RightAssignment_4_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30246:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:30247:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:30247:2: ( ruleUpperBound )
            // InternalFiacre.g:30248:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLocalPortsDeclarationAccess().getRightUpperBoundParserRuleCall_4_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLocalPortsDeclarationAccess().getRightUpperBoundParserRuleCall_4_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LocalPortsDeclaration__RightAssignment_4_3"


    // $ANTLR start "rule__ParametersDeclaration__ParametersAssignment_0"
    // InternalFiacre.g:30257:1: rule__ParametersDeclaration__ParametersAssignment_0 : ( ruleParameterDeclaration ) ;
    public final void rule__ParametersDeclaration__ParametersAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30261:1: ( ( ruleParameterDeclaration ) )
            // InternalFiacre.g:30262:2: ( ruleParameterDeclaration )
            {
            // InternalFiacre.g:30262:2: ( ruleParameterDeclaration )
            // InternalFiacre.g:30263:3: ruleParameterDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getParametersParameterDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParameterDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getParametersParameterDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__ParametersAssignment_0"


    // $ANTLR start "rule__ParametersDeclaration__ParametersAssignment_1_1"
    // InternalFiacre.g:30272:1: rule__ParametersDeclaration__ParametersAssignment_1_1 : ( ruleParameterDeclaration ) ;
    public final void rule__ParametersDeclaration__ParametersAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30276:1: ( ( ruleParameterDeclaration ) )
            // InternalFiacre.g:30277:2: ( ruleParameterDeclaration )
            {
            // InternalFiacre.g:30277:2: ( ruleParameterDeclaration )
            // InternalFiacre.g:30278:3: ruleParameterDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getParametersParameterDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleParameterDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getParametersParameterDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__ParametersAssignment_1_1"


    // $ANTLR start "rule__ParametersDeclaration__ReadAssignment_3"
    // InternalFiacre.g:30287:1: rule__ParametersDeclaration__ReadAssignment_3 : ( ( 'read' ) ) ;
    public final void rule__ParametersDeclaration__ReadAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30291:1: ( ( ( 'read' ) ) )
            // InternalFiacre.g:30292:2: ( ( 'read' ) )
            {
            // InternalFiacre.g:30292:2: ( ( 'read' ) )
            // InternalFiacre.g:30293:3: ( 'read' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getReadReadKeyword_3_0()); 
            }
            // InternalFiacre.g:30294:3: ( 'read' )
            // InternalFiacre.g:30295:4: 'read'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getReadReadKeyword_3_0()); 
            }
            match(input,138,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getReadReadKeyword_3_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getReadReadKeyword_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__ReadAssignment_3"


    // $ANTLR start "rule__ParametersDeclaration__WriteAssignment_4"
    // InternalFiacre.g:30306:1: rule__ParametersDeclaration__WriteAssignment_4 : ( ( 'write' ) ) ;
    public final void rule__ParametersDeclaration__WriteAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30310:1: ( ( ( 'write' ) ) )
            // InternalFiacre.g:30311:2: ( ( 'write' ) )
            {
            // InternalFiacre.g:30311:2: ( ( 'write' ) )
            // InternalFiacre.g:30312:3: ( 'write' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getWriteWriteKeyword_4_0()); 
            }
            // InternalFiacre.g:30313:3: ( 'write' )
            // InternalFiacre.g:30314:4: 'write'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getWriteWriteKeyword_4_0()); 
            }
            match(input,139,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getWriteWriteKeyword_4_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getWriteWriteKeyword_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__WriteAssignment_4"


    // $ANTLR start "rule__ParametersDeclaration__TypeAssignment_5"
    // InternalFiacre.g:30325:1: rule__ParametersDeclaration__TypeAssignment_5 : ( ruleType ) ;
    public final void rule__ParametersDeclaration__TypeAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30329:1: ( ( ruleType ) )
            // InternalFiacre.g:30330:2: ( ruleType )
            {
            // InternalFiacre.g:30330:2: ( ruleType )
            // InternalFiacre.g:30331:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParametersDeclarationAccess().getTypeTypeParserRuleCall_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParametersDeclarationAccess().getTypeTypeParserRuleCall_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParametersDeclaration__TypeAssignment_5"


    // $ANTLR start "rule__ParameterDeclaration__ReferenceAssignment_0_0"
    // InternalFiacre.g:30340:1: rule__ParameterDeclaration__ReferenceAssignment_0_0 : ( ( '&' ) ) ;
    public final void rule__ParameterDeclaration__ReferenceAssignment_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30344:1: ( ( ( '&' ) ) )
            // InternalFiacre.g:30345:2: ( ( '&' ) )
            {
            // InternalFiacre.g:30345:2: ( ( '&' ) )
            // InternalFiacre.g:30346:3: ( '&' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getReferenceAmpersandKeyword_0_0_0()); 
            }
            // InternalFiacre.g:30347:3: ( '&' )
            // InternalFiacre.g:30348:4: '&'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getReferenceAmpersandKeyword_0_0_0()); 
            }
            match(input,99,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getReferenceAmpersandKeyword_0_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getReferenceAmpersandKeyword_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__ReferenceAssignment_0_0"


    // $ANTLR start "rule__ParameterDeclaration__ArrayAssignment_0_1_0"
    // InternalFiacre.g:30359:1: rule__ParameterDeclaration__ArrayAssignment_0_1_0 : ( ( '[' ) ) ;
    public final void rule__ParameterDeclaration__ArrayAssignment_0_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30363:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:30364:2: ( ( '[' ) )
            {
            // InternalFiacre.g:30364:2: ( ( '[' ) )
            // InternalFiacre.g:30365:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getArrayLeftSquareBracketKeyword_0_1_0_0()); 
            }
            // InternalFiacre.g:30366:3: ( '[' )
            // InternalFiacre.g:30367:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getArrayLeftSquareBracketKeyword_0_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getArrayLeftSquareBracketKeyword_0_1_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getArrayLeftSquareBracketKeyword_0_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__ArrayAssignment_0_1_0"


    // $ANTLR start "rule__ParameterDeclaration__SizeAssignment_0_1_1"
    // InternalFiacre.g:30378:1: rule__ParameterDeclaration__SizeAssignment_0_1_1 : ( ruleExpression ) ;
    public final void rule__ParameterDeclaration__SizeAssignment_0_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30382:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30383:2: ( ruleExpression )
            {
            // InternalFiacre.g:30383:2: ( ruleExpression )
            // InternalFiacre.g:30384:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getSizeExpressionParserRuleCall_0_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getSizeExpressionParserRuleCall_0_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__SizeAssignment_0_1_1"


    // $ANTLR start "rule__ParameterDeclaration__NameAssignment_1"
    // InternalFiacre.g:30393:1: rule__ParameterDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ParameterDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30397:1: ( ( RULE_ID ) )
            // InternalFiacre.g:30398:2: ( RULE_ID )
            {
            // InternalFiacre.g:30398:2: ( RULE_ID )
            // InternalFiacre.g:30399:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getParameterDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getParameterDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ParameterDeclaration__NameAssignment_1"


    // $ANTLR start "rule__VariablesDeclaration__VariablesAssignment_0"
    // InternalFiacre.g:30408:1: rule__VariablesDeclaration__VariablesAssignment_0 : ( ruleVariableDeclaration ) ;
    public final void rule__VariablesDeclaration__VariablesAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30412:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:30413:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:30413:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:30414:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getVariablesVariableDeclarationParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getVariablesVariableDeclarationParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__VariablesAssignment_0"


    // $ANTLR start "rule__VariablesDeclaration__VariablesAssignment_1_1"
    // InternalFiacre.g:30423:1: rule__VariablesDeclaration__VariablesAssignment_1_1 : ( ruleVariableDeclaration ) ;
    public final void rule__VariablesDeclaration__VariablesAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30427:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:30428:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:30428:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:30429:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getVariablesVariableDeclarationParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getVariablesVariableDeclarationParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__VariablesAssignment_1_1"


    // $ANTLR start "rule__VariablesDeclaration__TypeAssignment_3"
    // InternalFiacre.g:30438:1: rule__VariablesDeclaration__TypeAssignment_3 : ( ruleType ) ;
    public final void rule__VariablesDeclaration__TypeAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30442:1: ( ( ruleType ) )
            // InternalFiacre.g:30443:2: ( ruleType )
            {
            // InternalFiacre.g:30443:2: ( ruleType )
            // InternalFiacre.g:30444:3: ruleType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getTypeTypeParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getTypeTypeParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__TypeAssignment_3"


    // $ANTLR start "rule__VariablesDeclaration__ValueAssignment_4_1"
    // InternalFiacre.g:30453:1: rule__VariablesDeclaration__ValueAssignment_4_1 : ( ruleExpression ) ;
    public final void rule__VariablesDeclaration__ValueAssignment_4_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30457:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30458:2: ( ruleExpression )
            {
            // InternalFiacre.g:30458:2: ( ruleExpression )
            // InternalFiacre.g:30459:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariablesDeclarationAccess().getValueExpressionParserRuleCall_4_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariablesDeclarationAccess().getValueExpressionParserRuleCall_4_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariablesDeclaration__ValueAssignment_4_1"


    // $ANTLR start "rule__VariableDeclaration__NameAssignment"
    // InternalFiacre.g:30468:1: rule__VariableDeclaration__NameAssignment : ( RULE_ID ) ;
    public final void rule__VariableDeclaration__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30472:1: ( ( RULE_ID ) )
            // InternalFiacre.g:30473:2: ( RULE_ID )
            {
            // InternalFiacre.g:30473:2: ( RULE_ID )
            // InternalFiacre.g:30474:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableDeclarationAccess().getNameIDTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableDeclaration__NameAssignment"


    // $ANTLR start "rule__PriorityDeclaration__GroupsAssignment_0"
    // InternalFiacre.g:30483:1: rule__PriorityDeclaration__GroupsAssignment_0 : ( rulePriorityGroup ) ;
    public final void rule__PriorityDeclaration__GroupsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30487:1: ( ( rulePriorityGroup ) )
            // InternalFiacre.g:30488:2: ( rulePriorityGroup )
            {
            // InternalFiacre.g:30488:2: ( rulePriorityGroup )
            // InternalFiacre.g:30489:3: rulePriorityGroup
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroupsPriorityGroupParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityGroup();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroupsPriorityGroupParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__GroupsAssignment_0"


    // $ANTLR start "rule__PriorityDeclaration__GroupsAssignment_1_1"
    // InternalFiacre.g:30498:1: rule__PriorityDeclaration__GroupsAssignment_1_1 : ( rulePriorityGroup ) ;
    public final void rule__PriorityDeclaration__GroupsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30502:1: ( ( rulePriorityGroup ) )
            // InternalFiacre.g:30503:2: ( rulePriorityGroup )
            {
            // InternalFiacre.g:30503:2: ( rulePriorityGroup )
            // InternalFiacre.g:30504:3: rulePriorityGroup
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityDeclarationAccess().getGroupsPriorityGroupParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePriorityGroup();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityDeclarationAccess().getGroupsPriorityGroupParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityDeclaration__GroupsAssignment_1_1"


    // $ANTLR start "rule__PriorityGroup__PortsAssignment_0"
    // InternalFiacre.g:30513:1: rule__PriorityGroup__PortsAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__PriorityGroup__PortsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30517:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:30518:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:30518:2: ( ( RULE_ID ) )
            // InternalFiacre.g:30519:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationCrossReference_0_0()); 
            }
            // InternalFiacre.g:30520:3: ( RULE_ID )
            // InternalFiacre.g:30521:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationIDTerminalRuleCall_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationIDTerminalRuleCall_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationCrossReference_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__PortsAssignment_0"


    // $ANTLR start "rule__PriorityGroup__PortsAssignment_1_1"
    // InternalFiacre.g:30532:1: rule__PriorityGroup__PortsAssignment_1_1 : ( ( RULE_ID ) ) ;
    public final void rule__PriorityGroup__PortsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30536:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:30537:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:30537:2: ( ( RULE_ID ) )
            // InternalFiacre.g:30538:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationCrossReference_1_1_0()); 
            }
            // InternalFiacre.g:30539:3: ( RULE_ID )
            // InternalFiacre.g:30540:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationIDTerminalRuleCall_1_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationIDTerminalRuleCall_1_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPriorityGroupAccess().getPortsPortDeclarationCrossReference_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PriorityGroup__PortsAssignment_1_1"


    // $ANTLR start "rule__UnlessStatement__FollowersAssignment_1_2"
    // InternalFiacre.g:30551:1: rule__UnlessStatement__FollowersAssignment_1_2 : ( ruleStatementChoice ) ;
    public final void rule__UnlessStatement__FollowersAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30555:1: ( ( ruleStatementChoice ) )
            // InternalFiacre.g:30556:2: ( ruleStatementChoice )
            {
            // InternalFiacre.g:30556:2: ( ruleStatementChoice )
            // InternalFiacre.g:30557:3: ruleStatementChoice
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnlessStatementAccess().getFollowersStatementChoiceParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementChoice();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnlessStatementAccess().getFollowersStatementChoiceParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnlessStatement__FollowersAssignment_1_2"


    // $ANTLR start "rule__StatementChoice__ChoicesAssignment_1_2"
    // InternalFiacre.g:30566:1: rule__StatementChoice__ChoicesAssignment_1_2 : ( ruleStatementSequence ) ;
    public final void rule__StatementChoice__ChoicesAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30570:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:30571:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:30571:2: ( ruleStatementSequence )
            // InternalFiacre.g:30572:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementChoiceAccess().getChoicesStatementSequenceParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementChoiceAccess().getChoicesStatementSequenceParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementChoice__ChoicesAssignment_1_2"


    // $ANTLR start "rule__StatementSequence__StatementsAssignment_1_2"
    // InternalFiacre.g:30581:1: rule__StatementSequence__StatementsAssignment_1_2 : ( ruleStatement ) ;
    public final void rule__StatementSequence__StatementsAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30585:1: ( ( ruleStatement ) )
            // InternalFiacre.g:30586:2: ( ruleStatement )
            {
            // InternalFiacre.g:30586:2: ( ruleStatement )
            // InternalFiacre.g:30587:3: ruleStatement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStatementSequenceAccess().getStatementsStatementParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStatementSequenceAccess().getStatementsStatementParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StatementSequence__StatementsAssignment_1_2"


    // $ANTLR start "rule__BlockStatement__BodyAssignment_1"
    // InternalFiacre.g:30596:1: rule__BlockStatement__BodyAssignment_1 : ( ruleStatementSequence ) ;
    public final void rule__BlockStatement__BodyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30600:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:30601:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:30601:2: ( ruleStatementSequence )
            // InternalFiacre.g:30602:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getBlockStatementAccess().getBodyStatementSequenceParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getBlockStatementAccess().getBodyStatementSequenceParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BlockStatement__BodyAssignment_1"


    // $ANTLR start "rule__ReturnStatement__ExpressionAssignment_1"
    // InternalFiacre.g:30611:1: rule__ReturnStatement__ExpressionAssignment_1 : ( ruleExpression ) ;
    public final void rule__ReturnStatement__ExpressionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30615:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30616:2: ( ruleExpression )
            {
            // InternalFiacre.g:30616:2: ( ruleExpression )
            // InternalFiacre.g:30617:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReturnStatementAccess().getExpressionExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReturnStatementAccess().getExpressionExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReturnStatement__ExpressionAssignment_1"


    // $ANTLR start "rule__TaggedStatement__NameAssignment_1"
    // InternalFiacre.g:30626:1: rule__TaggedStatement__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__TaggedStatement__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30630:1: ( ( RULE_ID ) )
            // InternalFiacre.g:30631:2: ( RULE_ID )
            {
            // InternalFiacre.g:30631:2: ( RULE_ID )
            // InternalFiacre.g:30632:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTaggedStatementAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTaggedStatementAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TaggedStatement__NameAssignment_1"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_0_2"
    // InternalFiacre.g:30641:1: rule__PatternStatement__PatternsAssignment_1_0_2 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30645:1: ( ( rulePattern ) )
            // InternalFiacre.g:30646:2: ( rulePattern )
            {
            // InternalFiacre.g:30646:2: ( rulePattern )
            // InternalFiacre.g:30647:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_0_2"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_0_3_1"
    // InternalFiacre.g:30656:1: rule__PatternStatement__PatternsAssignment_1_0_3_1 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_0_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30660:1: ( ( rulePattern ) )
            // InternalFiacre.g:30661:2: ( rulePattern )
            {
            // InternalFiacre.g:30661:2: ( rulePattern )
            // InternalFiacre.g:30662:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_0_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_0_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_0_3_1"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_0_5"
    // InternalFiacre.g:30671:1: rule__PatternStatement__ValuesAssignment_1_0_5 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_0_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30675:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30676:2: ( ruleExpression )
            {
            // InternalFiacre.g:30676:2: ( ruleExpression )
            // InternalFiacre.g:30677:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_0_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_0_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_0_5"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_0_6_1"
    // InternalFiacre.g:30686:1: rule__PatternStatement__ValuesAssignment_1_0_6_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_0_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30690:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30691:2: ( ruleExpression )
            {
            // InternalFiacre.g:30691:2: ( ruleExpression )
            // InternalFiacre.g:30692:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_0_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_0_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_0_6_1"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_1_2_0"
    // InternalFiacre.g:30701:1: rule__PatternStatement__ValuesAssignment_1_1_2_0 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_1_2_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30705:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30706:2: ( ruleExpression )
            {
            // InternalFiacre.g:30706:2: ( ruleExpression )
            // InternalFiacre.g:30707:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_1_2_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_1_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_1_2_0"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_1_2_1_1"
    // InternalFiacre.g:30716:1: rule__PatternStatement__ValuesAssignment_1_1_2_1_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_1_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30720:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30721:2: ( ruleExpression )
            {
            // InternalFiacre.g:30721:2: ( ruleExpression )
            // InternalFiacre.g:30722:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_1_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_1_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_1_2_1_1"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_2_2"
    // InternalFiacre.g:30731:1: rule__PatternStatement__PatternsAssignment_1_2_2 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_2_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30735:1: ( ( rulePattern ) )
            // InternalFiacre.g:30736:2: ( rulePattern )
            {
            // InternalFiacre.g:30736:2: ( rulePattern )
            // InternalFiacre.g:30737:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_2_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_2_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_2_2"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_2_3_1"
    // InternalFiacre.g:30746:1: rule__PatternStatement__PatternsAssignment_1_2_3_1 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_2_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30750:1: ( ( rulePattern ) )
            // InternalFiacre.g:30751:2: ( rulePattern )
            {
            // InternalFiacre.g:30751:2: ( rulePattern )
            // InternalFiacre.g:30752:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_2_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_2_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_2_3_1"


    // $ANTLR start "rule__PatternStatement__ExpAssignment_1_2_6_1"
    // InternalFiacre.g:30761:1: rule__PatternStatement__ExpAssignment_1_2_6_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ExpAssignment_1_2_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30765:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30766:2: ( ruleExpression )
            {
            // InternalFiacre.g:30766:2: ( ruleExpression )
            // InternalFiacre.g:30767:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_2_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_2_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ExpAssignment_1_2_6_1"


    // $ANTLR start "rule__PatternStatement__ExpAssignment_1_3_3_1"
    // InternalFiacre.g:30776:1: rule__PatternStatement__ExpAssignment_1_3_3_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ExpAssignment_1_3_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30780:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30781:2: ( ruleExpression )
            {
            // InternalFiacre.g:30781:2: ( ruleExpression )
            // InternalFiacre.g:30782:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_3_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_3_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ExpAssignment_1_3_3_1"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_4_2"
    // InternalFiacre.g:30791:1: rule__PatternStatement__ValuesAssignment_1_4_2 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_4_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30795:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30796:2: ( ruleExpression )
            {
            // InternalFiacre.g:30796:2: ( ruleExpression )
            // InternalFiacre.g:30797:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_4_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_4_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_4_2"


    // $ANTLR start "rule__PatternStatement__ValuesAssignment_1_4_3_1"
    // InternalFiacre.g:30806:1: rule__PatternStatement__ValuesAssignment_1_4_3_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ValuesAssignment_1_4_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30810:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30811:2: ( ruleExpression )
            {
            // InternalFiacre.g:30811:2: ( ruleExpression )
            // InternalFiacre.g:30812:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_4_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getValuesExpressionParserRuleCall_1_4_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ValuesAssignment_1_4_3_1"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_5_2"
    // InternalFiacre.g:30821:1: rule__PatternStatement__PatternsAssignment_1_5_2 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_5_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30825:1: ( ( rulePattern ) )
            // InternalFiacre.g:30826:2: ( rulePattern )
            {
            // InternalFiacre.g:30826:2: ( rulePattern )
            // InternalFiacre.g:30827:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_5_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_5_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_5_2"


    // $ANTLR start "rule__PatternStatement__PatternsAssignment_1_5_3_1"
    // InternalFiacre.g:30836:1: rule__PatternStatement__PatternsAssignment_1_5_3_1 : ( rulePattern ) ;
    public final void rule__PatternStatement__PatternsAssignment_1_5_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30840:1: ( ( rulePattern ) )
            // InternalFiacre.g:30841:2: ( rulePattern )
            {
            // InternalFiacre.g:30841:2: ( rulePattern )
            // InternalFiacre.g:30842:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_5_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getPatternsPatternParserRuleCall_1_5_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__PatternsAssignment_1_5_3_1"


    // $ANTLR start "rule__PatternStatement__ExpAssignment_1_5_4_1"
    // InternalFiacre.g:30851:1: rule__PatternStatement__ExpAssignment_1_5_4_1 : ( ruleExpression ) ;
    public final void rule__PatternStatement__ExpAssignment_1_5_4_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30855:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30856:2: ( ruleExpression )
            {
            // InternalFiacre.g:30856:2: ( ruleExpression )
            // InternalFiacre.g:30857:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_5_4_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPatternStatementAccess().getExpExpressionParserRuleCall_1_5_4_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PatternStatement__ExpAssignment_1_5_4_1"


    // $ANTLR start "rule__ConstantPattern__ValueAssignment"
    // InternalFiacre.g:30866:1: rule__ConstantPattern__ValueAssignment : ( ruleLiteralExpression ) ;
    public final void rule__ConstantPattern__ValueAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30870:1: ( ( ruleLiteralExpression ) )
            // InternalFiacre.g:30871:2: ( ruleLiteralExpression )
            {
            // InternalFiacre.g:30871:2: ( ruleLiteralExpression )
            // InternalFiacre.g:30872:3: ruleLiteralExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConstantPatternAccess().getValueLiteralExpressionParserRuleCall_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLiteralExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConstantPatternAccess().getValueLiteralExpressionParserRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConstantPattern__ValueAssignment"


    // $ANTLR start "rule__IntegerPattern__NegativeAssignment_0_1"
    // InternalFiacre.g:30881:1: rule__IntegerPattern__NegativeAssignment_0_1 : ( ( '-' ) ) ;
    public final void rule__IntegerPattern__NegativeAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30885:1: ( ( ( '-' ) ) )
            // InternalFiacre.g:30886:2: ( ( '-' ) )
            {
            // InternalFiacre.g:30886:2: ( ( '-' ) )
            // InternalFiacre.g:30887:3: ( '-' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getNegativeHyphenMinusKeyword_0_1_0()); 
            }
            // InternalFiacre.g:30888:3: ( '-' )
            // InternalFiacre.g:30889:4: '-'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getNegativeHyphenMinusKeyword_0_1_0()); 
            }
            match(input,87,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getNegativeHyphenMinusKeyword_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getNegativeHyphenMinusKeyword_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__NegativeAssignment_0_1"


    // $ANTLR start "rule__IntegerPattern__ValueAssignment_1"
    // InternalFiacre.g:30900:1: rule__IntegerPattern__ValueAssignment_1 : ( RULE_INT ) ;
    public final void rule__IntegerPattern__ValueAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30904:1: ( ( RULE_INT ) )
            // InternalFiacre.g:30905:2: ( RULE_INT )
            {
            // InternalFiacre.g:30905:2: ( RULE_INT )
            // InternalFiacre.g:30906:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIntegerPatternAccess().getValueINTTerminalRuleCall_1_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIntegerPatternAccess().getValueINTTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IntegerPattern__ValueAssignment_1"


    // $ANTLR start "rule__IdentifierPattern__DeclarationAssignment_0_1"
    // InternalFiacre.g:30915:1: rule__IdentifierPattern__DeclarationAssignment_0_1 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierPattern__DeclarationAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30919:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:30920:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:30920:2: ( ( RULE_ID ) )
            // InternalFiacre.g:30921:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseCrossReference_0_1_0()); 
            }
            // InternalFiacre.g:30922:3: ( RULE_ID )
            // InternalFiacre.g:30923:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseCrossReference_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__DeclarationAssignment_0_1"


    // $ANTLR start "rule__IdentifierPattern__ParametersAssignment_0_3_0"
    // InternalFiacre.g:30934:1: rule__IdentifierPattern__ParametersAssignment_0_3_0 : ( rulePattern ) ;
    public final void rule__IdentifierPattern__ParametersAssignment_0_3_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30938:1: ( ( rulePattern ) )
            // InternalFiacre.g:30939:2: ( rulePattern )
            {
            // InternalFiacre.g:30939:2: ( rulePattern )
            // InternalFiacre.g:30940:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getParametersPatternParserRuleCall_0_3_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getParametersPatternParserRuleCall_0_3_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__ParametersAssignment_0_3_0"


    // $ANTLR start "rule__IdentifierPattern__ParametersAssignment_0_3_1_1"
    // InternalFiacre.g:30949:1: rule__IdentifierPattern__ParametersAssignment_0_3_1_1 : ( rulePattern ) ;
    public final void rule__IdentifierPattern__ParametersAssignment_0_3_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30953:1: ( ( rulePattern ) )
            // InternalFiacre.g:30954:2: ( rulePattern )
            {
            // InternalFiacre.g:30954:2: ( rulePattern )
            // InternalFiacre.g:30955:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getParametersPatternParserRuleCall_0_3_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getParametersPatternParserRuleCall_0_3_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__ParametersAssignment_0_3_1_1"


    // $ANTLR start "rule__IdentifierPattern__DeclarationAssignment_1_0"
    // InternalFiacre.g:30964:1: rule__IdentifierPattern__DeclarationAssignment_1_0 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierPattern__DeclarationAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30968:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:30969:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:30969:2: ( ( RULE_ID ) )
            // InternalFiacre.g:30970:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseCrossReference_1_0_0()); 
            }
            // InternalFiacre.g:30971:3: ( RULE_ID )
            // InternalFiacre.g:30972:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseIDTerminalRuleCall_1_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseIDTerminalRuleCall_1_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getDeclarationPatternDeclarationUseCrossReference_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__DeclarationAssignment_1_0"


    // $ANTLR start "rule__IdentifierPattern__IndexAssignment_1_1_0_2"
    // InternalFiacre.g:30983:1: rule__IdentifierPattern__IndexAssignment_1_1_0_2 : ( ruleExpression ) ;
    public final void rule__IdentifierPattern__IndexAssignment_1_1_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:30987:1: ( ( ruleExpression ) )
            // InternalFiacre.g:30988:2: ( ruleExpression )
            {
            // InternalFiacre.g:30988:2: ( ruleExpression )
            // InternalFiacre.g:30989:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getIndexExpressionParserRuleCall_1_1_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getIndexExpressionParserRuleCall_1_1_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__IndexAssignment_1_1_0_2"


    // $ANTLR start "rule__IdentifierPattern__FieldAssignment_1_1_1_2"
    // InternalFiacre.g:30998:1: rule__IdentifierPattern__FieldAssignment_1_1_1_2 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierPattern__FieldAssignment_1_1_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31002:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31003:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31003:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31004:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getFieldRecordFieldDeclarationCrossReference_1_1_1_2_0()); 
            }
            // InternalFiacre.g:31005:3: ( RULE_ID )
            // InternalFiacre.g:31006:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierPatternAccess().getFieldRecordFieldDeclarationIDTerminalRuleCall_1_1_1_2_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getFieldRecordFieldDeclarationIDTerminalRuleCall_1_1_1_2_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierPatternAccess().getFieldRecordFieldDeclarationCrossReference_1_1_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierPattern__FieldAssignment_1_1_1_2"


    // $ANTLR start "rule__ConditionalStatement__ConditionAssignment_1"
    // InternalFiacre.g:31017:1: rule__ConditionalStatement__ConditionAssignment_1 : ( ruleExpression ) ;
    public final void rule__ConditionalStatement__ConditionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31021:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31022:2: ( ruleExpression )
            {
            // InternalFiacre.g:31022:2: ( ruleExpression )
            // InternalFiacre.g:31023:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__ConditionAssignment_1"


    // $ANTLR start "rule__ConditionalStatement__ThenAssignment_3"
    // InternalFiacre.g:31032:1: rule__ConditionalStatement__ThenAssignment_3 : ( ruleStatementSequence ) ;
    public final void rule__ConditionalStatement__ThenAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31036:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31037:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31037:2: ( ruleStatementSequence )
            // InternalFiacre.g:31038:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getThenStatementSequenceParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getThenStatementSequenceParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__ThenAssignment_3"


    // $ANTLR start "rule__ConditionalStatement__ElseifAssignment_4"
    // InternalFiacre.g:31047:1: rule__ConditionalStatement__ElseifAssignment_4 : ( ruleExtendedConditionalStatement ) ;
    public final void rule__ConditionalStatement__ElseifAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31051:1: ( ( ruleExtendedConditionalStatement ) )
            // InternalFiacre.g:31052:2: ( ruleExtendedConditionalStatement )
            {
            // InternalFiacre.g:31052:2: ( ruleExtendedConditionalStatement )
            // InternalFiacre.g:31053:3: ruleExtendedConditionalStatement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getElseifExtendedConditionalStatementParserRuleCall_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExtendedConditionalStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getElseifExtendedConditionalStatementParserRuleCall_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__ElseifAssignment_4"


    // $ANTLR start "rule__ConditionalStatement__ElseAssignment_5_1"
    // InternalFiacre.g:31062:1: rule__ConditionalStatement__ElseAssignment_5_1 : ( ruleStatementSequence ) ;
    public final void rule__ConditionalStatement__ElseAssignment_5_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31066:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31067:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31067:2: ( ruleStatementSequence )
            // InternalFiacre.g:31068:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalStatementAccess().getElseStatementSequenceParserRuleCall_5_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalStatementAccess().getElseStatementSequenceParserRuleCall_5_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ConditionalStatement__ElseAssignment_5_1"


    // $ANTLR start "rule__ExtendedConditionalStatement__ConditionAssignment_1"
    // InternalFiacre.g:31077:1: rule__ExtendedConditionalStatement__ConditionAssignment_1 : ( ruleExpression ) ;
    public final void rule__ExtendedConditionalStatement__ConditionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31081:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31082:2: ( ruleExpression )
            {
            // InternalFiacre.g:31082:2: ( ruleExpression )
            // InternalFiacre.g:31083:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__ConditionAssignment_1"


    // $ANTLR start "rule__ExtendedConditionalStatement__ThenAssignment_3"
    // InternalFiacre.g:31092:1: rule__ExtendedConditionalStatement__ThenAssignment_3 : ( ruleStatementSequence ) ;
    public final void rule__ExtendedConditionalStatement__ThenAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31096:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31097:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31097:2: ( ruleStatementSequence )
            // InternalFiacre.g:31098:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getExtendedConditionalStatementAccess().getThenStatementSequenceParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getExtendedConditionalStatementAccess().getThenStatementSequenceParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ExtendedConditionalStatement__ThenAssignment_3"


    // $ANTLR start "rule__SelectStatement__BodyAssignment_1"
    // InternalFiacre.g:31107:1: rule__SelectStatement__BodyAssignment_1 : ( ruleUnlessStatement ) ;
    public final void rule__SelectStatement__BodyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31111:1: ( ( ruleUnlessStatement ) )
            // InternalFiacre.g:31112:2: ( ruleUnlessStatement )
            {
            // InternalFiacre.g:31112:2: ( ruleUnlessStatement )
            // InternalFiacre.g:31113:3: ruleUnlessStatement
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getBodyUnlessStatementParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnlessStatement();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getBodyUnlessStatementParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__BodyAssignment_1"


    // $ANTLR start "rule__SelectStatement__IndexAssignment_2_1"
    // InternalFiacre.g:31122:1: rule__SelectStatement__IndexAssignment_2_1 : ( ruleVariableDeclaration ) ;
    public final void rule__SelectStatement__IndexAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31126:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:31127:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:31127:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:31128:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getIndexVariableDeclarationParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getIndexVariableDeclarationParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__IndexAssignment_2_1"


    // $ANTLR start "rule__SelectStatement__TypeAssignment_2_3"
    // InternalFiacre.g:31137:1: rule__SelectStatement__TypeAssignment_2_3 : ( ruleRangeType ) ;
    public final void rule__SelectStatement__TypeAssignment_2_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31141:1: ( ( ruleRangeType ) )
            // InternalFiacre.g:31142:2: ( ruleRangeType )
            {
            // InternalFiacre.g:31142:2: ( ruleRangeType )
            // InternalFiacre.g:31143:3: ruleRangeType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSelectStatementAccess().getTypeRangeTypeParserRuleCall_2_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRangeType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSelectStatementAccess().getTypeRangeTypeParserRuleCall_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SelectStatement__TypeAssignment_2_3"


    // $ANTLR start "rule__WhileStatement__ConditionAssignment_1"
    // InternalFiacre.g:31152:1: rule__WhileStatement__ConditionAssignment_1 : ( ruleExpression ) ;
    public final void rule__WhileStatement__ConditionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31156:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31157:2: ( ruleExpression )
            {
            // InternalFiacre.g:31157:2: ( ruleExpression )
            // InternalFiacre.g:31158:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__ConditionAssignment_1"


    // $ANTLR start "rule__WhileStatement__BodyAssignment_3"
    // InternalFiacre.g:31167:1: rule__WhileStatement__BodyAssignment_3 : ( ruleStatementSequence ) ;
    public final void rule__WhileStatement__BodyAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31171:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31172:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31172:2: ( ruleStatementSequence )
            // InternalFiacre.g:31173:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWhileStatementAccess().getBodyStatementSequenceParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWhileStatementAccess().getBodyStatementSequenceParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WhileStatement__BodyAssignment_3"


    // $ANTLR start "rule__ForeachStatement__VariableAssignment_1"
    // InternalFiacre.g:31182:1: rule__ForeachStatement__VariableAssignment_1 : ( ruleVariableDeclaration ) ;
    public final void rule__ForeachStatement__VariableAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31186:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:31187:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:31187:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:31188:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getVariableVariableDeclarationParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getVariableVariableDeclarationParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__VariableAssignment_1"


    // $ANTLR start "rule__ForeachStatement__BodyAssignment_3"
    // InternalFiacre.g:31197:1: rule__ForeachStatement__BodyAssignment_3 : ( ruleStatementSequence ) ;
    public final void rule__ForeachStatement__BodyAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31201:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31202:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31202:2: ( ruleStatementSequence )
            // InternalFiacre.g:31203:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getForeachStatementAccess().getBodyStatementSequenceParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getForeachStatementAccess().getBodyStatementSequenceParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ForeachStatement__BodyAssignment_3"


    // $ANTLR start "rule__ToStatement__StateAssignment_1"
    // InternalFiacre.g:31212:1: rule__ToStatement__StateAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__ToStatement__StateAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31216:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31217:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31217:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31218:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementAccess().getStateStateDeclarationCrossReference_1_0()); 
            }
            // InternalFiacre.g:31219:3: ( RULE_ID )
            // InternalFiacre.g:31220:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getToStatementAccess().getStateStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementAccess().getStateStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getToStatementAccess().getStateStateDeclarationCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ToStatement__StateAssignment_1"


    // $ANTLR start "rule__CaseStatement__ValueAssignment_1"
    // InternalFiacre.g:31231:1: rule__CaseStatement__ValueAssignment_1 : ( ruleExpression ) ;
    public final void rule__CaseStatement__ValueAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31235:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31236:2: ( ruleExpression )
            {
            // InternalFiacre.g:31236:2: ( ruleExpression )
            // InternalFiacre.g:31237:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getValueExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getValueExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__ValueAssignment_1"


    // $ANTLR start "rule__CaseStatement__PatternAssignment_3"
    // InternalFiacre.g:31246:1: rule__CaseStatement__PatternAssignment_3 : ( rulePattern ) ;
    public final void rule__CaseStatement__PatternAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31250:1: ( ( rulePattern ) )
            // InternalFiacre.g:31251:2: ( rulePattern )
            {
            // InternalFiacre.g:31251:2: ( rulePattern )
            // InternalFiacre.g:31252:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getPatternPatternParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getPatternPatternParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__PatternAssignment_3"


    // $ANTLR start "rule__CaseStatement__BodyAssignment_5"
    // InternalFiacre.g:31261:1: rule__CaseStatement__BodyAssignment_5 : ( ruleStatementSequence ) ;
    public final void rule__CaseStatement__BodyAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31265:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31266:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31266:2: ( ruleStatementSequence )
            // InternalFiacre.g:31267:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getBodyStatementSequenceParserRuleCall_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getBodyStatementSequenceParserRuleCall_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__BodyAssignment_5"


    // $ANTLR start "rule__CaseStatement__PatternAssignment_6_1"
    // InternalFiacre.g:31276:1: rule__CaseStatement__PatternAssignment_6_1 : ( rulePattern ) ;
    public final void rule__CaseStatement__PatternAssignment_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31280:1: ( ( rulePattern ) )
            // InternalFiacre.g:31281:2: ( rulePattern )
            {
            // InternalFiacre.g:31281:2: ( rulePattern )
            // InternalFiacre.g:31282:3: rulePattern
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getPatternPatternParserRuleCall_6_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePattern();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getPatternPatternParserRuleCall_6_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__PatternAssignment_6_1"


    // $ANTLR start "rule__CaseStatement__BodyAssignment_6_3"
    // InternalFiacre.g:31291:1: rule__CaseStatement__BodyAssignment_6_3 : ( ruleStatementSequence ) ;
    public final void rule__CaseStatement__BodyAssignment_6_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31295:1: ( ( ruleStatementSequence ) )
            // InternalFiacre.g:31296:2: ( ruleStatementSequence )
            {
            // InternalFiacre.g:31296:2: ( ruleStatementSequence )
            // InternalFiacre.g:31297:3: ruleStatementSequence
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCaseStatementAccess().getBodyStatementSequenceParserRuleCall_6_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleStatementSequence();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCaseStatementAccess().getBodyStatementSequenceParserRuleCall_6_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CaseStatement__BodyAssignment_6_3"


    // $ANTLR start "rule__OnStatement__ConditionAssignment_1"
    // InternalFiacre.g:31306:1: rule__OnStatement__ConditionAssignment_1 : ( ruleExpression ) ;
    public final void rule__OnStatement__ConditionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31310:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31311:2: ( ruleExpression )
            {
            // InternalFiacre.g:31311:2: ( ruleExpression )
            // InternalFiacre.g:31312:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getOnStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getOnStatementAccess().getConditionExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OnStatement__ConditionAssignment_1"


    // $ANTLR start "rule__WaitStatement__LeftAssignment_1"
    // InternalFiacre.g:31321:1: rule__WaitStatement__LeftAssignment_1 : ( ruleLowerBound ) ;
    public final void rule__WaitStatement__LeftAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31325:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:31326:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:31326:2: ( ruleLowerBound )
            // InternalFiacre.g:31327:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getLeftLowerBoundParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getLeftLowerBoundParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__LeftAssignment_1"


    // $ANTLR start "rule__WaitStatement__RightAssignment_3"
    // InternalFiacre.g:31336:1: rule__WaitStatement__RightAssignment_3 : ( ruleUpperBound ) ;
    public final void rule__WaitStatement__RightAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31340:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:31341:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:31341:2: ( ruleUpperBound )
            // InternalFiacre.g:31342:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getWaitStatementAccess().getRightUpperBoundParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getWaitStatementAccess().getRightUpperBoundParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__WaitStatement__RightAssignment_3"


    // $ANTLR start "rule__Composition__GlobalAssignment_1_0"
    // InternalFiacre.g:31351:1: rule__Composition__GlobalAssignment_1_0 : ( rulePortSet ) ;
    public final void rule__Composition__GlobalAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31355:1: ( ( rulePortSet ) )
            // InternalFiacre.g:31356:2: ( rulePortSet )
            {
            // InternalFiacre.g:31356:2: ( rulePortSet )
            // InternalFiacre.g:31357:3: rulePortSet
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getGlobalPortSetParserRuleCall_1_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortSet();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getGlobalPortSetParserRuleCall_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__GlobalAssignment_1_0"


    // $ANTLR start "rule__Composition__BlocksAssignment_2"
    // InternalFiacre.g:31366:1: rule__Composition__BlocksAssignment_2 : ( ruleBlock ) ;
    public final void rule__Composition__BlocksAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31370:1: ( ( ruleBlock ) )
            // InternalFiacre.g:31371:2: ( ruleBlock )
            {
            // InternalFiacre.g:31371:2: ( ruleBlock )
            // InternalFiacre.g:31372:3: ruleBlock
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getBlocksBlockParserRuleCall_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleBlock();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getBlocksBlockParserRuleCall_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__BlocksAssignment_2"


    // $ANTLR start "rule__Composition__BlocksAssignment_3_1"
    // InternalFiacre.g:31381:1: rule__Composition__BlocksAssignment_3_1 : ( ruleBlock ) ;
    public final void rule__Composition__BlocksAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31385:1: ( ( ruleBlock ) )
            // InternalFiacre.g:31386:2: ( ruleBlock )
            {
            // InternalFiacre.g:31386:2: ( ruleBlock )
            // InternalFiacre.g:31387:3: ruleBlock
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositionAccess().getBlocksBlockParserRuleCall_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleBlock();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositionAccess().getBlocksBlockParserRuleCall_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Composition__BlocksAssignment_3_1"


    // $ANTLR start "rule__CompositeBlock__LocalAssignment_0_0_0"
    // InternalFiacre.g:31396:1: rule__CompositeBlock__LocalAssignment_0_0_0 : ( rulePortSet ) ;
    public final void rule__CompositeBlock__LocalAssignment_0_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31400:1: ( ( rulePortSet ) )
            // InternalFiacre.g:31401:2: ( rulePortSet )
            {
            // InternalFiacre.g:31401:2: ( rulePortSet )
            // InternalFiacre.g:31402:3: rulePortSet
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getLocalPortSetParserRuleCall_0_0_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortSet();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getLocalPortSetParserRuleCall_0_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__LocalAssignment_0_0_0"


    // $ANTLR start "rule__CompositeBlock__CompositionAssignment_1"
    // InternalFiacre.g:31411:1: rule__CompositeBlock__CompositionAssignment_1 : ( ruleComposition ) ;
    public final void rule__CompositeBlock__CompositionAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31415:1: ( ( ruleComposition ) )
            // InternalFiacre.g:31416:2: ( ruleComposition )
            {
            // InternalFiacre.g:31416:2: ( ruleComposition )
            // InternalFiacre.g:31417:3: ruleComposition
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getCompositeBlockAccess().getCompositionCompositionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleComposition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getCompositeBlockAccess().getCompositionCompositionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompositeBlock__CompositionAssignment_1"


    // $ANTLR start "rule__InstanceDeclaration__LocalAssignment_0_0_0"
    // InternalFiacre.g:31426:1: rule__InstanceDeclaration__LocalAssignment_0_0_0 : ( rulePortSet ) ;
    public final void rule__InstanceDeclaration__LocalAssignment_0_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31430:1: ( ( rulePortSet ) )
            // InternalFiacre.g:31431:2: ( rulePortSet )
            {
            // InternalFiacre.g:31431:2: ( rulePortSet )
            // InternalFiacre.g:31432:3: rulePortSet
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getLocalPortSetParserRuleCall_0_0_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePortSet();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getLocalPortSetParserRuleCall_0_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__LocalAssignment_0_0_0"


    // $ANTLR start "rule__InstanceDeclaration__InstanceAssignment_1"
    // InternalFiacre.g:31441:1: rule__InstanceDeclaration__InstanceAssignment_1 : ( ruleComponentInstance ) ;
    public final void rule__InstanceDeclaration__InstanceAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31445:1: ( ( ruleComponentInstance ) )
            // InternalFiacre.g:31446:2: ( ruleComponentInstance )
            {
            // InternalFiacre.g:31446:2: ( ruleComponentInstance )
            // InternalFiacre.g:31447:3: ruleComponentInstance
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInstanceDeclarationAccess().getInstanceComponentInstanceParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleComponentInstance();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInstanceDeclarationAccess().getInstanceComponentInstanceParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InstanceDeclaration__InstanceAssignment_1"


    // $ANTLR start "rule__PortSet__AllPortsAssignment_0"
    // InternalFiacre.g:31456:1: rule__PortSet__AllPortsAssignment_0 : ( ( '*' ) ) ;
    public final void rule__PortSet__AllPortsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31460:1: ( ( ( '*' ) ) )
            // InternalFiacre.g:31461:2: ( ( '*' ) )
            {
            // InternalFiacre.g:31461:2: ( ( '*' ) )
            // InternalFiacre.g:31462:3: ( '*' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getAllPortsAsteriskKeyword_0_0()); 
            }
            // InternalFiacre.g:31463:3: ( '*' )
            // InternalFiacre.g:31464:4: '*'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getAllPortsAsteriskKeyword_0_0()); 
            }
            match(input,88,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getAllPortsAsteriskKeyword_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getAllPortsAsteriskKeyword_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__AllPortsAssignment_0"


    // $ANTLR start "rule__PortSet__PortsAssignment_1_0"
    // InternalFiacre.g:31475:1: rule__PortSet__PortsAssignment_1_0 : ( ruleExpression ) ;
    public final void rule__PortSet__PortsAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31479:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31480:2: ( ruleExpression )
            {
            // InternalFiacre.g:31480:2: ( ruleExpression )
            // InternalFiacre.g:31481:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getPortsExpressionParserRuleCall_1_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getPortsExpressionParserRuleCall_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__PortsAssignment_1_0"


    // $ANTLR start "rule__PortSet__PortsAssignment_1_1_1"
    // InternalFiacre.g:31490:1: rule__PortSet__PortsAssignment_1_1_1 : ( ruleExpression ) ;
    public final void rule__PortSet__PortsAssignment_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31494:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31495:2: ( ruleExpression )
            {
            // InternalFiacre.g:31495:2: ( ruleExpression )
            // InternalFiacre.g:31496:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPortSetAccess().getPortsExpressionParserRuleCall_1_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPortSetAccess().getPortsExpressionParserRuleCall_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PortSet__PortsAssignment_1_1_1"


    // $ANTLR start "rule__ComponentInstance__ComponentAssignment_0"
    // InternalFiacre.g:31505:1: rule__ComponentInstance__ComponentAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__ComponentInstance__ComponentAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31509:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31510:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31510:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31511:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getComponentParameterizedDeclarationCrossReference_0_0()); 
            }
            // InternalFiacre.g:31512:3: ( RULE_ID )
            // InternalFiacre.g:31513:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getComponentParameterizedDeclarationIDTerminalRuleCall_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getComponentParameterizedDeclarationIDTerminalRuleCall_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getComponentParameterizedDeclarationCrossReference_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__ComponentAssignment_0"


    // $ANTLR start "rule__ComponentInstance__PortsAssignment_1_1"
    // InternalFiacre.g:31524:1: rule__ComponentInstance__PortsAssignment_1_1 : ( ruleExpression ) ;
    public final void rule__ComponentInstance__PortsAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31528:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31529:2: ( ruleExpression )
            {
            // InternalFiacre.g:31529:2: ( ruleExpression )
            // InternalFiacre.g:31530:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getPortsExpressionParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getPortsExpressionParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__PortsAssignment_1_1"


    // $ANTLR start "rule__ComponentInstance__PortsAssignment_1_2_1"
    // InternalFiacre.g:31539:1: rule__ComponentInstance__PortsAssignment_1_2_1 : ( ruleExpression ) ;
    public final void rule__ComponentInstance__PortsAssignment_1_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31543:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31544:2: ( ruleExpression )
            {
            // InternalFiacre.g:31544:2: ( ruleExpression )
            // InternalFiacre.g:31545:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getPortsExpressionParserRuleCall_1_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getPortsExpressionParserRuleCall_1_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__PortsAssignment_1_2_1"


    // $ANTLR start "rule__ComponentInstance__ParametersAssignment_2_1"
    // InternalFiacre.g:31554:1: rule__ComponentInstance__ParametersAssignment_2_1 : ( ruleExpression ) ;
    public final void rule__ComponentInstance__ParametersAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31558:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31559:2: ( ruleExpression )
            {
            // InternalFiacre.g:31559:2: ( ruleExpression )
            // InternalFiacre.g:31560:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getParametersExpressionParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getParametersExpressionParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__ParametersAssignment_2_1"


    // $ANTLR start "rule__ComponentInstance__ParametersAssignment_2_2_1"
    // InternalFiacre.g:31569:1: rule__ComponentInstance__ParametersAssignment_2_2_1 : ( ruleExpression ) ;
    public final void rule__ComponentInstance__ParametersAssignment_2_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31573:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31574:2: ( ruleExpression )
            {
            // InternalFiacre.g:31574:2: ( ruleExpression )
            // InternalFiacre.g:31575:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComponentInstanceAccess().getParametersExpressionParserRuleCall_2_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComponentInstanceAccess().getParametersExpressionParserRuleCall_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ComponentInstance__ParametersAssignment_2_2_1"


    // $ANTLR start "rule__QuantifiedExpression__IndexAssignment_0_1"
    // InternalFiacre.g:31584:1: rule__QuantifiedExpression__IndexAssignment_0_1 : ( ruleVariableDeclaration ) ;
    public final void rule__QuantifiedExpression__IndexAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31588:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:31589:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:31589:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:31590:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getIndexVariableDeclarationParserRuleCall_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getIndexVariableDeclarationParserRuleCall_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__IndexAssignment_0_1"


    // $ANTLR start "rule__QuantifiedExpression__TypeAssignment_0_2_1"
    // InternalFiacre.g:31599:1: rule__QuantifiedExpression__TypeAssignment_0_2_1 : ( ruleRangeType ) ;
    public final void rule__QuantifiedExpression__TypeAssignment_0_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31603:1: ( ( ruleRangeType ) )
            // InternalFiacre.g:31604:2: ( ruleRangeType )
            {
            // InternalFiacre.g:31604:2: ( ruleRangeType )
            // InternalFiacre.g:31605:3: ruleRangeType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getTypeRangeTypeParserRuleCall_0_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRangeType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getTypeRangeTypeParserRuleCall_0_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__TypeAssignment_0_2_1"


    // $ANTLR start "rule__QuantifiedExpression__ChildAssignment_0_4"
    // InternalFiacre.g:31614:1: rule__QuantifiedExpression__ChildAssignment_0_4 : ( ruleQuantifiedExpression ) ;
    public final void rule__QuantifiedExpression__ChildAssignment_0_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31618:1: ( ( ruleQuantifiedExpression ) )
            // InternalFiacre.g:31619:2: ( ruleQuantifiedExpression )
            {
            // InternalFiacre.g:31619:2: ( ruleQuantifiedExpression )
            // InternalFiacre.g:31620:3: ruleQuantifiedExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedExpressionAccess().getChildQuantifiedExpressionParserRuleCall_0_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQuantifiedExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedExpressionAccess().getChildQuantifiedExpressionParserRuleCall_0_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedExpression__ChildAssignment_0_4"


    // $ANTLR start "rule__Conditional__ThenAssignment_1_2"
    // InternalFiacre.g:31629:1: rule__Conditional__ThenAssignment_1_2 : ( ruleDisjunction ) ;
    public final void rule__Conditional__ThenAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31633:1: ( ( ruleDisjunction ) )
            // InternalFiacre.g:31634:2: ( ruleDisjunction )
            {
            // InternalFiacre.g:31634:2: ( ruleDisjunction )
            // InternalFiacre.g:31635:3: ruleDisjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getThenDisjunctionParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getThenDisjunctionParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__ThenAssignment_1_2"


    // $ANTLR start "rule__Conditional__ElseAssignment_1_4"
    // InternalFiacre.g:31644:1: rule__Conditional__ElseAssignment_1_4 : ( ruleDisjunction ) ;
    public final void rule__Conditional__ElseAssignment_1_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31648:1: ( ( ruleDisjunction ) )
            // InternalFiacre.g:31649:2: ( ruleDisjunction )
            {
            // InternalFiacre.g:31649:2: ( ruleDisjunction )
            // InternalFiacre.g:31650:3: ruleDisjunction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConditionalAccess().getElseDisjunctionParserRuleCall_1_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDisjunction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConditionalAccess().getElseDisjunctionParserRuleCall_1_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conditional__ElseAssignment_1_4"


    // $ANTLR start "rule__Disjunction__RightAssignment_1_2"
    // InternalFiacre.g:31659:1: rule__Disjunction__RightAssignment_1_2 : ( ruleImplication ) ;
    public final void rule__Disjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31663:1: ( ( ruleImplication ) )
            // InternalFiacre.g:31664:2: ( ruleImplication )
            {
            // InternalFiacre.g:31664:2: ( ruleImplication )
            // InternalFiacre.g:31665:3: ruleImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDisjunctionAccess().getRightImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDisjunctionAccess().getRightImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Disjunction__RightAssignment_1_2"


    // $ANTLR start "rule__Implication__RightAssignment_1_2"
    // InternalFiacre.g:31674:1: rule__Implication__RightAssignment_1_2 : ( ruleImplication ) ;
    public final void rule__Implication__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31678:1: ( ( ruleImplication ) )
            // InternalFiacre.g:31679:2: ( ruleImplication )
            {
            // InternalFiacre.g:31679:2: ( ruleImplication )
            // InternalFiacre.g:31680:3: ruleImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getImplicationAccess().getRightImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getImplicationAccess().getRightImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Implication__RightAssignment_1_2"


    // $ANTLR start "rule__Conjunction__RightAssignment_1_2"
    // InternalFiacre.g:31689:1: rule__Conjunction__RightAssignment_1_2 : ( ruleComparison ) ;
    public final void rule__Conjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31693:1: ( ( ruleComparison ) )
            // InternalFiacre.g:31694:2: ( ruleComparison )
            {
            // InternalFiacre.g:31694:2: ( ruleComparison )
            // InternalFiacre.g:31695:3: ruleComparison
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getConjunctionAccess().getRightComparisonParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleComparison();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getConjunctionAccess().getRightComparisonParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Conjunction__RightAssignment_1_2"


    // $ANTLR start "rule__Comparison__RightAssignment_1_1"
    // InternalFiacre.g:31704:1: rule__Comparison__RightAssignment_1_1 : ( ruleAddition ) ;
    public final void rule__Comparison__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31708:1: ( ( ruleAddition ) )
            // InternalFiacre.g:31709:2: ( ruleAddition )
            {
            // InternalFiacre.g:31709:2: ( ruleAddition )
            // InternalFiacre.g:31710:3: ruleAddition
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getComparisonAccess().getRightAdditionParserRuleCall_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAddition();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getComparisonAccess().getRightAdditionParserRuleCall_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Comparison__RightAssignment_1_1"


    // $ANTLR start "rule__Addition__RightAssignment_1_2"
    // InternalFiacre.g:31719:1: rule__Addition__RightAssignment_1_2 : ( ruleSubstraction ) ;
    public final void rule__Addition__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31723:1: ( ( ruleSubstraction ) )
            // InternalFiacre.g:31724:2: ( ruleSubstraction )
            {
            // InternalFiacre.g:31724:2: ( ruleSubstraction )
            // InternalFiacre.g:31725:3: ruleSubstraction
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAdditionAccess().getRightSubstractionParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleSubstraction();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAdditionAccess().getRightSubstractionParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__RightAssignment_1_2"


    // $ANTLR start "rule__Substraction__RightAssignment_1_2"
    // InternalFiacre.g:31734:1: rule__Substraction__RightAssignment_1_2 : ( ruleMultiplication ) ;
    public final void rule__Substraction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31738:1: ( ( ruleMultiplication ) )
            // InternalFiacre.g:31739:2: ( ruleMultiplication )
            {
            // InternalFiacre.g:31739:2: ( ruleMultiplication )
            // InternalFiacre.g:31740:3: ruleMultiplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSubstractionAccess().getRightMultiplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleMultiplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSubstractionAccess().getRightMultiplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Substraction__RightAssignment_1_2"


    // $ANTLR start "rule__Multiplication__RightAssignment_1_2"
    // InternalFiacre.g:31749:1: rule__Multiplication__RightAssignment_1_2 : ( ruleDivision ) ;
    public final void rule__Multiplication__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31753:1: ( ( ruleDivision ) )
            // InternalFiacre.g:31754:2: ( ruleDivision )
            {
            // InternalFiacre.g:31754:2: ( ruleDivision )
            // InternalFiacre.g:31755:3: ruleDivision
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMultiplicationAccess().getRightDivisionParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleDivision();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMultiplicationAccess().getRightDivisionParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__RightAssignment_1_2"


    // $ANTLR start "rule__Division__RightAssignment_1_2"
    // InternalFiacre.g:31764:1: rule__Division__RightAssignment_1_2 : ( ruleModulo ) ;
    public final void rule__Division__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31768:1: ( ( ruleModulo ) )
            // InternalFiacre.g:31769:2: ( ruleModulo )
            {
            // InternalFiacre.g:31769:2: ( ruleModulo )
            // InternalFiacre.g:31770:3: ruleModulo
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDivisionAccess().getRightModuloParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleModulo();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDivisionAccess().getRightModuloParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Division__RightAssignment_1_2"


    // $ANTLR start "rule__Modulo__RightAssignment_1_2"
    // InternalFiacre.g:31779:1: rule__Modulo__RightAssignment_1_2 : ( ruleUnaryExpression ) ;
    public final void rule__Modulo__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31783:1: ( ( ruleUnaryExpression ) )
            // InternalFiacre.g:31784:2: ( ruleUnaryExpression )
            {
            // InternalFiacre.g:31784:2: ( ruleUnaryExpression )
            // InternalFiacre.g:31785:3: ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getModuloAccess().getRightUnaryExpressionParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getModuloAccess().getRightUnaryExpressionParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Modulo__RightAssignment_1_2"


    // $ANTLR start "rule__UnaryExpression__ChildAssignment_0_1"
    // InternalFiacre.g:31794:1: rule__UnaryExpression__ChildAssignment_0_1 : ( ruleUnaryExpression ) ;
    public final void rule__UnaryExpression__ChildAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31798:1: ( ( ruleUnaryExpression ) )
            // InternalFiacre.g:31799:2: ( ruleUnaryExpression )
            {
            // InternalFiacre.g:31799:2: ( ruleUnaryExpression )
            // InternalFiacre.g:31800:3: ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getUnaryExpressionAccess().getChildUnaryExpressionParserRuleCall_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getUnaryExpressionAccess().getChildUnaryExpressionParserRuleCall_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryExpression__ChildAssignment_0_1"


    // $ANTLR start "rule__Projection__FieldAssignment_1_2"
    // InternalFiacre.g:31809:1: rule__Projection__FieldAssignment_1_2 : ( ruleAtomicExpression ) ;
    public final void rule__Projection__FieldAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31813:1: ( ( ruleAtomicExpression ) )
            // InternalFiacre.g:31814:2: ( ruleAtomicExpression )
            {
            // InternalFiacre.g:31814:2: ( ruleAtomicExpression )
            // InternalFiacre.g:31815:3: ruleAtomicExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getProjectionAccess().getFieldAtomicExpressionParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getProjectionAccess().getFieldAtomicExpressionParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Projection__FieldAssignment_1_2"


    // $ANTLR start "rule__ReferenceExpression__DeclarationAssignment_1"
    // InternalFiacre.g:31824:1: rule__ReferenceExpression__DeclarationAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__ReferenceExpression__DeclarationAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31828:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31829:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31829:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31830:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionAccess().getDeclarationReferenceDeclarationUseCrossReference_1_0()); 
            }
            // InternalFiacre.g:31831:3: ( RULE_ID )
            // InternalFiacre.g:31832:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getReferenceExpressionAccess().getDeclarationReferenceDeclarationUseIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionAccess().getDeclarationReferenceDeclarationUseIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getReferenceExpressionAccess().getDeclarationReferenceDeclarationUseCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ReferenceExpression__DeclarationAssignment_1"


    // $ANTLR start "rule__IdentifierExpression__DeclarationAssignment_0_1"
    // InternalFiacre.g:31843:1: rule__IdentifierExpression__DeclarationAssignment_0_1 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierExpression__DeclarationAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31847:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31848:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31848:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31849:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseCrossReference_0_1_0()); 
            }
            // InternalFiacre.g:31850:3: ( RULE_ID )
            // InternalFiacre.g:31851:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseCrossReference_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__DeclarationAssignment_0_1"


    // $ANTLR start "rule__IdentifierExpression__ParametersAssignment_0_3_0"
    // InternalFiacre.g:31862:1: rule__IdentifierExpression__ParametersAssignment_0_3_0 : ( ruleExpression ) ;
    public final void rule__IdentifierExpression__ParametersAssignment_0_3_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31866:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31867:2: ( ruleExpression )
            {
            // InternalFiacre.g:31867:2: ( ruleExpression )
            // InternalFiacre.g:31868:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getParametersExpressionParserRuleCall_0_3_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getParametersExpressionParserRuleCall_0_3_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__ParametersAssignment_0_3_0"


    // $ANTLR start "rule__IdentifierExpression__ParametersAssignment_0_3_1_1"
    // InternalFiacre.g:31877:1: rule__IdentifierExpression__ParametersAssignment_0_3_1_1 : ( ruleExpression ) ;
    public final void rule__IdentifierExpression__ParametersAssignment_0_3_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31881:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31882:2: ( ruleExpression )
            {
            // InternalFiacre.g:31882:2: ( ruleExpression )
            // InternalFiacre.g:31883:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getParametersExpressionParserRuleCall_0_3_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getParametersExpressionParserRuleCall_0_3_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__ParametersAssignment_0_3_1_1"


    // $ANTLR start "rule__IdentifierExpression__DeclarationAssignment_1_0"
    // InternalFiacre.g:31892:1: rule__IdentifierExpression__DeclarationAssignment_1_0 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierExpression__DeclarationAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31896:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31897:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31897:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31898:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseCrossReference_1_0_0()); 
            }
            // InternalFiacre.g:31899:3: ( RULE_ID )
            // InternalFiacre.g:31900:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseIDTerminalRuleCall_1_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseIDTerminalRuleCall_1_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getDeclarationExpressionDeclarationUseCrossReference_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__DeclarationAssignment_1_0"


    // $ANTLR start "rule__IdentifierExpression__IndexesAssignment_1_1_0_2"
    // InternalFiacre.g:31911:1: rule__IdentifierExpression__IndexesAssignment_1_1_0_2 : ( ruleExpression ) ;
    public final void rule__IdentifierExpression__IndexesAssignment_1_1_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31915:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31916:2: ( ruleExpression )
            {
            // InternalFiacre.g:31916:2: ( ruleExpression )
            // InternalFiacre.g:31917:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getIndexesExpressionParserRuleCall_1_1_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getIndexesExpressionParserRuleCall_1_1_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__IndexesAssignment_1_1_0_2"


    // $ANTLR start "rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1"
    // InternalFiacre.g:31926:1: rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1 : ( ruleExpression ) ;
    public final void rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31930:1: ( ( ruleExpression ) )
            // InternalFiacre.g:31931:2: ( ruleExpression )
            {
            // InternalFiacre.g:31931:2: ( ruleExpression )
            // InternalFiacre.g:31932:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getIndexesExpressionParserRuleCall_1_1_0_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getIndexesExpressionParserRuleCall_1_1_0_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__IndexesAssignment_1_1_0_3_1"


    // $ANTLR start "rule__IdentifierExpression__FieldAssignment_1_1_1_2"
    // InternalFiacre.g:31941:1: rule__IdentifierExpression__FieldAssignment_1_1_1_2 : ( ( RULE_ID ) ) ;
    public final void rule__IdentifierExpression__FieldAssignment_1_1_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31945:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31946:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31946:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31947:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getFieldRecordFieldDeclarationCrossReference_1_1_1_2_0()); 
            }
            // InternalFiacre.g:31948:3: ( RULE_ID )
            // InternalFiacre.g:31949:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getIdentifierExpressionAccess().getFieldRecordFieldDeclarationIDTerminalRuleCall_1_1_1_2_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getFieldRecordFieldDeclarationIDTerminalRuleCall_1_1_1_2_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getIdentifierExpressionAccess().getFieldRecordFieldDeclarationCrossReference_1_1_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__IdentifierExpression__FieldAssignment_1_1_1_2"


    // $ANTLR start "rule__RecordExpression__FieldsAssignment_1"
    // InternalFiacre.g:31960:1: rule__RecordExpression__FieldsAssignment_1 : ( ruleFieldExpression ) ;
    public final void rule__RecordExpression__FieldsAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31964:1: ( ( ruleFieldExpression ) )
            // InternalFiacre.g:31965:2: ( ruleFieldExpression )
            {
            // InternalFiacre.g:31965:2: ( ruleFieldExpression )
            // InternalFiacre.g:31966:3: ruleFieldExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getFieldsFieldExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleFieldExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getFieldsFieldExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__FieldsAssignment_1"


    // $ANTLR start "rule__RecordExpression__FieldsAssignment_2_1"
    // InternalFiacre.g:31975:1: rule__RecordExpression__FieldsAssignment_2_1 : ( ruleFieldExpression ) ;
    public final void rule__RecordExpression__FieldsAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31979:1: ( ( ruleFieldExpression ) )
            // InternalFiacre.g:31980:2: ( ruleFieldExpression )
            {
            // InternalFiacre.g:31980:2: ( ruleFieldExpression )
            // InternalFiacre.g:31981:3: ruleFieldExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRecordExpressionAccess().getFieldsFieldExpressionParserRuleCall_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleFieldExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRecordExpressionAccess().getFieldsFieldExpressionParserRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__RecordExpression__FieldsAssignment_2_1"


    // $ANTLR start "rule__FieldExpression__FieldAssignment_0"
    // InternalFiacre.g:31990:1: rule__FieldExpression__FieldAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__FieldExpression__FieldAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:31994:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:31995:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:31995:2: ( ( RULE_ID ) )
            // InternalFiacre.g:31996:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getFieldRecordFieldDeclarationUseCrossReference_0_0()); 
            }
            // InternalFiacre.g:31997:3: ( RULE_ID )
            // InternalFiacre.g:31998:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getFieldRecordFieldDeclarationUseIDTerminalRuleCall_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getFieldRecordFieldDeclarationUseIDTerminalRuleCall_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getFieldRecordFieldDeclarationUseCrossReference_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__FieldAssignment_0"


    // $ANTLR start "rule__FieldExpression__ValueAssignment_2"
    // InternalFiacre.g:32009:1: rule__FieldExpression__ValueAssignment_2 : ( ruleExpression ) ;
    public final void rule__FieldExpression__ValueAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32013:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32014:2: ( ruleExpression )
            {
            // InternalFiacre.g:32014:2: ( ruleExpression )
            // InternalFiacre.g:32015:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFieldExpressionAccess().getValueExpressionParserRuleCall_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getFieldExpressionAccess().getValueExpressionParserRuleCall_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FieldExpression__ValueAssignment_2"


    // $ANTLR start "rule__ArrayExpression__ValuesAssignment_2_0"
    // InternalFiacre.g:32024:1: rule__ArrayExpression__ValuesAssignment_2_0 : ( ruleExpression ) ;
    public final void rule__ArrayExpression__ValuesAssignment_2_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32028:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32029:2: ( ruleExpression )
            {
            // InternalFiacre.g:32029:2: ( ruleExpression )
            // InternalFiacre.g:32030:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getValuesExpressionParserRuleCall_2_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getValuesExpressionParserRuleCall_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__ValuesAssignment_2_0"


    // $ANTLR start "rule__ArrayExpression__ValuesAssignment_2_1_1"
    // InternalFiacre.g:32039:1: rule__ArrayExpression__ValuesAssignment_2_1_1 : ( ruleExpression ) ;
    public final void rule__ArrayExpression__ValuesAssignment_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32043:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32044:2: ( ruleExpression )
            {
            // InternalFiacre.g:32044:2: ( ruleExpression )
            // InternalFiacre.g:32045:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getArrayExpressionAccess().getValuesExpressionParserRuleCall_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getArrayExpressionAccess().getValuesExpressionParserRuleCall_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ArrayExpression__ValuesAssignment_2_1_1"


    // $ANTLR start "rule__QueueExpression__ValuesAssignment_2_0"
    // InternalFiacre.g:32054:1: rule__QueueExpression__ValuesAssignment_2_0 : ( ruleExpression ) ;
    public final void rule__QueueExpression__ValuesAssignment_2_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32058:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32059:2: ( ruleExpression )
            {
            // InternalFiacre.g:32059:2: ( ruleExpression )
            // InternalFiacre.g:32060:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getValuesExpressionParserRuleCall_2_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getValuesExpressionParserRuleCall_2_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__ValuesAssignment_2_0"


    // $ANTLR start "rule__QueueExpression__ValuesAssignment_2_1_1"
    // InternalFiacre.g:32069:1: rule__QueueExpression__ValuesAssignment_2_1_1 : ( ruleExpression ) ;
    public final void rule__QueueExpression__ValuesAssignment_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32073:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32074:2: ( ruleExpression )
            {
            // InternalFiacre.g:32074:2: ( ruleExpression )
            // InternalFiacre.g:32075:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQueueExpressionAccess().getValuesExpressionParserRuleCall_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQueueExpressionAccess().getValuesExpressionParserRuleCall_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QueueExpression__ValuesAssignment_2_1_1"


    // $ANTLR start "rule__EnqueueExpression__ElementAssignment_2"
    // InternalFiacre.g:32084:1: rule__EnqueueExpression__ElementAssignment_2 : ( ruleExpression ) ;
    public final void rule__EnqueueExpression__ElementAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32088:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32089:2: ( ruleExpression )
            {
            // InternalFiacre.g:32089:2: ( ruleExpression )
            // InternalFiacre.g:32090:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getElementExpressionParserRuleCall_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getElementExpressionParserRuleCall_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__ElementAssignment_2"


    // $ANTLR start "rule__EnqueueExpression__QueueAssignment_4"
    // InternalFiacre.g:32099:1: rule__EnqueueExpression__QueueAssignment_4 : ( ruleExpression ) ;
    public final void rule__EnqueueExpression__QueueAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32103:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32104:2: ( ruleExpression )
            {
            // InternalFiacre.g:32104:2: ( ruleExpression )
            // InternalFiacre.g:32105:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnqueueExpressionAccess().getQueueExpressionParserRuleCall_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnqueueExpressionAccess().getQueueExpressionParserRuleCall_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnqueueExpression__QueueAssignment_4"


    // $ANTLR start "rule__AppendExpression__LeftAssignment_2"
    // InternalFiacre.g:32114:1: rule__AppendExpression__LeftAssignment_2 : ( ruleExpression ) ;
    public final void rule__AppendExpression__LeftAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32118:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32119:2: ( ruleExpression )
            {
            // InternalFiacre.g:32119:2: ( ruleExpression )
            // InternalFiacre.g:32120:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getLeftExpressionParserRuleCall_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getLeftExpressionParserRuleCall_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__LeftAssignment_2"


    // $ANTLR start "rule__AppendExpression__RightAssignment_4"
    // InternalFiacre.g:32129:1: rule__AppendExpression__RightAssignment_4 : ( ruleExpression ) ;
    public final void rule__AppendExpression__RightAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32133:1: ( ( ruleExpression ) )
            // InternalFiacre.g:32134:2: ( ruleExpression )
            {
            // InternalFiacre.g:32134:2: ( ruleExpression )
            // InternalFiacre.g:32135:3: ruleExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAppendExpressionAccess().getRightExpressionParserRuleCall_4_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAppendExpressionAccess().getRightExpressionParserRuleCall_4_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AppendExpression__RightAssignment_4"


    // $ANTLR start "rule__NaturalLiteral__ValueAssignment"
    // InternalFiacre.g:32144:1: rule__NaturalLiteral__ValueAssignment : ( RULE_INT ) ;
    public final void rule__NaturalLiteral__ValueAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32148:1: ( ( RULE_INT ) )
            // InternalFiacre.g:32149:2: ( RULE_INT )
            {
            // InternalFiacre.g:32149:2: ( RULE_INT )
            // InternalFiacre.g:32150:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLiteralAccess().getValueINTTerminalRuleCall_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLiteralAccess().getValueINTTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLiteral__ValueAssignment"


    // $ANTLR start "rule__NaturalLowerBound__LeftAssignment_0_0"
    // InternalFiacre.g:32159:1: rule__NaturalLowerBound__LeftAssignment_0_0 : ( ( '[' ) ) ;
    public final void rule__NaturalLowerBound__LeftAssignment_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32163:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32164:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32164:2: ( ( '[' ) )
            // InternalFiacre.g:32165:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            // InternalFiacre.g:32166:3: ( '[' )
            // InternalFiacre.g:32167:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__LeftAssignment_0_0"


    // $ANTLR start "rule__NaturalLowerBound__RightAssignment_0_1"
    // InternalFiacre.g:32178:1: rule__NaturalLowerBound__RightAssignment_0_1 : ( ( ']' ) ) ;
    public final void rule__NaturalLowerBound__RightAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32182:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32183:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32183:2: ( ( ']' ) )
            // InternalFiacre.g:32184:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            // InternalFiacre.g:32185:3: ( ']' )
            // InternalFiacre.g:32186:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__RightAssignment_0_1"


    // $ANTLR start "rule__NaturalLowerBound__ValueAssignment_1"
    // InternalFiacre.g:32197:1: rule__NaturalLowerBound__ValueAssignment_1 : ( RULE_INT ) ;
    public final void rule__NaturalLowerBound__ValueAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32201:1: ( ( RULE_INT ) )
            // InternalFiacre.g:32202:2: ( RULE_INT )
            {
            // InternalFiacre.g:32202:2: ( RULE_INT )
            // InternalFiacre.g:32203:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalLowerBoundAccess().getValueINTTerminalRuleCall_1_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalLowerBoundAccess().getValueINTTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalLowerBound__ValueAssignment_1"


    // $ANTLR start "rule__NaturalUpperBound__ValueAssignment_0"
    // InternalFiacre.g:32212:1: rule__NaturalUpperBound__ValueAssignment_0 : ( RULE_INT ) ;
    public final void rule__NaturalUpperBound__ValueAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32216:1: ( ( RULE_INT ) )
            // InternalFiacre.g:32217:2: ( RULE_INT )
            {
            // InternalFiacre.g:32217:2: ( RULE_INT )
            // InternalFiacre.g:32218:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getValueINTTerminalRuleCall_0_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getValueINTTerminalRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__ValueAssignment_0"


    // $ANTLR start "rule__NaturalUpperBound__LeftAssignment_1_0"
    // InternalFiacre.g:32227:1: rule__NaturalUpperBound__LeftAssignment_1_0 : ( ( '[' ) ) ;
    public final void rule__NaturalUpperBound__LeftAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32231:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32232:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32232:2: ( ( '[' ) )
            // InternalFiacre.g:32233:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            // InternalFiacre.g:32234:3: ( '[' )
            // InternalFiacre.g:32235:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__LeftAssignment_1_0"


    // $ANTLR start "rule__NaturalUpperBound__RightAssignment_1_1"
    // InternalFiacre.g:32246:1: rule__NaturalUpperBound__RightAssignment_1_1 : ( ( ']' ) ) ;
    public final void rule__NaturalUpperBound__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32250:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32251:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32251:2: ( ( ']' ) )
            // InternalFiacre.g:32252:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            // InternalFiacre.g:32253:3: ( ']' )
            // InternalFiacre.g:32254:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalUpperBound__RightAssignment_1_1"


    // $ANTLR start "rule__DecimalLowerBound__LeftAssignment_0_0"
    // InternalFiacre.g:32265:1: rule__DecimalLowerBound__LeftAssignment_0_0 : ( ( '[' ) ) ;
    public final void rule__DecimalLowerBound__LeftAssignment_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32269:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32270:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32270:2: ( ( '[' ) )
            // InternalFiacre.g:32271:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            // InternalFiacre.g:32272:3: ( '[' )
            // InternalFiacre.g:32273:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__LeftAssignment_0_0"


    // $ANTLR start "rule__DecimalLowerBound__RightAssignment_0_1"
    // InternalFiacre.g:32284:1: rule__DecimalLowerBound__RightAssignment_0_1 : ( ( ']' ) ) ;
    public final void rule__DecimalLowerBound__RightAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32288:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32289:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32289:2: ( ( ']' ) )
            // InternalFiacre.g:32290:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            // InternalFiacre.g:32291:3: ( ']' )
            // InternalFiacre.g:32292:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__RightAssignment_0_1"


    // $ANTLR start "rule__DecimalLowerBound__ValueAssignment_1"
    // InternalFiacre.g:32303:1: rule__DecimalLowerBound__ValueAssignment_1 : ( RULE_FLT ) ;
    public final void rule__DecimalLowerBound__ValueAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32307:1: ( ( RULE_FLT ) )
            // InternalFiacre.g:32308:2: ( RULE_FLT )
            {
            // InternalFiacre.g:32308:2: ( RULE_FLT )
            // InternalFiacre.g:32309:3: RULE_FLT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalLowerBoundAccess().getValueFLTTerminalRuleCall_1_0()); 
            }
            match(input,RULE_FLT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalLowerBoundAccess().getValueFLTTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalLowerBound__ValueAssignment_1"


    // $ANTLR start "rule__DecimalUpperBound__ValueAssignment_0"
    // InternalFiacre.g:32318:1: rule__DecimalUpperBound__ValueAssignment_0 : ( RULE_FLT ) ;
    public final void rule__DecimalUpperBound__ValueAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32322:1: ( ( RULE_FLT ) )
            // InternalFiacre.g:32323:2: ( RULE_FLT )
            {
            // InternalFiacre.g:32323:2: ( RULE_FLT )
            // InternalFiacre.g:32324:3: RULE_FLT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getValueFLTTerminalRuleCall_0_0()); 
            }
            match(input,RULE_FLT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getValueFLTTerminalRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__ValueAssignment_0"


    // $ANTLR start "rule__DecimalUpperBound__LeftAssignment_1_0"
    // InternalFiacre.g:32333:1: rule__DecimalUpperBound__LeftAssignment_1_0 : ( ( '[' ) ) ;
    public final void rule__DecimalUpperBound__LeftAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32337:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32338:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32338:2: ( ( '[' ) )
            // InternalFiacre.g:32339:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            // InternalFiacre.g:32340:3: ( '[' )
            // InternalFiacre.g:32341:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__LeftAssignment_1_0"


    // $ANTLR start "rule__DecimalUpperBound__RightAssignment_1_1"
    // InternalFiacre.g:32352:1: rule__DecimalUpperBound__RightAssignment_1_1 : ( ( ']' ) ) ;
    public final void rule__DecimalUpperBound__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32356:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32357:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32357:2: ( ( ']' ) )
            // InternalFiacre.g:32358:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            // InternalFiacre.g:32359:3: ( ']' )
            // InternalFiacre.g:32360:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getDecimalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getDecimalUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__DecimalUpperBound__RightAssignment_1_1"


    // $ANTLR start "rule__VariableLowerBound__LeftAssignment_0_0"
    // InternalFiacre.g:32371:1: rule__VariableLowerBound__LeftAssignment_0_0 : ( ( '[' ) ) ;
    public final void rule__VariableLowerBound__LeftAssignment_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32375:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32376:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32376:2: ( ( '[' ) )
            // InternalFiacre.g:32377:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            // InternalFiacre.g:32378:3: ( '[' )
            // InternalFiacre.g:32379:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getLeftLeftSquareBracketKeyword_0_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__LeftAssignment_0_0"


    // $ANTLR start "rule__VariableLowerBound__RightAssignment_0_1"
    // InternalFiacre.g:32390:1: rule__VariableLowerBound__RightAssignment_0_1 : ( ( ']' ) ) ;
    public final void rule__VariableLowerBound__RightAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32394:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32395:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32395:2: ( ( ']' ) )
            // InternalFiacre.g:32396:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            // InternalFiacre.g:32397:3: ( ']' )
            // InternalFiacre.g:32398:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getRightRightSquareBracketKeyword_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__RightAssignment_0_1"


    // $ANTLR start "rule__VariableLowerBound__VariableAssignment_1"
    // InternalFiacre.g:32409:1: rule__VariableLowerBound__VariableAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__VariableLowerBound__VariableAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32413:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:32414:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:32414:2: ( ( RULE_ID ) )
            // InternalFiacre.g:32415:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getVariableBoundDeclarationUseCrossReference_1_0()); 
            }
            // InternalFiacre.g:32416:3: ( RULE_ID )
            // InternalFiacre.g:32417:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableLowerBoundAccess().getVariableBoundDeclarationUseIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getVariableBoundDeclarationUseIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableLowerBoundAccess().getVariableBoundDeclarationUseCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableLowerBound__VariableAssignment_1"


    // $ANTLR start "rule__VariableUpperBound__VariableAssignment_0"
    // InternalFiacre.g:32428:1: rule__VariableUpperBound__VariableAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__VariableUpperBound__VariableAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32432:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:32433:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:32433:2: ( ( RULE_ID ) )
            // InternalFiacre.g:32434:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getVariableBoundDeclarationUseCrossReference_0_0()); 
            }
            // InternalFiacre.g:32435:3: ( RULE_ID )
            // InternalFiacre.g:32436:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getVariableBoundDeclarationUseIDTerminalRuleCall_0_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getVariableBoundDeclarationUseIDTerminalRuleCall_0_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getVariableBoundDeclarationUseCrossReference_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__VariableAssignment_0"


    // $ANTLR start "rule__VariableUpperBound__LeftAssignment_1_0"
    // InternalFiacre.g:32447:1: rule__VariableUpperBound__LeftAssignment_1_0 : ( ( '[' ) ) ;
    public final void rule__VariableUpperBound__LeftAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32451:1: ( ( ( '[' ) ) )
            // InternalFiacre.g:32452:2: ( ( '[' ) )
            {
            // InternalFiacre.g:32452:2: ( ( '[' ) )
            // InternalFiacre.g:32453:3: ( '[' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            // InternalFiacre.g:32454:3: ( '[' )
            // InternalFiacre.g:32455:4: '['
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }
            match(input,42,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getLeftLeftSquareBracketKeyword_1_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__LeftAssignment_1_0"


    // $ANTLR start "rule__VariableUpperBound__RightAssignment_1_1"
    // InternalFiacre.g:32466:1: rule__VariableUpperBound__RightAssignment_1_1 : ( ( ']' ) ) ;
    public final void rule__VariableUpperBound__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32470:1: ( ( ( ']' ) ) )
            // InternalFiacre.g:32471:2: ( ( ']' ) )
            {
            // InternalFiacre.g:32471:2: ( ( ']' ) )
            // InternalFiacre.g:32472:3: ( ']' )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            // InternalFiacre.g:32473:3: ( ']' )
            // InternalFiacre.g:32474:4: ']'
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getVariableUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }
            match(input,43,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getVariableUpperBoundAccess().getRightRightSquareBracketKeyword_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__VariableUpperBound__RightAssignment_1_1"


    // $ANTLR start "rule__Requirement__PropertyAssignment_1"
    // InternalFiacre.g:32485:1: rule__Requirement__PropertyAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__Requirement__PropertyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32489:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:32490:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:32490:2: ( ( RULE_ID ) )
            // InternalFiacre.g:32491:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getPropertyPropertyDeclarationCrossReference_1_0()); 
            }
            // InternalFiacre.g:32492:3: ( RULE_ID )
            // InternalFiacre.g:32493:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getPropertyPropertyDeclarationIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getPropertyPropertyDeclarationIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getPropertyPropertyDeclarationCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__PropertyAssignment_1"


    // $ANTLR start "rule__Requirement__PositiveAssignment_2_1"
    // InternalFiacre.g:32504:1: rule__Requirement__PositiveAssignment_2_1 : ( RULE_STRING ) ;
    public final void rule__Requirement__PositiveAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32508:1: ( ( RULE_STRING ) )
            // InternalFiacre.g:32509:2: ( RULE_STRING )
            {
            // InternalFiacre.g:32509:2: ( RULE_STRING )
            // InternalFiacre.g:32510:3: RULE_STRING
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getPositiveSTRINGTerminalRuleCall_2_1_0()); 
            }
            match(input,RULE_STRING,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getPositiveSTRINGTerminalRuleCall_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__PositiveAssignment_2_1"


    // $ANTLR start "rule__Requirement__NegativeAssignment_3_1"
    // InternalFiacre.g:32519:1: rule__Requirement__NegativeAssignment_3_1 : ( RULE_STRING ) ;
    public final void rule__Requirement__NegativeAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32523:1: ( ( RULE_STRING ) )
            // InternalFiacre.g:32524:2: ( RULE_STRING )
            {
            // InternalFiacre.g:32524:2: ( RULE_STRING )
            // InternalFiacre.g:32525:3: RULE_STRING
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getRequirementAccess().getNegativeSTRINGTerminalRuleCall_3_1_0()); 
            }
            match(input,RULE_STRING,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getRequirementAccess().getNegativeSTRINGTerminalRuleCall_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Requirement__NegativeAssignment_3_1"


    // $ANTLR start "rule__PropertyDeclaration__NameAssignment_1"
    // InternalFiacre.g:32534:1: rule__PropertyDeclaration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__PropertyDeclaration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32538:1: ( ( RULE_ID ) )
            // InternalFiacre.g:32539:2: ( RULE_ID )
            {
            // InternalFiacre.g:32539:2: ( RULE_ID )
            // InternalFiacre.g:32540:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__NameAssignment_1"


    // $ANTLR start "rule__PropertyDeclaration__PropertyAssignment_3"
    // InternalFiacre.g:32549:1: rule__PropertyDeclaration__PropertyAssignment_3 : ( ruleProperty ) ;
    public final void rule__PropertyDeclaration__PropertyAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32553:1: ( ( ruleProperty ) )
            // InternalFiacre.g:32554:2: ( ruleProperty )
            {
            // InternalFiacre.g:32554:2: ( ruleProperty )
            // InternalFiacre.g:32555:3: ruleProperty
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDeclarationAccess().getPropertyPropertyParserRuleCall_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDeclarationAccess().getPropertyPropertyParserRuleCall_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDeclaration__PropertyAssignment_3"


    // $ANTLR start "rule__QuantifiedProperty__VariableAssignment_0_1"
    // InternalFiacre.g:32564:1: rule__QuantifiedProperty__VariableAssignment_0_1 : ( ruleVariableDeclaration ) ;
    public final void rule__QuantifiedProperty__VariableAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32568:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:32569:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:32569:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:32570:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getVariableVariableDeclarationParserRuleCall_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getVariableVariableDeclarationParserRuleCall_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__VariableAssignment_0_1"


    // $ANTLR start "rule__QuantifiedProperty__TypeAssignment_0_3"
    // InternalFiacre.g:32579:1: rule__QuantifiedProperty__TypeAssignment_0_3 : ( ruleRangeType ) ;
    public final void rule__QuantifiedProperty__TypeAssignment_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32583:1: ( ( ruleRangeType ) )
            // InternalFiacre.g:32584:2: ( ruleRangeType )
            {
            // InternalFiacre.g:32584:2: ( ruleRangeType )
            // InternalFiacre.g:32585:3: ruleRangeType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getTypeRangeTypeParserRuleCall_0_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRangeType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getTypeRangeTypeParserRuleCall_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__TypeAssignment_0_3"


    // $ANTLR start "rule__QuantifiedProperty__ChildAssignment_0_5"
    // InternalFiacre.g:32594:1: rule__QuantifiedProperty__ChildAssignment_0_5 : ( ruleQuantifiedProperty ) ;
    public final void rule__QuantifiedProperty__ChildAssignment_0_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32598:1: ( ( ruleQuantifiedProperty ) )
            // InternalFiacre.g:32599:2: ( ruleQuantifiedProperty )
            {
            // InternalFiacre.g:32599:2: ( ruleQuantifiedProperty )
            // InternalFiacre.g:32600:3: ruleQuantifiedProperty
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQuantifiedPropertyAccess().getChildQuantifiedPropertyParserRuleCall_0_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQuantifiedProperty();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getQuantifiedPropertyAccess().getChildQuantifiedPropertyParserRuleCall_0_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__QuantifiedProperty__ChildAssignment_0_5"


    // $ANTLR start "rule__PropertyDisjunction__RightAssignment_1_2"
    // InternalFiacre.g:32609:1: rule__PropertyDisjunction__RightAssignment_1_2 : ( rulePropertyImplication ) ;
    public final void rule__PropertyDisjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32613:1: ( ( rulePropertyImplication ) )
            // InternalFiacre.g:32614:2: ( rulePropertyImplication )
            {
            // InternalFiacre.g:32614:2: ( rulePropertyImplication )
            // InternalFiacre.g:32615:3: rulePropertyImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyDisjunctionAccess().getRightPropertyImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyDisjunctionAccess().getRightPropertyImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyDisjunction__RightAssignment_1_2"


    // $ANTLR start "rule__PropertyImplication__RightAssignment_1_2"
    // InternalFiacre.g:32624:1: rule__PropertyImplication__RightAssignment_1_2 : ( rulePropertyImplication ) ;
    public final void rule__PropertyImplication__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32628:1: ( ( rulePropertyImplication ) )
            // InternalFiacre.g:32629:2: ( rulePropertyImplication )
            {
            // InternalFiacre.g:32629:2: ( rulePropertyImplication )
            // InternalFiacre.g:32630:3: rulePropertyImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyImplicationAccess().getRightPropertyImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyImplicationAccess().getRightPropertyImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyImplication__RightAssignment_1_2"


    // $ANTLR start "rule__PropertyConjunction__RightAssignment_1_2"
    // InternalFiacre.g:32639:1: rule__PropertyConjunction__RightAssignment_1_2 : ( rulePropertyNegation ) ;
    public final void rule__PropertyConjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32643:1: ( ( rulePropertyNegation ) )
            // InternalFiacre.g:32644:2: ( rulePropertyNegation )
            {
            // InternalFiacre.g:32644:2: ( rulePropertyNegation )
            // InternalFiacre.g:32645:3: rulePropertyNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyConjunctionAccess().getRightPropertyNegationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyConjunctionAccess().getRightPropertyNegationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyConjunction__RightAssignment_1_2"


    // $ANTLR start "rule__PropertyNegation__ChildAssignment_0_2"
    // InternalFiacre.g:32654:1: rule__PropertyNegation__ChildAssignment_0_2 : ( rulePropertyNegation ) ;
    public final void rule__PropertyNegation__ChildAssignment_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32658:1: ( ( rulePropertyNegation ) )
            // InternalFiacre.g:32659:2: ( rulePropertyNegation )
            {
            // InternalFiacre.g:32659:2: ( rulePropertyNegation )
            // InternalFiacre.g:32660:3: rulePropertyNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPropertyNegationAccess().getChildPropertyNegationParserRuleCall_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePropertyNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPropertyNegationAccess().getChildPropertyNegationParserRuleCall_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PropertyNegation__ChildAssignment_0_2"


    // $ANTLR start "rule__LTLPattern__PropertyAssignment_1"
    // InternalFiacre.g:32669:1: rule__LTLPattern__PropertyAssignment_1 : ( ruleLTLUnary ) ;
    public final void rule__LTLPattern__PropertyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32673:1: ( ( ruleLTLUnary ) )
            // InternalFiacre.g:32674:2: ( ruleLTLUnary )
            {
            // InternalFiacre.g:32674:2: ( ruleLTLUnary )
            // InternalFiacre.g:32675:3: ruleLTLUnary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLPatternAccess().getPropertyLTLUnaryParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLPatternAccess().getPropertyLTLUnaryParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLPattern__PropertyAssignment_1"


    // $ANTLR start "rule__InfinitelyOftenPattern__SubjectAssignment_1"
    // InternalFiacre.g:32684:1: rule__InfinitelyOftenPattern__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__InfinitelyOftenPattern__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32688:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32689:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32689:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32690:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getInfinitelyOftenPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getInfinitelyOftenPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InfinitelyOftenPattern__SubjectAssignment_1"


    // $ANTLR start "rule__MortalPattern__SubjectAssignment_1"
    // InternalFiacre.g:32699:1: rule__MortalPattern__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__MortalPattern__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32703:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32704:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32704:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32705:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getMortalPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getMortalPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__MortalPattern__SubjectAssignment_1"


    // $ANTLR start "rule__PresencePattern__SubjectAssignment_1"
    // InternalFiacre.g:32714:1: rule__PresencePattern__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32718:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32719:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32719:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32720:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__SubjectAssignment_1"


    // $ANTLR start "rule__PresencePattern__LastingAssignment_2_0_1"
    // InternalFiacre.g:32729:1: rule__PresencePattern__LastingAssignment_2_0_1 : ( RULE_INT ) ;
    public final void rule__PresencePattern__LastingAssignment_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32733:1: ( ( RULE_INT ) )
            // InternalFiacre.g:32734:2: ( RULE_INT )
            {
            // InternalFiacre.g:32734:2: ( RULE_INT )
            // InternalFiacre.g:32735:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLastingINTTerminalRuleCall_2_0_1_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLastingINTTerminalRuleCall_2_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__LastingAssignment_2_0_1"


    // $ANTLR start "rule__PresencePattern__AfterAssignment_2_1_0_1"
    // InternalFiacre.g:32744:1: rule__PresencePattern__AfterAssignment_2_1_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__AfterAssignment_2_1_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32748:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32749:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32749:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32750:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getAfterAtomicObservableParserRuleCall_2_1_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getAfterAtomicObservableParserRuleCall_2_1_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__AfterAssignment_2_1_0_1"


    // $ANTLR start "rule__PresencePattern__LowerAssignment_2_1_1_0_1"
    // InternalFiacre.g:32759:1: rule__PresencePattern__LowerAssignment_2_1_1_0_1 : ( ruleLowerBound ) ;
    public final void rule__PresencePattern__LowerAssignment_2_1_1_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32763:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:32764:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:32764:2: ( ruleLowerBound )
            // InternalFiacre.g:32765:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLowerLowerBoundParserRuleCall_2_1_1_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLowerLowerBoundParserRuleCall_2_1_1_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__LowerAssignment_2_1_1_0_1"


    // $ANTLR start "rule__PresencePattern__UpperAssignment_2_1_1_0_3"
    // InternalFiacre.g:32774:1: rule__PresencePattern__UpperAssignment_2_1_1_0_3 : ( ruleUpperBound ) ;
    public final void rule__PresencePattern__UpperAssignment_2_1_1_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32778:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:32779:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:32779:2: ( ruleUpperBound )
            // InternalFiacre.g:32780:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUpperUpperBoundParserRuleCall_2_1_1_0_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUpperUpperBoundParserRuleCall_2_1_1_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__UpperAssignment_2_1_1_0_3"


    // $ANTLR start "rule__PresencePattern__UntilAssignment_2_1_1_1_1"
    // InternalFiacre.g:32789:1: rule__PresencePattern__UntilAssignment_2_1_1_1_1 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__UntilAssignment_2_1_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32793:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32794:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32794:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32795:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUntilAtomicObservableParserRuleCall_2_1_1_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUntilAtomicObservableParserRuleCall_2_1_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__UntilAssignment_2_1_1_1_1"


    // $ANTLR start "rule__PresencePattern__BeforeAssignment_2_2_0_1"
    // InternalFiacre.g:32804:1: rule__PresencePattern__BeforeAssignment_2_2_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__BeforeAssignment_2_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32808:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32809:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32809:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32810:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getBeforeAtomicObservableParserRuleCall_2_2_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getBeforeAtomicObservableParserRuleCall_2_2_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__BeforeAssignment_2_2_0_1"


    // $ANTLR start "rule__PresencePattern__LowerAssignment_2_2_1_1"
    // InternalFiacre.g:32819:1: rule__PresencePattern__LowerAssignment_2_2_1_1 : ( ruleLowerBound ) ;
    public final void rule__PresencePattern__LowerAssignment_2_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32823:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:32824:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:32824:2: ( ruleLowerBound )
            // InternalFiacre.g:32825:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getLowerLowerBoundParserRuleCall_2_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getLowerLowerBoundParserRuleCall_2_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__LowerAssignment_2_2_1_1"


    // $ANTLR start "rule__PresencePattern__UpperAssignment_2_2_1_3"
    // InternalFiacre.g:32834:1: rule__PresencePattern__UpperAssignment_2_2_1_3 : ( ruleUpperBound ) ;
    public final void rule__PresencePattern__UpperAssignment_2_2_1_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32838:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:32839:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:32839:2: ( ruleUpperBound )
            // InternalFiacre.g:32840:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getUpperUpperBoundParserRuleCall_2_2_1_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getUpperUpperBoundParserRuleCall_2_2_1_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__UpperAssignment_2_2_1_3"


    // $ANTLR start "rule__PresencePattern__MinAssignment_2_3_1"
    // InternalFiacre.g:32849:1: rule__PresencePattern__MinAssignment_2_3_1 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__MinAssignment_2_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32853:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32854:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32854:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32855:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getMinAtomicObservableParserRuleCall_2_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getMinAtomicObservableParserRuleCall_2_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__MinAssignment_2_3_1"


    // $ANTLR start "rule__PresencePattern__MaxAssignment_2_3_3"
    // InternalFiacre.g:32864:1: rule__PresencePattern__MaxAssignment_2_3_3 : ( ruleAtomicObservable ) ;
    public final void rule__PresencePattern__MaxAssignment_2_3_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32868:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32869:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32869:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32870:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPresencePatternAccess().getMaxAtomicObservableParserRuleCall_2_3_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPresencePatternAccess().getMaxAtomicObservableParserRuleCall_2_3_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PresencePattern__MaxAssignment_2_3_3"


    // $ANTLR start "rule__AbsencePattern__SubjectAssignment_1"
    // InternalFiacre.g:32879:1: rule__AbsencePattern__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32883:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32884:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32884:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32885:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__SubjectAssignment_1"


    // $ANTLR start "rule__AbsencePattern__AfterAssignment_2_0_0_1"
    // InternalFiacre.g:32894:1: rule__AbsencePattern__AfterAssignment_2_0_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__AfterAssignment_2_0_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32898:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32899:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32899:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32900:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getAfterAtomicObservableParserRuleCall_2_0_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getAfterAtomicObservableParserRuleCall_2_0_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__AfterAssignment_2_0_0_1"


    // $ANTLR start "rule__AbsencePattern__LowerAssignment_2_0_1_0_1"
    // InternalFiacre.g:32909:1: rule__AbsencePattern__LowerAssignment_2_0_1_0_1 : ( ruleLowerBound ) ;
    public final void rule__AbsencePattern__LowerAssignment_2_0_1_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32913:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:32914:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:32914:2: ( ruleLowerBound )
            // InternalFiacre.g:32915:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getLowerLowerBoundParserRuleCall_2_0_1_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getLowerLowerBoundParserRuleCall_2_0_1_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__LowerAssignment_2_0_1_0_1"


    // $ANTLR start "rule__AbsencePattern__UpperAssignment_2_0_1_0_3"
    // InternalFiacre.g:32924:1: rule__AbsencePattern__UpperAssignment_2_0_1_0_3 : ( ruleUpperBound ) ;
    public final void rule__AbsencePattern__UpperAssignment_2_0_1_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32928:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:32929:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:32929:2: ( ruleUpperBound )
            // InternalFiacre.g:32930:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUpperUpperBoundParserRuleCall_2_0_1_0_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUpperUpperBoundParserRuleCall_2_0_1_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__UpperAssignment_2_0_1_0_3"


    // $ANTLR start "rule__AbsencePattern__UntilAssignment_2_0_1_1_1"
    // InternalFiacre.g:32939:1: rule__AbsencePattern__UntilAssignment_2_0_1_1_1 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__UntilAssignment_2_0_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32943:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32944:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32944:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32945:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUntilAtomicObservableParserRuleCall_2_0_1_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUntilAtomicObservableParserRuleCall_2_0_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__UntilAssignment_2_0_1_1_1"


    // $ANTLR start "rule__AbsencePattern__BeforeAssignment_2_1_0_1"
    // InternalFiacre.g:32954:1: rule__AbsencePattern__BeforeAssignment_2_1_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__BeforeAssignment_2_1_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32958:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:32959:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:32959:2: ( ruleAtomicObservable )
            // InternalFiacre.g:32960:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getBeforeAtomicObservableParserRuleCall_2_1_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getBeforeAtomicObservableParserRuleCall_2_1_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__BeforeAssignment_2_1_0_1"


    // $ANTLR start "rule__AbsencePattern__LowerAssignment_2_1_1_1"
    // InternalFiacre.g:32969:1: rule__AbsencePattern__LowerAssignment_2_1_1_1 : ( ruleLowerBound ) ;
    public final void rule__AbsencePattern__LowerAssignment_2_1_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32973:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:32974:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:32974:2: ( ruleLowerBound )
            // InternalFiacre.g:32975:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getLowerLowerBoundParserRuleCall_2_1_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getLowerLowerBoundParserRuleCall_2_1_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__LowerAssignment_2_1_1_1"


    // $ANTLR start "rule__AbsencePattern__UpperAssignment_2_1_1_3"
    // InternalFiacre.g:32984:1: rule__AbsencePattern__UpperAssignment_2_1_1_3 : ( ruleUpperBound ) ;
    public final void rule__AbsencePattern__UpperAssignment_2_1_1_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:32988:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:32989:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:32989:2: ( ruleUpperBound )
            // InternalFiacre.g:32990:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getUpperUpperBoundParserRuleCall_2_1_1_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getUpperUpperBoundParserRuleCall_2_1_1_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__UpperAssignment_2_1_1_3"


    // $ANTLR start "rule__AbsencePattern__MinAssignment_2_2_1"
    // InternalFiacre.g:32999:1: rule__AbsencePattern__MinAssignment_2_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__MinAssignment_2_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33003:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33004:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33004:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33005:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getMinAtomicObservableParserRuleCall_2_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getMinAtomicObservableParserRuleCall_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__MinAssignment_2_2_1"


    // $ANTLR start "rule__AbsencePattern__MaxAssignment_2_2_3"
    // InternalFiacre.g:33014:1: rule__AbsencePattern__MaxAssignment_2_2_3 : ( ruleAtomicObservable ) ;
    public final void rule__AbsencePattern__MaxAssignment_2_2_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33018:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33019:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33019:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33020:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAbsencePatternAccess().getMaxAtomicObservableParserRuleCall_2_2_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAbsencePatternAccess().getMaxAtomicObservableParserRuleCall_2_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AbsencePattern__MaxAssignment_2_2_3"


    // $ANTLR start "rule__AlwaysPattern__SubjectAssignment_1"
    // InternalFiacre.g:33029:1: rule__AlwaysPattern__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33033:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33034:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33034:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33035:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__SubjectAssignment_1"


    // $ANTLR start "rule__AlwaysPattern__BeforeAssignment_2_0_1"
    // InternalFiacre.g:33044:1: rule__AlwaysPattern__BeforeAssignment_2_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__BeforeAssignment_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33048:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33049:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33049:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33050:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getBeforeAtomicObservableParserRuleCall_2_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getBeforeAtomicObservableParserRuleCall_2_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__BeforeAssignment_2_0_1"


    // $ANTLR start "rule__AlwaysPattern__AfterAssignment_2_1_1"
    // InternalFiacre.g:33059:1: rule__AlwaysPattern__AfterAssignment_2_1_1 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__AfterAssignment_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33063:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33064:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33064:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33065:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getAfterAtomicObservableParserRuleCall_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getAfterAtomicObservableParserRuleCall_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__AfterAssignment_2_1_1"


    // $ANTLR start "rule__AlwaysPattern__UntilAssignment_2_1_2_1"
    // InternalFiacre.g:33074:1: rule__AlwaysPattern__UntilAssignment_2_1_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__UntilAssignment_2_1_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33078:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33079:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33079:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33080:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getUntilAtomicObservableParserRuleCall_2_1_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getUntilAtomicObservableParserRuleCall_2_1_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__UntilAssignment_2_1_2_1"


    // $ANTLR start "rule__AlwaysPattern__MinAssignment_2_2_1"
    // InternalFiacre.g:33089:1: rule__AlwaysPattern__MinAssignment_2_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__MinAssignment_2_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33093:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33094:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33094:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33095:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getMinAtomicObservableParserRuleCall_2_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getMinAtomicObservableParserRuleCall_2_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__MinAssignment_2_2_1"


    // $ANTLR start "rule__AlwaysPattern__MaxAssignment_2_2_3"
    // InternalFiacre.g:33104:1: rule__AlwaysPattern__MaxAssignment_2_2_3 : ( ruleAtomicObservable ) ;
    public final void rule__AlwaysPattern__MaxAssignment_2_2_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33108:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33109:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33109:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33110:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAlwaysPatternAccess().getMaxAtomicObservableParserRuleCall_2_2_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAlwaysPatternAccess().getMaxAtomicObservableParserRuleCall_2_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AlwaysPattern__MaxAssignment_2_2_3"


    // $ANTLR start "rule__SequencePattern__FollowerAssignment_1_0_2"
    // InternalFiacre.g:33119:1: rule__SequencePattern__FollowerAssignment_1_0_2 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__FollowerAssignment_1_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33123:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33124:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33124:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33125:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getFollowerAtomicObservableParserRuleCall_1_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getFollowerAtomicObservableParserRuleCall_1_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__FollowerAssignment_1_0_2"


    // $ANTLR start "rule__SequencePattern__BeforeAssignment_1_0_3_0_1"
    // InternalFiacre.g:33134:1: rule__SequencePattern__BeforeAssignment_1_0_3_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__BeforeAssignment_1_0_3_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33138:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33139:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33139:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33140:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeAtomicObservableParserRuleCall_1_0_3_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeAtomicObservableParserRuleCall_1_0_3_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__BeforeAssignment_1_0_3_0_1"


    // $ANTLR start "rule__SequencePattern__LowerAssignment_1_0_3_0_2_1"
    // InternalFiacre.g:33149:1: rule__SequencePattern__LowerAssignment_1_0_3_0_2_1 : ( ruleLowerBound ) ;
    public final void rule__SequencePattern__LowerAssignment_1_0_3_0_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33153:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:33154:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:33154:2: ( ruleLowerBound )
            // InternalFiacre.g:33155:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_0_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_0_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__LowerAssignment_1_0_3_0_2_1"


    // $ANTLR start "rule__SequencePattern__UpperAssignment_1_0_3_0_2_3"
    // InternalFiacre.g:33164:1: rule__SequencePattern__UpperAssignment_1_0_3_0_2_3 : ( ruleUpperBound ) ;
    public final void rule__SequencePattern__UpperAssignment_1_0_3_0_2_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33168:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:33169:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:33169:2: ( ruleUpperBound )
            // InternalFiacre.g:33170:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_0_2_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_0_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__UpperAssignment_1_0_3_0_2_3"


    // $ANTLR start "rule__SequencePattern__LowerAssignment_1_0_3_1_1"
    // InternalFiacre.g:33179:1: rule__SequencePattern__LowerAssignment_1_0_3_1_1 : ( ruleLowerBound ) ;
    public final void rule__SequencePattern__LowerAssignment_1_0_3_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33183:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:33184:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:33184:2: ( ruleLowerBound )
            // InternalFiacre.g:33185:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__LowerAssignment_1_0_3_1_1"


    // $ANTLR start "rule__SequencePattern__UpperAssignment_1_0_3_1_3"
    // InternalFiacre.g:33194:1: rule__SequencePattern__UpperAssignment_1_0_3_1_3 : ( ruleUpperBound ) ;
    public final void rule__SequencePattern__UpperAssignment_1_0_3_1_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33198:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:33199:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:33199:2: ( ruleUpperBound )
            // InternalFiacre.g:33200:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_1_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_1_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__UpperAssignment_1_0_3_1_3"


    // $ANTLR start "rule__SequencePattern__AfterAssignment_1_0_3_2_1"
    // InternalFiacre.g:33209:1: rule__SequencePattern__AfterAssignment_1_0_3_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__AfterAssignment_1_0_3_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33213:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33214:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33214:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33215:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterAtomicObservableParserRuleCall_1_0_3_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterAtomicObservableParserRuleCall_1_0_3_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__AfterAssignment_1_0_3_2_1"


    // $ANTLR start "rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1"
    // InternalFiacre.g:33224:1: rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1 : ( ruleLowerBound ) ;
    public final void rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33228:1: ( ( ruleLowerBound ) )
            // InternalFiacre.g:33229:2: ( ruleLowerBound )
            {
            // InternalFiacre.g:33229:2: ( ruleLowerBound )
            // InternalFiacre.g:33230:3: ruleLowerBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_2_2_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getLowerLowerBoundParserRuleCall_1_0_3_2_2_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__LowerAssignment_1_0_3_2_2_0_1"


    // $ANTLR start "rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3"
    // InternalFiacre.g:33239:1: rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3 : ( ruleUpperBound ) ;
    public final void rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33243:1: ( ( ruleUpperBound ) )
            // InternalFiacre.g:33244:2: ( ruleUpperBound )
            {
            // InternalFiacre.g:33244:2: ( ruleUpperBound )
            // InternalFiacre.g:33245:3: ruleUpperBound
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_2_2_0_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUpperUpperBoundParserRuleCall_1_0_3_2_2_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__UpperAssignment_1_0_3_2_2_0_3"


    // $ANTLR start "rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1"
    // InternalFiacre.g:33254:1: rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33258:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33259:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33259:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33260:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilAtomicObservableParserRuleCall_1_0_3_2_2_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilAtomicObservableParserRuleCall_1_0_3_2_2_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__UntilAssignment_1_0_3_2_2_1_1"


    // $ANTLR start "rule__SequencePattern__MinAssignment_1_0_3_3_1"
    // InternalFiacre.g:33269:1: rule__SequencePattern__MinAssignment_1_0_3_3_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__MinAssignment_1_0_3_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33273:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33274:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33274:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33275:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMinAtomicObservableParserRuleCall_1_0_3_3_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMinAtomicObservableParserRuleCall_1_0_3_3_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__MinAssignment_1_0_3_3_1"


    // $ANTLR start "rule__SequencePattern__MaxAssignment_1_0_3_3_3"
    // InternalFiacre.g:33284:1: rule__SequencePattern__MaxAssignment_1_0_3_3_3 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__MaxAssignment_1_0_3_3_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33288:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33289:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33289:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33290:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMaxAtomicObservableParserRuleCall_1_0_3_3_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMaxAtomicObservableParserRuleCall_1_0_3_3_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__MaxAssignment_1_0_3_3_3"


    // $ANTLR start "rule__SequencePattern__FollowerAssignment_1_1_2"
    // InternalFiacre.g:33299:1: rule__SequencePattern__FollowerAssignment_1_1_2 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__FollowerAssignment_1_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33303:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33304:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33304:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33305:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getFollowerAtomicObservableParserRuleCall_1_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getFollowerAtomicObservableParserRuleCall_1_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__FollowerAssignment_1_1_2"


    // $ANTLR start "rule__SequencePattern__BeforeAssignment_1_1_3_0_1"
    // InternalFiacre.g:33314:1: rule__SequencePattern__BeforeAssignment_1_1_3_0_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__BeforeAssignment_1_1_3_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33318:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33319:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33319:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33320:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getBeforeAtomicObservableParserRuleCall_1_1_3_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getBeforeAtomicObservableParserRuleCall_1_1_3_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__BeforeAssignment_1_1_3_0_1"


    // $ANTLR start "rule__SequencePattern__AfterAssignment_1_1_3_1_1"
    // InternalFiacre.g:33329:1: rule__SequencePattern__AfterAssignment_1_1_3_1_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__AfterAssignment_1_1_3_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33333:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33334:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33334:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33335:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getAfterAtomicObservableParserRuleCall_1_1_3_1_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getAfterAtomicObservableParserRuleCall_1_1_3_1_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__AfterAssignment_1_1_3_1_1"


    // $ANTLR start "rule__SequencePattern__UntilAssignment_1_1_3_1_2_1"
    // InternalFiacre.g:33344:1: rule__SequencePattern__UntilAssignment_1_1_3_1_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__UntilAssignment_1_1_3_1_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33348:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33349:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33349:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33350:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getUntilAtomicObservableParserRuleCall_1_1_3_1_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getUntilAtomicObservableParserRuleCall_1_1_3_1_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__UntilAssignment_1_1_3_1_2_1"


    // $ANTLR start "rule__SequencePattern__MinAssignment_1_1_3_2_1"
    // InternalFiacre.g:33359:1: rule__SequencePattern__MinAssignment_1_1_3_2_1 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__MinAssignment_1_1_3_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33363:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33364:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33364:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33365:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMinAtomicObservableParserRuleCall_1_1_3_2_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMinAtomicObservableParserRuleCall_1_1_3_2_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__MinAssignment_1_1_3_2_1"


    // $ANTLR start "rule__SequencePattern__MaxAssignment_1_1_3_2_3"
    // InternalFiacre.g:33374:1: rule__SequencePattern__MaxAssignment_1_1_3_2_3 : ( ruleAtomicObservable ) ;
    public final void rule__SequencePattern__MaxAssignment_1_1_3_2_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33378:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33379:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33379:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33380:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getSequencePatternAccess().getMaxAtomicObservableParserRuleCall_1_1_3_2_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getSequencePatternAccess().getMaxAtomicObservableParserRuleCall_1_1_3_2_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__SequencePattern__MaxAssignment_1_1_3_2_3"


    // $ANTLR start "rule__LTLQuantified__IndexAssignment_0_1"
    // InternalFiacre.g:33389:1: rule__LTLQuantified__IndexAssignment_0_1 : ( ruleVariableDeclaration ) ;
    public final void rule__LTLQuantified__IndexAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33393:1: ( ( ruleVariableDeclaration ) )
            // InternalFiacre.g:33394:2: ( ruleVariableDeclaration )
            {
            // InternalFiacre.g:33394:2: ( ruleVariableDeclaration )
            // InternalFiacre.g:33395:3: ruleVariableDeclaration
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getIndexVariableDeclarationParserRuleCall_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleVariableDeclaration();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getIndexVariableDeclarationParserRuleCall_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__IndexAssignment_0_1"


    // $ANTLR start "rule__LTLQuantified__TypeAssignment_0_3"
    // InternalFiacre.g:33404:1: rule__LTLQuantified__TypeAssignment_0_3 : ( ruleRangeType ) ;
    public final void rule__LTLQuantified__TypeAssignment_0_3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33408:1: ( ( ruleRangeType ) )
            // InternalFiacre.g:33409:2: ( ruleRangeType )
            {
            // InternalFiacre.g:33409:2: ( ruleRangeType )
            // InternalFiacre.g:33410:3: ruleRangeType
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getTypeRangeTypeParserRuleCall_0_3_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleRangeType();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getTypeRangeTypeParserRuleCall_0_3_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__TypeAssignment_0_3"


    // $ANTLR start "rule__LTLQuantified__ChildAssignment_0_5"
    // InternalFiacre.g:33419:1: rule__LTLQuantified__ChildAssignment_0_5 : ( ruleLTLQuantified ) ;
    public final void rule__LTLQuantified__ChildAssignment_0_5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33423:1: ( ( ruleLTLQuantified ) )
            // InternalFiacre.g:33424:2: ( ruleLTLQuantified )
            {
            // InternalFiacre.g:33424:2: ( ruleLTLQuantified )
            // InternalFiacre.g:33425:3: ruleLTLQuantified
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLQuantifiedAccess().getChildLTLQuantifiedParserRuleCall_0_5_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLQuantified();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLQuantifiedAccess().getChildLTLQuantifiedParserRuleCall_0_5_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLQuantified__ChildAssignment_0_5"


    // $ANTLR start "rule__LTLDisjunction__RightAssignment_1_2"
    // InternalFiacre.g:33434:1: rule__LTLDisjunction__RightAssignment_1_2 : ( ruleLTLImplication ) ;
    public final void rule__LTLDisjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33438:1: ( ( ruleLTLImplication ) )
            // InternalFiacre.g:33439:2: ( ruleLTLImplication )
            {
            // InternalFiacre.g:33439:2: ( ruleLTLImplication )
            // InternalFiacre.g:33440:3: ruleLTLImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLDisjunctionAccess().getRightLTLImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLDisjunctionAccess().getRightLTLImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLDisjunction__RightAssignment_1_2"


    // $ANTLR start "rule__LTLImplication__RightAssignment_1_2"
    // InternalFiacre.g:33449:1: rule__LTLImplication__RightAssignment_1_2 : ( ruleLTLImplication ) ;
    public final void rule__LTLImplication__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33453:1: ( ( ruleLTLImplication ) )
            // InternalFiacre.g:33454:2: ( ruleLTLImplication )
            {
            // InternalFiacre.g:33454:2: ( ruleLTLImplication )
            // InternalFiacre.g:33455:3: ruleLTLImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLImplicationAccess().getRightLTLImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLImplicationAccess().getRightLTLImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLImplication__RightAssignment_1_2"


    // $ANTLR start "rule__LTLConjunction__RightAssignment_1_2"
    // InternalFiacre.g:33464:1: rule__LTLConjunction__RightAssignment_1_2 : ( ruleLTLBinary ) ;
    public final void rule__LTLConjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33468:1: ( ( ruleLTLBinary ) )
            // InternalFiacre.g:33469:2: ( ruleLTLBinary )
            {
            // InternalFiacre.g:33469:2: ( ruleLTLBinary )
            // InternalFiacre.g:33470:3: ruleLTLBinary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLConjunctionAccess().getRightLTLBinaryParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLBinary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLConjunctionAccess().getRightLTLBinaryParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLConjunction__RightAssignment_1_2"


    // $ANTLR start "rule__LTLBinary__RightAssignment_1_0_2"
    // InternalFiacre.g:33479:1: rule__LTLBinary__RightAssignment_1_0_2 : ( ruleLTLUnary ) ;
    public final void rule__LTLBinary__RightAssignment_1_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33483:1: ( ( ruleLTLUnary ) )
            // InternalFiacre.g:33484:2: ( ruleLTLUnary )
            {
            // InternalFiacre.g:33484:2: ( ruleLTLUnary )
            // InternalFiacre.g:33485:3: ruleLTLUnary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getRightLTLUnaryParserRuleCall_1_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getRightLTLUnaryParserRuleCall_1_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__RightAssignment_1_0_2"


    // $ANTLR start "rule__LTLBinary__RightAssignment_1_1_2"
    // InternalFiacre.g:33494:1: rule__LTLBinary__RightAssignment_1_1_2 : ( ruleLTLUnary ) ;
    public final void rule__LTLBinary__RightAssignment_1_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33498:1: ( ( ruleLTLUnary ) )
            // InternalFiacre.g:33499:2: ( ruleLTLUnary )
            {
            // InternalFiacre.g:33499:2: ( ruleLTLUnary )
            // InternalFiacre.g:33500:3: ruleLTLUnary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLBinaryAccess().getRightLTLUnaryParserRuleCall_1_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLBinaryAccess().getRightLTLUnaryParserRuleCall_1_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLBinary__RightAssignment_1_1_2"


    // $ANTLR start "rule__LTLUnary__OperandAssignment_0_1"
    // InternalFiacre.g:33509:1: rule__LTLUnary__OperandAssignment_0_1 : ( ruleLTLUnary ) ;
    public final void rule__LTLUnary__OperandAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33513:1: ( ( ruleLTLUnary ) )
            // InternalFiacre.g:33514:2: ( ruleLTLUnary )
            {
            // InternalFiacre.g:33514:2: ( ruleLTLUnary )
            // InternalFiacre.g:33515:3: ruleLTLUnary
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLTLUnaryAccess().getOperandLTLUnaryParserRuleCall_0_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleLTLUnary();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLTLUnaryAccess().getOperandLTLUnaryParserRuleCall_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LTLUnary__OperandAssignment_0_1"


    // $ANTLR start "rule__AtomicLTL__DeclarationAssignment_0_1"
    // InternalFiacre.g:33524:1: rule__AtomicLTL__DeclarationAssignment_0_1 : ( ( RULE_ID ) ) ;
    public final void rule__AtomicLTL__DeclarationAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33528:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:33529:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:33529:2: ( ( RULE_ID ) )
            // InternalFiacre.g:33530:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getDeclarationPropertyDeclarationUseCrossReference_0_1_0()); 
            }
            // InternalFiacre.g:33531:3: ( RULE_ID )
            // InternalFiacre.g:33532:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getAtomicLTLAccess().getDeclarationPropertyDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getDeclarationPropertyDeclarationUseIDTerminalRuleCall_0_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getAtomicLTLAccess().getDeclarationPropertyDeclarationUseCrossReference_0_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__AtomicLTL__DeclarationAssignment_0_1"


    // $ANTLR start "rule__EnterStateEvent__SubjectAssignment_1"
    // InternalFiacre.g:33543:1: rule__EnterStateEvent__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__EnterStateEvent__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33547:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33548:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33548:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33549:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEnterStateEventAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEnterStateEventAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EnterStateEvent__SubjectAssignment_1"


    // $ANTLR start "rule__LeaveStateEvent__SubjectAssignment_1"
    // InternalFiacre.g:33558:1: rule__LeaveStateEvent__SubjectAssignment_1 : ( ruleAtomicObservable ) ;
    public final void rule__LeaveStateEvent__SubjectAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33562:1: ( ( ruleAtomicObservable ) )
            // InternalFiacre.g:33563:2: ( ruleAtomicObservable )
            {
            // InternalFiacre.g:33563:2: ( ruleAtomicObservable )
            // InternalFiacre.g:33564:3: ruleAtomicObservable
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getLeaveStateEventAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicObservable();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getLeaveStateEventAccess().getSubjectAtomicObservableParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LeaveStateEvent__SubjectAssignment_1"


    // $ANTLR start "rule__ObservableDisjunction__RightAssignment_1_2"
    // InternalFiacre.g:33573:1: rule__ObservableDisjunction__RightAssignment_1_2 : ( ruleObservableImplication ) ;
    public final void rule__ObservableDisjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33577:1: ( ( ruleObservableImplication ) )
            // InternalFiacre.g:33578:2: ( ruleObservableImplication )
            {
            // InternalFiacre.g:33578:2: ( ruleObservableImplication )
            // InternalFiacre.g:33579:3: ruleObservableImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableDisjunctionAccess().getRightObservableImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableDisjunctionAccess().getRightObservableImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableDisjunction__RightAssignment_1_2"


    // $ANTLR start "rule__ObservableImplication__RightAssignment_1_2"
    // InternalFiacre.g:33588:1: rule__ObservableImplication__RightAssignment_1_2 : ( ruleObservableImplication ) ;
    public final void rule__ObservableImplication__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33592:1: ( ( ruleObservableImplication ) )
            // InternalFiacre.g:33593:2: ( ruleObservableImplication )
            {
            // InternalFiacre.g:33593:2: ( ruleObservableImplication )
            // InternalFiacre.g:33594:3: ruleObservableImplication
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableImplicationAccess().getRightObservableImplicationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableImplication();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableImplicationAccess().getRightObservableImplicationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableImplication__RightAssignment_1_2"


    // $ANTLR start "rule__ObservableConjunction__RightAssignment_1_2"
    // InternalFiacre.g:33603:1: rule__ObservableConjunction__RightAssignment_1_2 : ( ruleObservableNegation ) ;
    public final void rule__ObservableConjunction__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33607:1: ( ( ruleObservableNegation ) )
            // InternalFiacre.g:33608:2: ( ruleObservableNegation )
            {
            // InternalFiacre.g:33608:2: ( ruleObservableNegation )
            // InternalFiacre.g:33609:3: ruleObservableNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableConjunctionAccess().getRightObservableNegationParserRuleCall_1_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableConjunctionAccess().getRightObservableNegationParserRuleCall_1_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableConjunction__RightAssignment_1_2"


    // $ANTLR start "rule__ObservableNegation__ChildAssignment_0_2"
    // InternalFiacre.g:33618:1: rule__ObservableNegation__ChildAssignment_0_2 : ( ruleObservableNegation ) ;
    public final void rule__ObservableNegation__ChildAssignment_0_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33622:1: ( ( ruleObservableNegation ) )
            // InternalFiacre.g:33623:2: ( ruleObservableNegation )
            {
            // InternalFiacre.g:33623:2: ( ruleObservableNegation )
            // InternalFiacre.g:33624:3: ruleObservableNegation
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getObservableNegationAccess().getChildObservableNegationParserRuleCall_0_2_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleObservableNegation();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getObservableNegationAccess().getChildObservableNegationParserRuleCall_0_2_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ObservableNegation__ChildAssignment_0_2"


    // $ANTLR start "rule__PathEvent__PathAssignment_0"
    // InternalFiacre.g:33633:1: rule__PathEvent__PathAssignment_0 : ( rulePath ) ;
    public final void rule__PathEvent__PathAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33637:1: ( ( rulePath ) )
            // InternalFiacre.g:33638:2: ( rulePath )
            {
            // InternalFiacre.g:33638:2: ( rulePath )
            // InternalFiacre.g:33639:3: rulePath
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventAccess().getPathPathParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePath();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventAccess().getPathPathParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__PathAssignment_0"


    // $ANTLR start "rule__PathEvent__ItemAssignment_1"
    // InternalFiacre.g:33648:1: rule__PathEvent__ItemAssignment_1 : ( ruleSubject ) ;
    public final void rule__PathEvent__ItemAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33652:1: ( ( ruleSubject ) )
            // InternalFiacre.g:33653:2: ( ruleSubject )
            {
            // InternalFiacre.g:33653:2: ( ruleSubject )
            // InternalFiacre.g:33654:3: ruleSubject
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathEventAccess().getItemSubjectParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleSubject();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathEventAccess().getItemSubjectParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEvent__ItemAssignment_1"


    // $ANTLR start "rule__Path__ItemsAssignment_0"
    // InternalFiacre.g:33663:1: rule__Path__ItemsAssignment_0 : ( rulePathItem ) ;
    public final void rule__Path__ItemsAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33667:1: ( ( rulePathItem ) )
            // InternalFiacre.g:33668:2: ( rulePathItem )
            {
            // InternalFiacre.g:33668:2: ( rulePathItem )
            // InternalFiacre.g:33669:3: rulePathItem
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getPathAccess().getItemsPathItemParserRuleCall_0_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            rulePathItem();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getPathAccess().getItemsPathItemParserRuleCall_0_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__ItemsAssignment_0"


    // $ANTLR start "rule__NaturalItem__ValueAssignment"
    // InternalFiacre.g:33678:1: rule__NaturalItem__ValueAssignment : ( RULE_INT ) ;
    public final void rule__NaturalItem__ValueAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33682:1: ( ( RULE_INT ) )
            // InternalFiacre.g:33683:2: ( RULE_INT )
            {
            // InternalFiacre.g:33683:2: ( RULE_INT )
            // InternalFiacre.g:33684:3: RULE_INT
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNaturalItemAccess().getValueINTTerminalRuleCall_0()); 
            }
            match(input,RULE_INT,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNaturalItemAccess().getValueINTTerminalRuleCall_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NaturalItem__ValueAssignment"


    // $ANTLR start "rule__NamedItem__DeclarationAssignment"
    // InternalFiacre.g:33693:1: rule__NamedItem__DeclarationAssignment : ( ( RULE_ID ) ) ;
    public final void rule__NamedItem__DeclarationAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33697:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:33698:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:33698:2: ( ( RULE_ID ) )
            // InternalFiacre.g:33699:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNamedItemAccess().getDeclarationPathDeclarationUseCrossReference_0()); 
            }
            // InternalFiacre.g:33700:3: ( RULE_ID )
            // InternalFiacre.g:33701:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getNamedItemAccess().getDeclarationPathDeclarationUseIDTerminalRuleCall_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getNamedItemAccess().getDeclarationPathDeclarationUseIDTerminalRuleCall_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getNamedItemAccess().getDeclarationPathDeclarationUseCrossReference_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__NamedItem__DeclarationAssignment"


    // $ANTLR start "rule__StateSubject__StateAssignment_1"
    // InternalFiacre.g:33712:1: rule__StateSubject__StateAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__StateSubject__StateAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33716:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:33717:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:33717:2: ( ( RULE_ID ) )
            // InternalFiacre.g:33718:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectAccess().getStateStateDeclarationCrossReference_1_0()); 
            }
            // InternalFiacre.g:33719:3: ( RULE_ID )
            // InternalFiacre.g:33720:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getStateSubjectAccess().getStateStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectAccess().getStateStateDeclarationIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getStateSubjectAccess().getStateStateDeclarationCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__StateSubject__StateAssignment_1"


    // $ANTLR start "rule__ValueSubject__ValueAssignment_1"
    // InternalFiacre.g:33731:1: rule__ValueSubject__ValueAssignment_1 : ( ruleAtomicExpression ) ;
    public final void rule__ValueSubject__ValueAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33735:1: ( ( ruleAtomicExpression ) )
            // InternalFiacre.g:33736:2: ( ruleAtomicExpression )
            {
            // InternalFiacre.g:33736:2: ( ruleAtomicExpression )
            // InternalFiacre.g:33737:3: ruleAtomicExpression
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getValueSubjectAccess().getValueAtomicExpressionParserRuleCall_1_0()); 
            }
            pushFollow(FollowSets000.FOLLOW_2);
            ruleAtomicExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getValueSubjectAccess().getValueAtomicExpressionParserRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ValueSubject__ValueAssignment_1"


    // $ANTLR start "rule__TagSubject__TagAssignment_1"
    // InternalFiacre.g:33746:1: rule__TagSubject__TagAssignment_1 : ( ( RULE_ID ) ) ;
    public final void rule__TagSubject__TagAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33750:1: ( ( ( RULE_ID ) ) )
            // InternalFiacre.g:33751:2: ( ( RULE_ID ) )
            {
            // InternalFiacre.g:33751:2: ( ( RULE_ID ) )
            // InternalFiacre.g:33752:3: ( RULE_ID )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectAccess().getTagTaggedStatementCrossReference_1_0()); 
            }
            // InternalFiacre.g:33753:3: ( RULE_ID )
            // InternalFiacre.g:33754:4: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getTagSubjectAccess().getTagTaggedStatementIDTerminalRuleCall_1_0_1()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectAccess().getTagTaggedStatementIDTerminalRuleCall_1_0_1()); 
            }

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getTagSubjectAccess().getTagTaggedStatementCrossReference_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TagSubject__TagAssignment_1"


    // $ANTLR start "rule__EventSubject__EventAssignment_1"
    // InternalFiacre.g:33765:1: rule__EventSubject__EventAssignment_1 : ( RULE_ID ) ;
    public final void rule__EventSubject__EventAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalFiacre.g:33769:1: ( ( RULE_ID ) )
            // InternalFiacre.g:33770:2: ( RULE_ID )
            {
            // InternalFiacre.g:33770:2: ( RULE_ID )
            // InternalFiacre.g:33771:3: RULE_ID
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getEventSubjectAccess().getEventIDTerminalRuleCall_1_0()); 
            }
            match(input,RULE_ID,FollowSets000.FOLLOW_2); if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getEventSubjectAccess().getEventIDTerminalRuleCall_1_0()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EventSubject__EventAssignment_1"

    // $ANTLR start synpred10_InternalFiacre
    public final void synpred10_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:3858:2: ( ( ( rule__ChannelType__Group_2_0__0 ) ) )
        // InternalFiacre.g:3858:2: ( ( rule__ChannelType__Group_2_0__0 ) )
        {
        // InternalFiacre.g:3858:2: ( ( rule__ChannelType__Group_2_0__0 ) )
        // InternalFiacre.g:3859:3: ( rule__ChannelType__Group_2_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getChannelTypeAccess().getGroup_2_0()); 
        }
        // InternalFiacre.g:3860:3: ( rule__ChannelType__Group_2_0__0 )
        // InternalFiacre.g:3860:4: rule__ChannelType__Group_2_0__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__ChannelType__Group_2_0__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred10_InternalFiacre

    // $ANTLR start synpred11_InternalFiacre
    public final void synpred11_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:3864:2: ( ( 'none' ) )
        // InternalFiacre.g:3864:2: ( 'none' )
        {
        // InternalFiacre.g:3864:2: ( 'none' )
        // InternalFiacre.g:3865:3: 'none'
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getChannelTypeAccess().getNoneKeyword_2_1()); 
        }
        match(input,12,FollowSets000.FOLLOW_2); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred11_InternalFiacre

    // $ANTLR start synpred15_InternalFiacre
    public final void synpred15_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:3933:2: ( ( ruleRangeType ) )
        // InternalFiacre.g:3933:2: ( ruleRangeType )
        {
        // InternalFiacre.g:3933:2: ( ruleRangeType )
        // InternalFiacre.g:3934:3: ruleRangeType
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getTypeAccess().getRangeTypeParserRuleCall_1()); 
        }
        pushFollow(FollowSets000.FOLLOW_2);
        ruleRangeType();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred15_InternalFiacre

    // $ANTLR start synpred35_InternalFiacre
    public final void synpred35_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4098:2: ( ( ( rule__PatternStatement__Group_1_0__0 ) ) )
        // InternalFiacre.g:4098:2: ( ( rule__PatternStatement__Group_1_0__0 ) )
        {
        // InternalFiacre.g:4098:2: ( ( rule__PatternStatement__Group_1_0__0 ) )
        // InternalFiacre.g:4099:3: ( rule__PatternStatement__Group_1_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getPatternStatementAccess().getGroup_1_0()); 
        }
        // InternalFiacre.g:4100:3: ( rule__PatternStatement__Group_1_0__0 )
        // InternalFiacre.g:4100:4: rule__PatternStatement__Group_1_0__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__PatternStatement__Group_1_0__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred35_InternalFiacre

    // $ANTLR start synpred36_InternalFiacre
    public final void synpred36_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4104:2: ( ( ( rule__PatternStatement__Group_1_1__0 ) ) )
        // InternalFiacre.g:4104:2: ( ( rule__PatternStatement__Group_1_1__0 ) )
        {
        // InternalFiacre.g:4104:2: ( ( rule__PatternStatement__Group_1_1__0 ) )
        // InternalFiacre.g:4105:3: ( rule__PatternStatement__Group_1_1__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getPatternStatementAccess().getGroup_1_1()); 
        }
        // InternalFiacre.g:4106:3: ( rule__PatternStatement__Group_1_1__0 )
        // InternalFiacre.g:4106:4: rule__PatternStatement__Group_1_1__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__PatternStatement__Group_1_1__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred36_InternalFiacre

    // $ANTLR start synpred37_InternalFiacre
    public final void synpred37_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4110:2: ( ( ( rule__PatternStatement__Group_1_2__0 ) ) )
        // InternalFiacre.g:4110:2: ( ( rule__PatternStatement__Group_1_2__0 ) )
        {
        // InternalFiacre.g:4110:2: ( ( rule__PatternStatement__Group_1_2__0 ) )
        // InternalFiacre.g:4111:3: ( rule__PatternStatement__Group_1_2__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getPatternStatementAccess().getGroup_1_2()); 
        }
        // InternalFiacre.g:4112:3: ( rule__PatternStatement__Group_1_2__0 )
        // InternalFiacre.g:4112:4: rule__PatternStatement__Group_1_2__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__PatternStatement__Group_1_2__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred37_InternalFiacre

    // $ANTLR start synpred38_InternalFiacre
    public final void synpred38_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4116:2: ( ( ( rule__PatternStatement__Group_1_3__0 ) ) )
        // InternalFiacre.g:4116:2: ( ( rule__PatternStatement__Group_1_3__0 ) )
        {
        // InternalFiacre.g:4116:2: ( ( rule__PatternStatement__Group_1_3__0 ) )
        // InternalFiacre.g:4117:3: ( rule__PatternStatement__Group_1_3__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getPatternStatementAccess().getGroup_1_3()); 
        }
        // InternalFiacre.g:4118:3: ( rule__PatternStatement__Group_1_3__0 )
        // InternalFiacre.g:4118:4: rule__PatternStatement__Group_1_3__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__PatternStatement__Group_1_3__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred38_InternalFiacre

    // $ANTLR start synpred47_InternalFiacre
    public final void synpred47_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4245:2: ( ( ruleCompositeBlock ) )
        // InternalFiacre.g:4245:2: ( ruleCompositeBlock )
        {
        // InternalFiacre.g:4245:2: ( ruleCompositeBlock )
        // InternalFiacre.g:4246:3: ruleCompositeBlock
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getBlockAccess().getCompositeBlockParserRuleCall_0()); 
        }
        pushFollow(FollowSets000.FOLLOW_2);
        ruleCompositeBlock();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred47_InternalFiacre

    // $ANTLR start synpred75_InternalFiacre
    public final void synpred75_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4563:2: ( ( ( rule__IdentifierExpression__Group_0__0 ) ) )
        // InternalFiacre.g:4563:2: ( ( rule__IdentifierExpression__Group_0__0 ) )
        {
        // InternalFiacre.g:4563:2: ( ( rule__IdentifierExpression__Group_0__0 ) )
        // InternalFiacre.g:4564:3: ( rule__IdentifierExpression__Group_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getIdentifierExpressionAccess().getGroup_0()); 
        }
        // InternalFiacre.g:4565:3: ( rule__IdentifierExpression__Group_0__0 )
        // InternalFiacre.g:4565:4: rule__IdentifierExpression__Group_0__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__IdentifierExpression__Group_0__0();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred75_InternalFiacre

    // $ANTLR start synpred93_InternalFiacre
    public final void synpred93_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:4896:2: ( ( rulePatternProperty ) )
        // InternalFiacre.g:4896:2: ( rulePatternProperty )
        {
        // InternalFiacre.g:4896:2: ( rulePatternProperty )
        // InternalFiacre.g:4897:3: rulePatternProperty
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getAtomicPropertyAccess().getPatternPropertyParserRuleCall_0()); 
        }
        pushFollow(FollowSets000.FOLLOW_2);
        rulePatternProperty();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred93_InternalFiacre

    // $ANTLR start synpred142_InternalFiacre
    public final void synpred142_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:6662:3: ( rule__ChannelType__Group_1__0 )
        // InternalFiacre.g:6662:3: rule__ChannelType__Group_1__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__ChannelType__Group_1__0();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred142_InternalFiacre

    // $ANTLR start synpred214_InternalFiacre
    public final void synpred214_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:16396:3: ( rule__Composition__Group_1__0 )
        // InternalFiacre.g:16396:3: rule__Composition__Group_1__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__Composition__Group_1__0();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred214_InternalFiacre

    // $ANTLR start synpred218_InternalFiacre
    public final void synpred218_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:16747:3: ( rule__InstanceDeclaration__Alternatives_0 )
        // InternalFiacre.g:16747:3: rule__InstanceDeclaration__Alternatives_0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__InstanceDeclaration__Alternatives_0();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred218_InternalFiacre

    // $ANTLR start synpred230_InternalFiacre
    public final void synpred230_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:18717:3: ( rule__Addition__Group_1__0 )
        // InternalFiacre.g:18717:3: rule__Addition__Group_1__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__Addition__Group_1__0();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred230_InternalFiacre

    // $ANTLR start synpred231_InternalFiacre
    public final void synpred231_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:18852:3: ( rule__Substraction__Group_1__0 )
        // InternalFiacre.g:18852:3: rule__Substraction__Group_1__0
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__Substraction__Group_1__0();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred231_InternalFiacre

    // $ANTLR start synpred238_InternalFiacre
    public final void synpred238_InternalFiacre_fragment() throws RecognitionException {   
        // InternalFiacre.g:20445:3: ( rule__IdentifierExpression__Alternatives_1_1 )
        // InternalFiacre.g:20445:3: rule__IdentifierExpression__Alternatives_1_1
        {
        pushFollow(FollowSets000.FOLLOW_2);
        rule__IdentifierExpression__Alternatives_1_1();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred238_InternalFiacre

    // Delegated rules

    public final boolean synpred231_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred231_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred37_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred37_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred47_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred47_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred93_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred93_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred238_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred238_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred75_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred75_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred15_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred15_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred11_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred11_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred38_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred38_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred230_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred230_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred35_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred35_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred142_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred142_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred36_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred36_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred214_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred214_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred218_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred218_InternalFiacre_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred10_InternalFiacre() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_InternalFiacre_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 DFA8 dfa8 = new DFA8(this);
    protected DFA16 dfa16 = new DFA16(this);
    protected DFA41 dfa41 = new DFA41(this);
    protected DFA72 dfa72 = new DFA72(this);
    protected DFA144 dfa144 = new DFA144(this);
    protected DFA148 dfa148 = new DFA148(this);
    static final String dfa_1s = "\37\uffff";
    static final String dfa_2s = "\1\4\16\uffff\1\0\17\uffff";
    static final String dfa_3s = "\1\153\16\uffff\1\0\17\uffff";
    static final String dfa_4s = "\1\uffff\1\1\2\uffff\1\2\25\uffff\1\3\1\4\1\5\1\6\1\7";
    static final String dfa_5s = "\17\uffff\1\0\17\uffff}>";
    static final String[] dfa_6s = {
            "\1\17\1\uffff\1\4\7\uffff\1\4\7\uffff\1\4\5\uffff\1\35\2\uffff\3\1\1\uffff\1\32\1\uffff\1\33\1\34\3\uffff\1\4\42\uffff\2\4\10\uffff\1\4\3\uffff\7\4\1\uffff\2\4\1\uffff\1\4\1\uffff\4\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
    static final char[] dfa_2 = DFA.unpackEncodedStringToUnsignedChars(dfa_2s);
    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
    static final short[] dfa_4 = DFA.unpackEncodedString(dfa_4s);
    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
    static final short[][] dfa_6 = unpackEncodedStringArray(dfa_6s);

    class DFA8 extends DFA {

        public DFA8(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 8;
            this.eot = dfa_1;
            this.eof = dfa_1;
            this.min = dfa_2;
            this.max = dfa_3;
            this.accept = dfa_4;
            this.special = dfa_5;
            this.transition = dfa_6;
        }
        public String getDescription() {
            return "3922:1: rule__Type__Alternatives : ( ( ruleBasicType ) | ( ruleRangeType ) | ( ruleUnionType ) | ( ruleRecordType ) | ( ruleQueueType ) | ( ruleArrayType ) | ( ruleReferencedType ) );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA8_15 = input.LA(1);

                         
                        int index8_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred15_InternalFiacre()) ) {s = 4;}

                        else if ( (true) ) {s = 30;}

                         
                        input.seek(index8_15);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 8, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_7s = "\33\uffff";
    static final String dfa_8s = "\1\4\30\0\2\uffff";
    static final String dfa_9s = "\1\153\30\0\2\uffff";
    static final String dfa_10s = "\31\uffff\1\1\1\2";
    static final String dfa_11s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\2\uffff}>";
    static final String[] dfa_12s = {
            "\1\15\1\uffff\1\21\7\uffff\1\4\1\30\6\uffff\1\27\23\uffff\1\23\40\uffff\1\31\1\uffff\1\2\1\3\10\uffff\1\5\1\1\2\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\uffff\1\16\1\22\1\uffff\1\24\1\uffff\1\25\1\26\1\17\1\20",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] dfa_7 = DFA.unpackEncodedString(dfa_7s);
    static final char[] dfa_8 = DFA.unpackEncodedStringToUnsignedChars(dfa_8s);
    static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
    static final short[] dfa_10 = DFA.unpackEncodedString(dfa_10s);
    static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
    static final short[][] dfa_12 = unpackEncodedStringArray(dfa_12s);

    class DFA16 extends DFA {

        public DFA16(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 16;
            this.eot = dfa_7;
            this.eof = dfa_7;
            this.min = dfa_8;
            this.max = dfa_9;
            this.accept = dfa_10;
            this.special = dfa_11;
            this.transition = dfa_12;
        }
        public String getDescription() {
            return "4240:1: rule__Block__Alternatives : ( ( ruleCompositeBlock ) | ( ruleInstanceDeclaration ) );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA16_1 = input.LA(1);

                         
                        int index16_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA16_2 = input.LA(1);

                         
                        int index16_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA16_3 = input.LA(1);

                         
                        int index16_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA16_4 = input.LA(1);

                         
                        int index16_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA16_5 = input.LA(1);

                         
                        int index16_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA16_6 = input.LA(1);

                         
                        int index16_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA16_7 = input.LA(1);

                         
                        int index16_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA16_8 = input.LA(1);

                         
                        int index16_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA16_9 = input.LA(1);

                         
                        int index16_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA16_10 = input.LA(1);

                         
                        int index16_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA16_11 = input.LA(1);

                         
                        int index16_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA16_12 = input.LA(1);

                         
                        int index16_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA16_13 = input.LA(1);

                         
                        int index16_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA16_14 = input.LA(1);

                         
                        int index16_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA16_15 = input.LA(1);

                         
                        int index16_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA16_16 = input.LA(1);

                         
                        int index16_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA16_17 = input.LA(1);

                         
                        int index16_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA16_18 = input.LA(1);

                         
                        int index16_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA16_19 = input.LA(1);

                         
                        int index16_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA16_20 = input.LA(1);

                         
                        int index16_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA16_21 = input.LA(1);

                         
                        int index16_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA16_22 = input.LA(1);

                         
                        int index16_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA16_23 = input.LA(1);

                         
                        int index16_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_23);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA16_24 = input.LA(1);

                         
                        int index16_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_InternalFiacre()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index16_24);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 16, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_13s = "\16\uffff";
    static final String dfa_14s = "\1\4\7\uffff\1\0\5\uffff";
    static final String dfa_15s = "\1\u0084\7\uffff\1\0\5\uffff";
    static final String dfa_16s = "\1\uffff\1\1\13\uffff\1\2";
    static final String dfa_17s = "\10\uffff\1\0\5\uffff}>";
    static final String[] dfa_18s = {
            "\1\1\1\uffff\1\1\17\uffff\1\10\132\uffff\5\1\6\uffff\1\1\1\uffff\1\1\4\uffff\2\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_13 = DFA.unpackEncodedString(dfa_13s);
    static final char[] dfa_14 = DFA.unpackEncodedStringToUnsignedChars(dfa_14s);
    static final char[] dfa_15 = DFA.unpackEncodedStringToUnsignedChars(dfa_15s);
    static final short[] dfa_16 = DFA.unpackEncodedString(dfa_16s);
    static final short[] dfa_17 = DFA.unpackEncodedString(dfa_17s);
    static final short[][] dfa_18 = unpackEncodedStringArray(dfa_18s);

    class DFA41 extends DFA {

        public DFA41(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 41;
            this.eot = dfa_13;
            this.eof = dfa_13;
            this.min = dfa_14;
            this.max = dfa_15;
            this.accept = dfa_16;
            this.special = dfa_17;
            this.transition = dfa_18;
        }
        public String getDescription() {
            return "4891:1: rule__AtomicProperty__Alternatives : ( ( rulePatternProperty ) | ( ( rule__AtomicProperty__Group_1__0 ) ) );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA41_8 = input.LA(1);

                         
                        int index41_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred93_InternalFiacre()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index41_8);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 41, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_19s = "\43\uffff";
    static final String dfa_20s = "\1\4\1\0\41\uffff";
    static final String dfa_21s = "\1\u0089\1\0\41\uffff";
    static final String dfa_22s = "\2\uffff\1\2\37\uffff\1\1";
    static final String dfa_23s = "\1\uffff\1\0\41\uffff}>";
    static final String[] dfa_24s = {
            "\1\2\1\uffff\1\2\5\uffff\3\2\7\uffff\1\2\5\uffff\1\1\2\uffff\3\2\1\uffff\1\2\1\uffff\2\2\3\uffff\1\2\6\uffff\1\2\33\uffff\2\2\10\uffff\1\2\3\uffff\7\2\1\uffff\2\2\1\uffff\1\2\1\uffff\4\2\35\uffff\1\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
    static final char[] dfa_20 = DFA.unpackEncodedStringToUnsignedChars(dfa_20s);
    static final char[] dfa_21 = DFA.unpackEncodedStringToUnsignedChars(dfa_21s);
    static final short[] dfa_22 = DFA.unpackEncodedString(dfa_22s);
    static final short[] dfa_23 = DFA.unpackEncodedString(dfa_23s);
    static final short[][] dfa_24 = unpackEncodedStringArray(dfa_24s);

    class DFA72 extends DFA {

        public DFA72(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 72;
            this.eot = dfa_19;
            this.eof = dfa_19;
            this.min = dfa_20;
            this.max = dfa_21;
            this.accept = dfa_22;
            this.special = dfa_23;
            this.transition = dfa_24;
        }
        public String getDescription() {
            return "6662:2: ( rule__ChannelType__Group_1__0 )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA72_1 = input.LA(1);

                         
                        int index72_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred142_InternalFiacre()) ) {s = 34;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index72_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 72, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_25s = "\1\4\27\0\3\uffff";
    static final String dfa_26s = "\1\153\27\0\3\uffff";
    static final String dfa_27s = "\30\uffff\1\2\1\uffff\1\1";
    static final String dfa_28s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\3\uffff}>";
    static final String[] dfa_29s = {
            "\1\15\1\uffff\1\21\7\uffff\1\4\1\30\6\uffff\1\27\23\uffff\1\23\40\uffff\1\30\1\uffff\1\2\1\3\10\uffff\1\5\1\1\2\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\uffff\1\16\1\22\1\uffff\1\24\1\uffff\1\25\1\26\1\17\1\20",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            ""
    };
    static final char[] dfa_25 = DFA.unpackEncodedStringToUnsignedChars(dfa_25s);
    static final char[] dfa_26 = DFA.unpackEncodedStringToUnsignedChars(dfa_26s);
    static final short[] dfa_27 = DFA.unpackEncodedString(dfa_27s);
    static final short[] dfa_28 = DFA.unpackEncodedString(dfa_28s);
    static final short[][] dfa_29 = unpackEncodedStringArray(dfa_29s);

    class DFA144 extends DFA {

        public DFA144(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 144;
            this.eot = dfa_7;
            this.eof = dfa_7;
            this.min = dfa_25;
            this.max = dfa_26;
            this.accept = dfa_27;
            this.special = dfa_28;
            this.transition = dfa_29;
        }
        public String getDescription() {
            return "16396:2: ( rule__Composition__Group_1__0 )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA144_1 = input.LA(1);

                         
                        int index144_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA144_2 = input.LA(1);

                         
                        int index144_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA144_3 = input.LA(1);

                         
                        int index144_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA144_4 = input.LA(1);

                         
                        int index144_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA144_5 = input.LA(1);

                         
                        int index144_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA144_6 = input.LA(1);

                         
                        int index144_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA144_7 = input.LA(1);

                         
                        int index144_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA144_8 = input.LA(1);

                         
                        int index144_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA144_9 = input.LA(1);

                         
                        int index144_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA144_10 = input.LA(1);

                         
                        int index144_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA144_11 = input.LA(1);

                         
                        int index144_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA144_12 = input.LA(1);

                         
                        int index144_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA144_13 = input.LA(1);

                         
                        int index144_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA144_14 = input.LA(1);

                         
                        int index144_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA144_15 = input.LA(1);

                         
                        int index144_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA144_16 = input.LA(1);

                         
                        int index144_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA144_17 = input.LA(1);

                         
                        int index144_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA144_18 = input.LA(1);

                         
                        int index144_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA144_19 = input.LA(1);

                         
                        int index144_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA144_20 = input.LA(1);

                         
                        int index144_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA144_21 = input.LA(1);

                         
                        int index144_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA144_22 = input.LA(1);

                         
                        int index144_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA144_23 = input.LA(1);

                         
                        int index144_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred214_InternalFiacre()) ) {s = 26;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index144_23);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 144, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_30s = "\32\uffff";
    static final String dfa_31s = "\1\4\14\uffff\1\0\14\uffff";
    static final String dfa_32s = "\1\153\14\uffff\1\0\14\uffff";
    static final String dfa_33s = "\1\uffff\1\1\27\uffff\1\2";
    static final String dfa_34s = "\15\uffff\1\0\14\uffff}>";
    static final String[] dfa_35s = {
            "\1\15\1\uffff\1\1\7\uffff\2\1\6\uffff\1\1\23\uffff\1\1\42\uffff\2\1\10\uffff\2\1\2\uffff\7\1\1\uffff\2\1\1\uffff\1\1\1\uffff\4\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_30 = DFA.unpackEncodedString(dfa_30s);
    static final char[] dfa_31 = DFA.unpackEncodedStringToUnsignedChars(dfa_31s);
    static final char[] dfa_32 = DFA.unpackEncodedStringToUnsignedChars(dfa_32s);
    static final short[] dfa_33 = DFA.unpackEncodedString(dfa_33s);
    static final short[] dfa_34 = DFA.unpackEncodedString(dfa_34s);
    static final short[][] dfa_35 = unpackEncodedStringArray(dfa_35s);

    class DFA148 extends DFA {

        public DFA148(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 148;
            this.eot = dfa_30;
            this.eof = dfa_30;
            this.min = dfa_31;
            this.max = dfa_32;
            this.accept = dfa_33;
            this.special = dfa_34;
            this.transition = dfa_35;
        }
        public String getDescription() {
            return "16747:2: ( rule__InstanceDeclaration__Alternatives_0 )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA148_13 = input.LA(1);

                         
                        int index148_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred218_InternalFiacre()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index148_13);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 148, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    
    private static class FollowSets000 {
        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[]{0x0000000000000052L});
        public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x000101800C0C0010L,0x0001200000000000L});
        public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x000101800C080012L,0x0001200000000000L});
        public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x000101800C080010L,0x0001200000000000L});
        public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000010000L});
        public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000020002L});
        public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000400000L});
        public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000046B90404050L,0x00000F5BF8806000L});
        public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x43C0000042404050L,0x00000C00008007ECL});
        public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000800010L,0x0000000800000000L});
        public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000001000000L});
        public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000001000002L});
        public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000010L,0x0000000800000000L});
        public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0002046B90407050L,0x00000F5BF8806000L,0x0000000000000200L});
        public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000040000404050L,0x00000F5BF8806000L});
        public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000020000000L});
        public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0002046B90405050L,0x00000F5BF8806000L,0x0000000000000200L});
        public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
        public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000040000000L});
        public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000040000002L});
        public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000080000000L});
        public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000100000000L});
        public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000380000000L});
        public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000400000000L});
        public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000001000020000L});
        public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000800000000L});
        public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000021000000L});
        public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000001001000000L});
        public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000002000000000L});
        public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000001100000L});
        public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000040000600000L});
        public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000320000000000L});
        public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000C00003000000L});
        public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000C00003000002L});
        public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000080001000000L});
        public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000001800000L});
        public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000700002000000L,0x0000000000000800L});
        public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0002000000000000L});
        public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x00000C0000000000L});
        public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x00000000000000D0L,0x0000100000000000L});
        public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000046B90404050L,0x00000F5BF8806000L,0x0000000000000C00L});
        public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000040000000000L});
        public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000080000000000L});
        public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0004000000000000L});
        public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000010002L});
        public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0008000000000000L});
        public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0008000000000002L});
        public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0010000000000000L});
        public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0010000000000002L});
        public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0020000000000000L});
        public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0020000000000002L});
        public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000001000000000L});
        public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0100000000000000L});
        public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x1804000001000000L});
        public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0200000000404050L,0x00000C0000800000L});
        public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0004000001000000L});
        public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0200000000000000L});
        public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0400000000000000L});
        public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0400000001000000L});
        public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000040L});
        public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0200000000C04050L,0x00000C0000800000L});
        public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x2000040000000000L});
        public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x2000040000000002L});
        public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x8000000000000000L});
        public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000001000000000L,0x0000000000000003L});
        public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
        public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x4000000000000000L});
        public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
        public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
        public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
        public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
        public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000008000L});
        public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
        public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
        public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x000074000240C050L,0x00000F5BF9806800L});
        public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000001000000000L,0x0000000000001000L});
        public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
        public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
        public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000040000400000L});
        public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x2002000000000000L});
        public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
        public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
        public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x1000000000000000L});
        public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
        public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
        public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
        public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
        public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
        public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000010000L,0x00000000007C0000L});
        public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
        public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
        public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
        public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
        public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000004002L});
        public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
        public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
        public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
        public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
        public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
        public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
        public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
        public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
        public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
        public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
        public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
        public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
        public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
        public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
        public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000004000L,0x00000003F8800000L});
        public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
        public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000040000C04050L,0x00000F5BF8806000L});
        public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000001000000L,0x0000002000000000L});
        public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x00000C0000404050L,0x00000F5BF8806000L});
        public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
        public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000040000404050L,0x00000FDBF8806000L});
        public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
        public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x00000C0000000000L});
        public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000080L});
        public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
        public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000400050L,0x503E000008006000L,0x0000000000000018L});
        public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x2000000000000000L});
        public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0010000000400050L,0x503E000008080000L,0x000000000000001CL});
        public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
        public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000400050L,0x503E000000000000L,0x0000000000000018L});
        public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000000L,0x0CC0000000000000L});
        public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0300000000000000L});
        public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
        public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0000000000000000L,0x0C80000000000000L});
        public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
        public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
        public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x0000000000000001L});
        public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000000000000L,0x0D80000000000000L});
        public static final BitSet FOLLOW_143 = new BitSet(new long[]{0x0010000000400050L,0x503E000008086000L,0x000000000000001CL});
        public static final BitSet FOLLOW_144 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L,0x0000000000000002L});
        public static final BitSet FOLLOW_145 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
        public static final BitSet FOLLOW_146 = new BitSet(new long[]{0x0010000000000000L,0x0000000008080000L,0x0000000000000004L});
        public static final BitSet FOLLOW_147 = new BitSet(new long[]{0x0000000000400050L,0x503E000008000000L,0x0000000000000018L});
        public static final BitSet FOLLOW_148 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000001E0L});
    }


}