InternalErrorModelParser.java

package org.osate.xtext.aadl2.errormodel.parser.antlr.internal;

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.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.osate.xtext.aadl2.errormodel.services.ErrorModelGrammarAccess;



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

/**
 * Copyright (c) 2004-2025 Carnegie Mellon University and others. (see Contributors file). 
 * All Rights Reserved.
 * 
 * NO WARRANTY. ALL MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY
 * KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE
 * OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT
 * MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
 * 
 * This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Created, in part, with funding and support from the United States Government. (see Acknowledgments file).
 * 
 * This program includes and/or can make use of certain third party source code, object code, documentation and other
 * files ("Third Party Software"). The Third Party Software that is used by this program is dependent upon your system
 * configuration. By using this program, You agree to comply with any and all relevant Third Party Software terms and
 * conditions contained in any such Third Party Software or separate license file distributed with such Third Party
 * Software. The parties who own the Third Party Software ("Third Party Licensors") are intended third party benefici-
 * aries to this license with respect to the terms applicable to their Third Party Software. Third Party Software li-
 * censes only apply to the Third Party Software and not any other portion of this program or this program as a whole.
 */
@SuppressWarnings("all")
public class InternalErrorModelParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "Transformations", "Propagations", "Equivalence", "Propagation", "Transitions", "Classifier", "Connection", "Detections", "Properties", "Component", "Composite", "Processor", "Reference", "Subclause", "Behavior", "Bindings", "Constant", "Mappings", "Applies", "Binding", "Compute", "Extends", "Initial", "Library", "Noerror", "Package", "Recover", "Renames", "Access", "Events", "Memory", "Orless", "Ormore", "Others", "Public", "Repair", "Source", "States", "Annex", "Delta", "Error", "Event", "False", "Flows", "Modes", "Paths", "Point", "State", "Types", "Mode", "Path", "Same", "Sink", "True", "Type", "When", "With", "AsteriskAsteriskRightCurlyBracket", "PlusSignEqualsSignGreaterThanSign", "RightSquareBracketHyphenMinusGreaterThanSign", "All", "And", "End", "Not", "Out", "Set", "Use", "LeftCurlyBracketAsteriskAsterisk", "HyphenMinusGreaterThanSign", "HyphenMinusLeftSquareBracket", "FullStopFullStop", "ColonColon", "EqualsSignGreaterThanSign", "If", "In", "Or", "To", "ExclamationMark", "LeftParenthesis", "RightParenthesis", "Asterisk", "PlusSign", "Comma", "HyphenMinus", "FullStop", "Colon", "Semicolon", "CommercialAt", "LeftSquareBracket", "RightSquareBracket", "CircumflexAccent", "LeftCurlyBracket", "RightCurlyBracket", "RULE_SL_COMMENT", "RULE_INTEGER_LIT", "RULE_DIGIT", "RULE_EXPONENT", "RULE_INT_EXPONENT", "RULE_REAL_LIT", "RULE_EXTENDED_DIGIT", "RULE_BASED_INTEGER", "RULE_STRING", "RULE_ID", "RULE_WS"
    };
    public static final int Or=79;
    public static final int Transitions=8;
    public static final int EqualsSignGreaterThanSign=76;
    public static final int Memory=34;
    public static final int Access=32;
    public static final int False=46;
    public static final int LeftCurlyBracketAsteriskAsterisk=71;
    public static final int States=41;
    public static final int PlusSignEqualsSignGreaterThanSign=62;
    public static final int LeftParenthesis=82;
    public static final int Extends=25;
    public static final int Repair=39;
    public static final int ExclamationMark=81;
    public static final int RULE_ID=106;
    public static final int RULE_DIGIT=99;
    public static final int Out=68;
    public static final int ColonColon=75;
    public static final int PlusSign=85;
    public static final int LeftSquareBracket=92;
    public static final int Package=29;
    public static final int If=77;
    public static final int Processor=15;
    public static final int Set=69;
    public static final int Propagation=7;
    public static final int In=78;
    public static final int RULE_REAL_LIT=102;
    public static final int Classifier=9;
    public static final int Detections=11;
    public static final int Bindings=19;
    public static final int Comma=86;
    public static final int HyphenMinus=87;
    public static final int Events=33;
    public static final int Orless=35;
    public static final int Paths=49;
    public static final int RightCurlyBracket=96;
    public static final int Path=54;
    public static final int Modes=48;
    public static final int FullStop=88;
    public static final int Composite=14;
    public static final int Reference=16;
    public static final int Use=70;
    public static final int Connection=10;
    public static final int CommercialAt=91;
    public static final int Semicolon=90;
    public static final int Type=58;
    public static final int RULE_EXPONENT=100;
    public static final int When=59;
    public static final int Equivalence=6;
    public static final int Delta=43;
    public static final int Propagations=5;
    public static final int RULE_EXTENDED_DIGIT=103;
    public static final int Event=45;
    public static final int HyphenMinusGreaterThanSign=72;
    public static final int Initial=26;
    public static final int All=64;
    public static final int Renames=31;
    public static final int Types=52;
    public static final int True=57;
    public static final int RULE_INT_EXPONENT=101;
    public static final int Ormore=36;
    public static final int Noerror=28;
    public static final int Sink=56;
    public static final int FullStopFullStop=74;
    public static final int Behavior=18;
    public static final int To=80;
    public static final int Applies=22;
    public static final int RULE_BASED_INTEGER=104;
    public static final int RightSquareBracket=93;
    public static final int Binding=23;
    public static final int Same=55;
    public static final int RightParenthesis=83;
    public static final int Public=38;
    public static final int AsteriskAsteriskRightCurlyBracket=61;
    public static final int Not=67;
    public static final int State=51;
    public static final int And=65;
    public static final int Transformations=4;
    public static final int End=66;
    public static final int Library=27;
    public static final int RULE_INTEGER_LIT=98;
    public static final int Subclause=17;
    public static final int Constant=20;
    public static final int RULE_STRING=105;
    public static final int Properties=12;
    public static final int Source=40;
    public static final int With=60;
    public static final int RULE_SL_COMMENT=97;
    public static final int Colon=89;
    public static final int Component=13;
    public static final int EOF=-1;
    public static final int Asterisk=84;
    public static final int Others=37;
    public static final int RULE_WS=107;
    public static final int Mode=53;
    public static final int HyphenMinusLeftSquareBracket=73;
    public static final int Flows=47;
    public static final int LeftCurlyBracket=95;
    public static final int Error=44;
    public static final int Point=50;
    public static final int CircumflexAccent=94;
    public static final int RightSquareBracketHyphenMinusGreaterThanSign=63;
    public static final int Annex=42;
    public static final int Mappings=21;
    public static final int Compute=24;
    public static final int Recover=30;

    // delegates
    // delegators


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

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



     	private ErrorModelGrammarAccess grammarAccess;

        public InternalErrorModelParser(TokenStream input, ErrorModelGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }

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

       	@Override
       	protected ErrorModelGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}




    // $ANTLR start "entryRuleEMV2Root"
    // InternalErrorModelParser.g:77:1: entryRuleEMV2Root returns [EObject current=null] : iv_ruleEMV2Root= ruleEMV2Root EOF ;
    public final EObject entryRuleEMV2Root() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2Root = null;


        try {
            // InternalErrorModelParser.g:77:49: (iv_ruleEMV2Root= ruleEMV2Root EOF )
            // InternalErrorModelParser.g:78:2: iv_ruleEMV2Root= ruleEMV2Root EOF
            {
             newCompositeNode(grammarAccess.getEMV2RootRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2Root=ruleEMV2Root();

            state._fsp--;

             current =iv_ruleEMV2Root; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2Root"
    // InternalErrorModelParser.g:84:1: ruleEMV2Root returns [EObject current=null] : ( () ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* ) ) ;
    public final EObject ruleEMV2Root() throws RecognitionException {
        EObject current = null;

        EObject lv_library_1_0 = null;

        EObject lv_subclauses_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:90:2: ( ( () ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* ) ) )
            // InternalErrorModelParser.g:91:2: ( () ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* ) )
            {
            // InternalErrorModelParser.g:91:2: ( () ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* ) )
            // InternalErrorModelParser.g:92:3: () ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* )
            {
            // InternalErrorModelParser.g:92:3: ()
            // InternalErrorModelParser.g:93:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getEMV2RootAccess().getEMV2RootAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:99:3: ( ( (lv_library_1_0= ruleEMV2Library ) ) | ( (lv_subclauses_2_0= ruleEMV2Subclause ) )* )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==Library||LA2_0==Package) ) {
                alt2=1;
            }
            else if ( (LA2_0==EOF||LA2_0==Subclause) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // InternalErrorModelParser.g:100:4: ( (lv_library_1_0= ruleEMV2Library ) )
                    {
                    // InternalErrorModelParser.g:100:4: ( (lv_library_1_0= ruleEMV2Library ) )
                    // InternalErrorModelParser.g:101:5: (lv_library_1_0= ruleEMV2Library )
                    {
                    // InternalErrorModelParser.g:101:5: (lv_library_1_0= ruleEMV2Library )
                    // InternalErrorModelParser.g:102:6: lv_library_1_0= ruleEMV2Library
                    {

                    						newCompositeNode(grammarAccess.getEMV2RootAccess().getLibraryEMV2LibraryParserRuleCall_1_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_library_1_0=ruleEMV2Library();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEMV2RootRule());
                    						}
                    						set(
                    							current,
                    							"library",
                    							lv_library_1_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2Library");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:120:4: ( (lv_subclauses_2_0= ruleEMV2Subclause ) )*
                    {
                    // InternalErrorModelParser.g:120:4: ( (lv_subclauses_2_0= ruleEMV2Subclause ) )*
                    loop1:
                    do {
                        int alt1=2;
                        int LA1_0 = input.LA(1);

                        if ( (LA1_0==Subclause) ) {
                            alt1=1;
                        }


                        switch (alt1) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:121:5: (lv_subclauses_2_0= ruleEMV2Subclause )
                    	    {
                    	    // InternalErrorModelParser.g:121:5: (lv_subclauses_2_0= ruleEMV2Subclause )
                    	    // InternalErrorModelParser.g:122:6: lv_subclauses_2_0= ruleEMV2Subclause
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2RootAccess().getSubclausesEMV2SubclauseParserRuleCall_1_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_3);
                    	    lv_subclauses_2_0=ruleEMV2Subclause();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2RootRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"subclauses",
                    	    							lv_subclauses_2_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2Subclause");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorModelSubclause"
    // InternalErrorModelParser.g:144:1: entryRuleErrorModelSubclause returns [EObject current=null] : iv_ruleErrorModelSubclause= ruleErrorModelSubclause EOF ;
    public final EObject entryRuleErrorModelSubclause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorModelSubclause = null;


        try {
            // InternalErrorModelParser.g:144:60: (iv_ruleErrorModelSubclause= ruleErrorModelSubclause EOF )
            // InternalErrorModelParser.g:145:2: iv_ruleErrorModelSubclause= ruleErrorModelSubclause EOF
            {
             newCompositeNode(grammarAccess.getErrorModelSubclauseRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorModelSubclause=ruleErrorModelSubclause();

            state._fsp--;

             current =iv_ruleErrorModelSubclause; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorModelSubclause"
    // InternalErrorModelParser.g:151:1: ruleErrorModelSubclause returns [EObject current=null] : ( () (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )? (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )? (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )? (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )? (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )? (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )? (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )? (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )? (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )? (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )? ) ;
    public final EObject ruleErrorModelSubclause() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        Token otherlv_21=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token otherlv_26=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token otherlv_29=null;
        Token otherlv_30=null;
        Token otherlv_31=null;
        Token otherlv_32=null;
        Token otherlv_34=null;
        Token otherlv_35=null;
        Token otherlv_37=null;
        Token otherlv_39=null;
        Token otherlv_41=null;
        Token otherlv_43=null;
        Token otherlv_44=null;
        Token otherlv_46=null;
        Token otherlv_47=null;
        Token otherlv_48=null;
        Token otherlv_49=null;
        Token otherlv_50=null;
        Token otherlv_51=null;
        Token otherlv_52=null;
        Token otherlv_54=null;
        Token otherlv_55=null;
        Token otherlv_56=null;
        Token otherlv_57=null;
        Token otherlv_58=null;
        Token otherlv_59=null;
        Token otherlv_60=null;
        Token otherlv_62=null;
        Token otherlv_64=null;
        Token otherlv_65=null;
        Token otherlv_66=null;
        Token otherlv_67=null;
        Token otherlv_68=null;
        Token otherlv_71=null;
        Token otherlv_72=null;
        Token otherlv_73=null;
        Token otherlv_74=null;
        EObject lv_propagations_22_0 = null;

        EObject lv_flows_24_0 = null;

        EObject lv_events_36_0 = null;

        EObject lv_transitions_38_0 = null;

        EObject lv_outgoingPropagationConditions_40_0 = null;

        EObject lv_errorDetections_42_0 = null;

        EObject lv_errorStateToModeMappings_45_0 = null;

        EObject lv_states_53_0 = null;

        EObject lv_connectionErrorSources_63_0 = null;

        EObject lv_points_69_0 = null;

        EObject lv_paths_70_0 = null;

        EObject lv_properties_75_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:157:2: ( ( () (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )? (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )? (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )? (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )? (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )? (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )? (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )? (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )? (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )? (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )? ) )
            // InternalErrorModelParser.g:158:2: ( () (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )? (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )? (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )? (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )? (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )? (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )? (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )? (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )? (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )? (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )? )
            {
            // InternalErrorModelParser.g:158:2: ( () (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )? (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )? (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )? (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )? (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )? (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )? (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )? (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )? (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )? (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )? )
            // InternalErrorModelParser.g:159:3: () (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )? (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )? (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )? (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )? (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )? (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )? (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )? (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )? (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )? (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )?
            {
            // InternalErrorModelParser.g:159:3: ()
            // InternalErrorModelParser.g:160:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getErrorModelSubclauseAccess().getErrorModelSubclauseAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:166:3: (otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==Use) ) {
                int LA4_1 = input.LA(2);

                if ( (LA4_1==Types) ) {
                    alt4=1;
                }
            }
            switch (alt4) {
                case 1 :
                    // InternalErrorModelParser.g:167:4: otherlv_1= Use otherlv_2= Types ( ( ruleQEMREF ) ) (otherlv_4= Comma ( ( ruleQEMREF ) ) )* otherlv_6= Semicolon
                    {
                    otherlv_1=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_1, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_1_0());
                    			
                    otherlv_2=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_2, grammarAccess.getErrorModelSubclauseAccess().getTypesKeyword_1_1());
                    			
                    // InternalErrorModelParser.g:175:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:176:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:176:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:177:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getUseTypesErrorModelLibraryCrossReference_1_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_6);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:191:4: (otherlv_4= Comma ( ( ruleQEMREF ) ) )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

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


                        switch (alt3) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:192:5: otherlv_4= Comma ( ( ruleQEMREF ) )
                    	    {
                    	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_4, grammarAccess.getErrorModelSubclauseAccess().getCommaKeyword_1_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:196:5: ( ( ruleQEMREF ) )
                    	    // InternalErrorModelParser.g:197:6: ( ruleQEMREF )
                    	    {
                    	    // InternalErrorModelParser.g:197:6: ( ruleQEMREF )
                    	    // InternalErrorModelParser.g:198:7: ruleQEMREF
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getUseTypesErrorModelLibraryCrossReference_1_3_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    ruleQEMREF();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_6=(Token)match(input,Semicolon,FollowSets000.FOLLOW_7); 

                    				newLeafNode(otherlv_6, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_1_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:218:3: (otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==Use) ) {
                int LA5_1 = input.LA(2);

                if ( (LA5_1==Type) ) {
                    alt5=1;
                }
            }
            switch (alt5) {
                case 1 :
                    // InternalErrorModelParser.g:219:4: otherlv_7= Use otherlv_8= Type otherlv_9= Equivalence ( ( ruleQEMREF ) ) otherlv_11= Semicolon
                    {
                    otherlv_7=(Token)match(input,Use,FollowSets000.FOLLOW_8); 

                    				newLeafNode(otherlv_7, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_2_0());
                    			
                    otherlv_8=(Token)match(input,Type,FollowSets000.FOLLOW_9); 

                    				newLeafNode(otherlv_8, grammarAccess.getErrorModelSubclauseAccess().getTypeKeyword_2_1());
                    			
                    otherlv_9=(Token)match(input,Equivalence,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_9, grammarAccess.getErrorModelSubclauseAccess().getEquivalenceKeyword_2_2());
                    			
                    // InternalErrorModelParser.g:231:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:232:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:232:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:233:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getTypeEquivalenceTypeMappingSetCrossReference_2_3_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_11=(Token)match(input,Semicolon,FollowSets000.FOLLOW_7); 

                    				newLeafNode(otherlv_11, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_2_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:252:3: (otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==Use) ) {
                int LA6_1 = input.LA(2);

                if ( (LA6_1==Mappings) ) {
                    alt6=1;
                }
            }
            switch (alt6) {
                case 1 :
                    // InternalErrorModelParser.g:253:4: otherlv_12= Use otherlv_13= Mappings ( ( ruleQEMREF ) ) otherlv_15= Semicolon
                    {
                    otherlv_12=(Token)match(input,Use,FollowSets000.FOLLOW_11); 

                    				newLeafNode(otherlv_12, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_3_0());
                    			
                    otherlv_13=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_13, grammarAccess.getErrorModelSubclauseAccess().getMappingsKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:261:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:262:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:262:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:263:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getTypeMappingSetTypeMappingSetCrossReference_3_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_15=(Token)match(input,Semicolon,FollowSets000.FOLLOW_7); 

                    				newLeafNode(otherlv_15, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_3_3());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:282:3: (otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==Use) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // InternalErrorModelParser.g:283:4: otherlv_16= Use otherlv_17= Behavior ( ( ruleQEMREF ) ) otherlv_19= Semicolon
                    {
                    otherlv_16=(Token)match(input,Use,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_16, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_4_0());
                    			
                    otherlv_17=(Token)match(input,Behavior,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_17, grammarAccess.getErrorModelSubclauseAccess().getBehaviorKeyword_4_1());
                    			
                    // InternalErrorModelParser.g:291:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:292:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:292:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:293:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getUseBehaviorErrorBehaviorStateMachineCrossReference_4_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_19=(Token)match(input,Semicolon,FollowSets000.FOLLOW_13); 

                    				newLeafNode(otherlv_19, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_4_3());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:312:3: (otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==Error) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // InternalErrorModelParser.g:313:4: otherlv_20= Error otherlv_21= Propagations ( (lv_propagations_22_0= ruleErrorPropagation ) )* (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )? otherlv_25= End otherlv_26= Propagations otherlv_27= Semicolon
                    {
                    otherlv_20=(Token)match(input,Error,FollowSets000.FOLLOW_14); 

                    				newLeafNode(otherlv_20, grammarAccess.getErrorModelSubclauseAccess().getErrorKeyword_5_0());
                    			
                    otherlv_21=(Token)match(input,Propagations,FollowSets000.FOLLOW_15); 

                    				newLeafNode(otherlv_21, grammarAccess.getErrorModelSubclauseAccess().getPropagationsKeyword_5_1());
                    			
                    // InternalErrorModelParser.g:321:4: ( (lv_propagations_22_0= ruleErrorPropagation ) )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==Connection||LA8_0==Processor||LA8_0==Bindings||LA8_0==Binding||LA8_0==Access||LA8_0==Memory||LA8_0==RULE_ID) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:322:5: (lv_propagations_22_0= ruleErrorPropagation )
                    	    {
                    	    // InternalErrorModelParser.g:322:5: (lv_propagations_22_0= ruleErrorPropagation )
                    	    // InternalErrorModelParser.g:323:6: lv_propagations_22_0= ruleErrorPropagation
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getPropagationsErrorPropagationParserRuleCall_5_2_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_15);
                    	    lv_propagations_22_0=ruleErrorPropagation();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"propagations",
                    	    							lv_propagations_22_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorPropagation");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:340:4: (otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+ )?
                    int alt10=2;
                    int LA10_0 = input.LA(1);

                    if ( (LA10_0==Flows) ) {
                        alt10=1;
                    }
                    switch (alt10) {
                        case 1 :
                            // InternalErrorModelParser.g:341:5: otherlv_23= Flows ( (lv_flows_24_0= ruleErrorFlow ) )+
                            {
                            otherlv_23=(Token)match(input,Flows,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_23, grammarAccess.getErrorModelSubclauseAccess().getFlowsKeyword_5_3_0());
                            				
                            // InternalErrorModelParser.g:345:5: ( (lv_flows_24_0= ruleErrorFlow ) )+
                            int cnt9=0;
                            loop9:
                            do {
                                int alt9=2;
                                int LA9_0 = input.LA(1);

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


                                switch (alt9) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:346:6: (lv_flows_24_0= ruleErrorFlow )
                            	    {
                            	    // InternalErrorModelParser.g:346:6: (lv_flows_24_0= ruleErrorFlow )
                            	    // InternalErrorModelParser.g:347:7: lv_flows_24_0= ruleErrorFlow
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getFlowsErrorFlowParserRuleCall_5_3_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_16);
                            	    lv_flows_24_0=ruleErrorFlow();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"flows",
                            	    								lv_flows_24_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorFlow");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt9 >= 1 ) break loop9;
                                        EarlyExitException eee =
                                            new EarlyExitException(9, input);
                                        throw eee;
                                }
                                cnt9++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_25=(Token)match(input,End,FollowSets000.FOLLOW_14); 

                    				newLeafNode(otherlv_25, grammarAccess.getErrorModelSubclauseAccess().getEndKeyword_5_4());
                    			
                    otherlv_26=(Token)match(input,Propagations,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_26, grammarAccess.getErrorModelSubclauseAccess().getPropagationsKeyword_5_5());
                    			
                    otherlv_27=(Token)match(input,Semicolon,FollowSets000.FOLLOW_17); 

                    				newLeafNode(otherlv_27, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_5_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:378:3: (otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==Component) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // InternalErrorModelParser.g:379:4: otherlv_28= Component otherlv_29= Error otherlv_30= Behavior (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )? (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )? (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )? otherlv_46= End otherlv_47= Component otherlv_48= Semicolon
                    {
                    otherlv_28=(Token)match(input,Component,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_28, grammarAccess.getErrorModelSubclauseAccess().getComponentKeyword_6_0());
                    			
                    otherlv_29=(Token)match(input,Error,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_29, grammarAccess.getErrorModelSubclauseAccess().getErrorKeyword_6_1());
                    			
                    otherlv_30=(Token)match(input,Behavior,FollowSets000.FOLLOW_19); 

                    				newLeafNode(otherlv_30, grammarAccess.getErrorModelSubclauseAccess().getBehaviorKeyword_6_2());
                    			
                    // InternalErrorModelParser.g:391:4: (otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon )?
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0==Use) ) {
                        alt12=1;
                    }
                    switch (alt12) {
                        case 1 :
                            // InternalErrorModelParser.g:392:5: otherlv_31= Use otherlv_32= Transformations ( ( ruleQEMREF ) ) otherlv_34= Semicolon
                            {
                            otherlv_31=(Token)match(input,Use,FollowSets000.FOLLOW_20); 

                            					newLeafNode(otherlv_31, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_6_3_0());
                            				
                            otherlv_32=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_32, grammarAccess.getErrorModelSubclauseAccess().getTransformationsKeyword_6_3_1());
                            				
                            // InternalErrorModelParser.g:400:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:401:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:401:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:402:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getUseTransformationTypeTransformationSetCrossReference_6_3_2_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_10);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            otherlv_34=(Token)match(input,Semicolon,FollowSets000.FOLLOW_21); 

                            					newLeafNode(otherlv_34, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_6_3_3());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:421:4: (otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+ )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0==Events) ) {
                        alt14=1;
                    }
                    switch (alt14) {
                        case 1 :
                            // InternalErrorModelParser.g:422:5: otherlv_35= Events ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+
                            {
                            otherlv_35=(Token)match(input,Events,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_35, grammarAccess.getErrorModelSubclauseAccess().getEventsKeyword_6_4_0());
                            				
                            // InternalErrorModelParser.g:426:5: ( (lv_events_36_0= ruleErrorBehaviorEvent ) )+
                            int cnt13=0;
                            loop13:
                            do {
                                int alt13=2;
                                int LA13_0 = input.LA(1);

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


                                switch (alt13) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:427:6: (lv_events_36_0= ruleErrorBehaviorEvent )
                            	    {
                            	    // InternalErrorModelParser.g:427:6: (lv_events_36_0= ruleErrorBehaviorEvent )
                            	    // InternalErrorModelParser.g:428:7: lv_events_36_0= ruleErrorBehaviorEvent
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getEventsErrorBehaviorEventParserRuleCall_6_4_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_22);
                            	    lv_events_36_0=ruleErrorBehaviorEvent();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"events",
                            	    								lv_events_36_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorEvent");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt13 >= 1 ) break loop13;
                                        EarlyExitException eee =
                                            new EarlyExitException(13, input);
                                        throw eee;
                                }
                                cnt13++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:446:4: (otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+ )?
                    int alt16=2;
                    int LA16_0 = input.LA(1);

                    if ( (LA16_0==Transitions) ) {
                        alt16=1;
                    }
                    switch (alt16) {
                        case 1 :
                            // InternalErrorModelParser.g:447:5: otherlv_37= Transitions ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+
                            {
                            otherlv_37=(Token)match(input,Transitions,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_37, grammarAccess.getErrorModelSubclauseAccess().getTransitionsKeyword_6_5_0());
                            				
                            // InternalErrorModelParser.g:451:5: ( (lv_transitions_38_0= ruleErrorBehaviorTransition ) )+
                            int cnt15=0;
                            loop15:
                            do {
                                int alt15=2;
                                int LA15_0 = input.LA(1);

                                if ( (LA15_0==All||LA15_0==RULE_ID) ) {
                                    alt15=1;
                                }


                                switch (alt15) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:452:6: (lv_transitions_38_0= ruleErrorBehaviorTransition )
                            	    {
                            	    // InternalErrorModelParser.g:452:6: (lv_transitions_38_0= ruleErrorBehaviorTransition )
                            	    // InternalErrorModelParser.g:453:7: lv_transitions_38_0= ruleErrorBehaviorTransition
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getTransitionsErrorBehaviorTransitionParserRuleCall_6_5_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_24);
                            	    lv_transitions_38_0=ruleErrorBehaviorTransition();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"transitions",
                            	    								lv_transitions_38_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorTransition");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt15 >= 1 ) break loop15;
                                        EarlyExitException eee =
                                            new EarlyExitException(15, input);
                                        throw eee;
                                }
                                cnt15++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:471:4: (otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+ )?
                    int alt18=2;
                    int LA18_0 = input.LA(1);

                    if ( (LA18_0==Propagations) ) {
                        alt18=1;
                    }
                    switch (alt18) {
                        case 1 :
                            // InternalErrorModelParser.g:472:5: otherlv_39= Propagations ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+
                            {
                            otherlv_39=(Token)match(input,Propagations,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_39, grammarAccess.getErrorModelSubclauseAccess().getPropagationsKeyword_6_6_0());
                            				
                            // InternalErrorModelParser.g:476:5: ( (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition ) )+
                            int cnt17=0;
                            loop17:
                            do {
                                int alt17=2;
                                int LA17_0 = input.LA(1);

                                if ( (LA17_0==All||LA17_0==RULE_ID) ) {
                                    alt17=1;
                                }


                                switch (alt17) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:477:6: (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition )
                            	    {
                            	    // InternalErrorModelParser.g:477:6: (lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition )
                            	    // InternalErrorModelParser.g:478:7: lv_outgoingPropagationConditions_40_0= ruleOutgoingPropagationCondition
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getOutgoingPropagationConditionsOutgoingPropagationConditionParserRuleCall_6_6_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_25);
                            	    lv_outgoingPropagationConditions_40_0=ruleOutgoingPropagationCondition();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"outgoingPropagationConditions",
                            	    								lv_outgoingPropagationConditions_40_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.OutgoingPropagationCondition");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt17 >= 1 ) break loop17;
                                        EarlyExitException eee =
                                            new EarlyExitException(17, input);
                                        throw eee;
                                }
                                cnt17++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:496:4: (otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+ )?
                    int alt20=2;
                    int LA20_0 = input.LA(1);

                    if ( (LA20_0==Detections) ) {
                        alt20=1;
                    }
                    switch (alt20) {
                        case 1 :
                            // InternalErrorModelParser.g:497:5: otherlv_41= Detections ( (lv_errorDetections_42_0= ruleErrorDetection ) )+
                            {
                            otherlv_41=(Token)match(input,Detections,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_41, grammarAccess.getErrorModelSubclauseAccess().getDetectionsKeyword_6_7_0());
                            				
                            // InternalErrorModelParser.g:501:5: ( (lv_errorDetections_42_0= ruleErrorDetection ) )+
                            int cnt19=0;
                            loop19:
                            do {
                                int alt19=2;
                                int LA19_0 = input.LA(1);

                                if ( (LA19_0==All||LA19_0==RULE_ID) ) {
                                    alt19=1;
                                }


                                switch (alt19) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:502:6: (lv_errorDetections_42_0= ruleErrorDetection )
                            	    {
                            	    // InternalErrorModelParser.g:502:6: (lv_errorDetections_42_0= ruleErrorDetection )
                            	    // InternalErrorModelParser.g:503:7: lv_errorDetections_42_0= ruleErrorDetection
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getErrorDetectionsErrorDetectionParserRuleCall_6_7_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_26);
                            	    lv_errorDetections_42_0=ruleErrorDetection();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"errorDetections",
                            	    								lv_errorDetections_42_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorDetection");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt19 >= 1 ) break loop19;
                                        EarlyExitException eee =
                                            new EarlyExitException(19, input);
                                        throw eee;
                                }
                                cnt19++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:521:4: (otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+ )?
                    int alt22=2;
                    int LA22_0 = input.LA(1);

                    if ( (LA22_0==Mode) ) {
                        alt22=1;
                    }
                    switch (alt22) {
                        case 1 :
                            // InternalErrorModelParser.g:522:5: otherlv_43= Mode otherlv_44= Mappings ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+
                            {
                            otherlv_43=(Token)match(input,Mode,FollowSets000.FOLLOW_11); 

                            					newLeafNode(otherlv_43, grammarAccess.getErrorModelSubclauseAccess().getModeKeyword_6_8_0());
                            				
                            otherlv_44=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_44, grammarAccess.getErrorModelSubclauseAccess().getMappingsKeyword_6_8_1());
                            				
                            // InternalErrorModelParser.g:530:5: ( (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping ) )+
                            int cnt21=0;
                            loop21:
                            do {
                                int alt21=2;
                                int LA21_0 = input.LA(1);

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


                                switch (alt21) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:531:6: (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping )
                            	    {
                            	    // InternalErrorModelParser.g:531:6: (lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping )
                            	    // InternalErrorModelParser.g:532:7: lv_errorStateToModeMappings_45_0= ruleErrorStateToModeMapping
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getErrorStateToModeMappingsErrorStateToModeMappingParserRuleCall_6_8_2_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_16);
                            	    lv_errorStateToModeMappings_45_0=ruleErrorStateToModeMapping();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"errorStateToModeMappings",
                            	    								lv_errorStateToModeMappings_45_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorStateToModeMapping");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt21 >= 1 ) break loop21;
                                        EarlyExitException eee =
                                            new EarlyExitException(21, input);
                                        throw eee;
                                }
                                cnt21++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_46=(Token)match(input,End,FollowSets000.FOLLOW_27); 

                    				newLeafNode(otherlv_46, grammarAccess.getErrorModelSubclauseAccess().getEndKeyword_6_9());
                    			
                    otherlv_47=(Token)match(input,Component,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_47, grammarAccess.getErrorModelSubclauseAccess().getComponentKeyword_6_10());
                    			
                    otherlv_48=(Token)match(input,Semicolon,FollowSets000.FOLLOW_28); 

                    				newLeafNode(otherlv_48, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_6_11());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:563:3: (otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==Composite) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // InternalErrorModelParser.g:564:4: otherlv_49= Composite otherlv_50= Error otherlv_51= Behavior (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )? otherlv_54= End otherlv_55= Composite otherlv_56= Semicolon
                    {
                    otherlv_49=(Token)match(input,Composite,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_49, grammarAccess.getErrorModelSubclauseAccess().getCompositeKeyword_7_0());
                    			
                    otherlv_50=(Token)match(input,Error,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_50, grammarAccess.getErrorModelSubclauseAccess().getErrorKeyword_7_1());
                    			
                    otherlv_51=(Token)match(input,Behavior,FollowSets000.FOLLOW_29); 

                    				newLeafNode(otherlv_51, grammarAccess.getErrorModelSubclauseAccess().getBehaviorKeyword_7_2());
                    			
                    // InternalErrorModelParser.g:576:4: (otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+ )?
                    int alt25=2;
                    int LA25_0 = input.LA(1);

                    if ( (LA25_0==States) ) {
                        alt25=1;
                    }
                    switch (alt25) {
                        case 1 :
                            // InternalErrorModelParser.g:577:5: otherlv_52= States ( (lv_states_53_0= ruleCompositeState ) )+
                            {
                            otherlv_52=(Token)match(input,States,FollowSets000.FOLLOW_30); 

                            					newLeafNode(otherlv_52, grammarAccess.getErrorModelSubclauseAccess().getStatesKeyword_7_3_0());
                            				
                            // InternalErrorModelParser.g:581:5: ( (lv_states_53_0= ruleCompositeState ) )+
                            int cnt24=0;
                            loop24:
                            do {
                                int alt24=2;
                                int LA24_0 = input.LA(1);

                                if ( (LA24_0==LeftSquareBracket||LA24_0==RULE_ID) ) {
                                    alt24=1;
                                }


                                switch (alt24) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:582:6: (lv_states_53_0= ruleCompositeState )
                            	    {
                            	    // InternalErrorModelParser.g:582:6: (lv_states_53_0= ruleCompositeState )
                            	    // InternalErrorModelParser.g:583:7: lv_states_53_0= ruleCompositeState
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getStatesCompositeStateParserRuleCall_7_3_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_31);
                            	    lv_states_53_0=ruleCompositeState();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"states",
                            	    								lv_states_53_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.CompositeState");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt24 >= 1 ) break loop24;
                                        EarlyExitException eee =
                                            new EarlyExitException(24, input);
                                        throw eee;
                                }
                                cnt24++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_54=(Token)match(input,End,FollowSets000.FOLLOW_32); 

                    				newLeafNode(otherlv_54, grammarAccess.getErrorModelSubclauseAccess().getEndKeyword_7_4());
                    			
                    otherlv_55=(Token)match(input,Composite,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_55, grammarAccess.getErrorModelSubclauseAccess().getCompositeKeyword_7_5());
                    			
                    otherlv_56=(Token)match(input,Semicolon,FollowSets000.FOLLOW_33); 

                    				newLeafNode(otherlv_56, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_7_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:614:3: (otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==Connection) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // InternalErrorModelParser.g:615:4: otherlv_57= Connection otherlv_58= Error (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )? ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )* otherlv_64= End otherlv_65= Connection otherlv_66= Semicolon
                    {
                    otherlv_57=(Token)match(input,Connection,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_57, grammarAccess.getErrorModelSubclauseAccess().getConnectionKeyword_8_0());
                    			
                    otherlv_58=(Token)match(input,Error,FollowSets000.FOLLOW_34); 

                    				newLeafNode(otherlv_58, grammarAccess.getErrorModelSubclauseAccess().getErrorKeyword_8_1());
                    			
                    // InternalErrorModelParser.g:623:4: (otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon )?
                    int alt27=2;
                    int LA27_0 = input.LA(1);

                    if ( (LA27_0==Use) ) {
                        alt27=1;
                    }
                    switch (alt27) {
                        case 1 :
                            // InternalErrorModelParser.g:624:5: otherlv_59= Use otherlv_60= Transformations ( ( ruleQEMREF ) ) otherlv_62= Semicolon
                            {
                            otherlv_59=(Token)match(input,Use,FollowSets000.FOLLOW_20); 

                            					newLeafNode(otherlv_59, grammarAccess.getErrorModelSubclauseAccess().getUseKeyword_8_2_0());
                            				
                            otherlv_60=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_60, grammarAccess.getErrorModelSubclauseAccess().getTransformationsKeyword_8_2_1());
                            				
                            // InternalErrorModelParser.g:632:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:633:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:633:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:634:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getErrorModelSubclauseRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getTypeTransformationSetTypeTransformationSetCrossReference_8_2_2_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_10);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            otherlv_62=(Token)match(input,Semicolon,FollowSets000.FOLLOW_16); 

                            					newLeafNode(otherlv_62, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_8_2_3());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:653:4: ( (lv_connectionErrorSources_63_0= ruleErrorSource ) )*
                    loop28:
                    do {
                        int alt28=2;
                        int LA28_0 = input.LA(1);

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


                        switch (alt28) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:654:5: (lv_connectionErrorSources_63_0= ruleErrorSource )
                    	    {
                    	    // InternalErrorModelParser.g:654:5: (lv_connectionErrorSources_63_0= ruleErrorSource )
                    	    // InternalErrorModelParser.g:655:6: lv_connectionErrorSources_63_0= ruleErrorSource
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getConnectionErrorSourcesErrorSourceParserRuleCall_8_3_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_connectionErrorSources_63_0=ruleErrorSource();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"connectionErrorSources",
                    	    							lv_connectionErrorSources_63_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorSource");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    otherlv_64=(Token)match(input,End,FollowSets000.FOLLOW_35); 

                    				newLeafNode(otherlv_64, grammarAccess.getErrorModelSubclauseAccess().getEndKeyword_8_4());
                    			
                    otherlv_65=(Token)match(input,Connection,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_65, grammarAccess.getErrorModelSubclauseAccess().getConnectionKeyword_8_5());
                    			
                    otherlv_66=(Token)match(input,Semicolon,FollowSets000.FOLLOW_36); 

                    				newLeafNode(otherlv_66, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_8_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:685:3: (otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==Propagation) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // InternalErrorModelParser.g:686:4: otherlv_67= Propagation otherlv_68= Paths ( (lv_points_69_0= rulePropagationPoint ) )* ( (lv_paths_70_0= rulePropagationPath ) )* otherlv_71= End otherlv_72= Paths otherlv_73= Semicolon
                    {
                    otherlv_67=(Token)match(input,Propagation,FollowSets000.FOLLOW_37); 

                    				newLeafNode(otherlv_67, grammarAccess.getErrorModelSubclauseAccess().getPropagationKeyword_9_0());
                    			
                    otherlv_68=(Token)match(input,Paths,FollowSets000.FOLLOW_16); 

                    				newLeafNode(otherlv_68, grammarAccess.getErrorModelSubclauseAccess().getPathsKeyword_9_1());
                    			
                    // InternalErrorModelParser.g:694:4: ( (lv_points_69_0= rulePropagationPoint ) )*
                    loop30:
                    do {
                        int alt30=2;
                        int LA30_0 = input.LA(1);

                        if ( (LA30_0==RULE_ID) ) {
                            int LA30_1 = input.LA(2);

                            if ( (LA30_1==Colon) ) {
                                int LA30_3 = input.LA(3);

                                if ( (LA30_3==Propagation) ) {
                                    alt30=1;
                                }


                            }


                        }


                        switch (alt30) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:695:5: (lv_points_69_0= rulePropagationPoint )
                    	    {
                    	    // InternalErrorModelParser.g:695:5: (lv_points_69_0= rulePropagationPoint )
                    	    // InternalErrorModelParser.g:696:6: lv_points_69_0= rulePropagationPoint
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getPointsPropagationPointParserRuleCall_9_2_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_points_69_0=rulePropagationPoint();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"points",
                    	    							lv_points_69_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationPoint");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:713:4: ( (lv_paths_70_0= rulePropagationPath ) )*
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

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


                        switch (alt31) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:714:5: (lv_paths_70_0= rulePropagationPath )
                    	    {
                    	    // InternalErrorModelParser.g:714:5: (lv_paths_70_0= rulePropagationPath )
                    	    // InternalErrorModelParser.g:715:6: lv_paths_70_0= rulePropagationPath
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getPathsPropagationPathParserRuleCall_9_3_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_paths_70_0=rulePropagationPath();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"paths",
                    	    							lv_paths_70_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationPath");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    otherlv_71=(Token)match(input,End,FollowSets000.FOLLOW_37); 

                    				newLeafNode(otherlv_71, grammarAccess.getErrorModelSubclauseAccess().getEndKeyword_9_4());
                    			
                    otherlv_72=(Token)match(input,Paths,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_72, grammarAccess.getErrorModelSubclauseAccess().getPathsKeyword_9_5());
                    			
                    otherlv_73=(Token)match(input,Semicolon,FollowSets000.FOLLOW_38); 

                    				newLeafNode(otherlv_73, grammarAccess.getErrorModelSubclauseAccess().getSemicolonKeyword_9_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:745:3: (otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+ )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==Properties) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // InternalErrorModelParser.g:746:4: otherlv_74= Properties ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+
                    {
                    otherlv_74=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_74, grammarAccess.getErrorModelSubclauseAccess().getPropertiesKeyword_10_0());
                    			
                    // InternalErrorModelParser.g:750:4: ( (lv_properties_75_0= ruleEMV2PropertyAssociation ) )+
                    int cnt33=0;
                    loop33:
                    do {
                        int alt33=2;
                        int LA33_0 = input.LA(1);

                        if ( (LA33_0==RULE_ID) ) {
                            alt33=1;
                        }


                        switch (alt33) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:751:5: (lv_properties_75_0= ruleEMV2PropertyAssociation )
                    	    {
                    	    // InternalErrorModelParser.g:751:5: (lv_properties_75_0= ruleEMV2PropertyAssociation )
                    	    // InternalErrorModelParser.g:752:6: lv_properties_75_0= ruleEMV2PropertyAssociation
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorModelSubclauseAccess().getPropertiesEMV2PropertyAssociationParserRuleCall_10_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_39);
                    	    lv_properties_75_0=ruleEMV2PropertyAssociation();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorModelSubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"properties",
                    	    							lv_properties_75_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PropertyAssociation");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt33 >= 1 ) break loop33;
                                EarlyExitException eee =
                                    new EarlyExitException(33, input);
                                throw eee;
                        }
                        cnt33++;
                    } while (true);


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2Subclause"
    // InternalErrorModelParser.g:774:1: entryRuleEMV2Subclause returns [EObject current=null] : iv_ruleEMV2Subclause= ruleEMV2Subclause EOF ;
    public final EObject entryRuleEMV2Subclause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2Subclause = null;


        try {
            // InternalErrorModelParser.g:774:54: (iv_ruleEMV2Subclause= ruleEMV2Subclause EOF )
            // InternalErrorModelParser.g:775:2: iv_ruleEMV2Subclause= ruleEMV2Subclause EOF
            {
             newCompositeNode(grammarAccess.getEMV2SubclauseRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2Subclause=ruleEMV2Subclause();

            state._fsp--;

             current =iv_ruleEMV2Subclause; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2Subclause"
    // InternalErrorModelParser.g:781:1: ruleEMV2Subclause returns [EObject current=null] : ( () otherlv_1= Subclause ( (lv_name_2_0= ruleQCREF ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )? (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )? (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )? (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )? (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )? (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )? (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )? (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )? (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )? otherlv_78= End otherlv_79= Subclause otherlv_80= Semicolon ) ;
    public final EObject ruleEMV2Subclause() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_18=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token otherlv_29=null;
        Token otherlv_30=null;
        Token otherlv_31=null;
        Token otherlv_32=null;
        Token otherlv_33=null;
        Token otherlv_34=null;
        Token otherlv_36=null;
        Token otherlv_37=null;
        Token otherlv_39=null;
        Token otherlv_41=null;
        Token otherlv_43=null;
        Token otherlv_45=null;
        Token otherlv_46=null;
        Token otherlv_48=null;
        Token otherlv_49=null;
        Token otherlv_50=null;
        Token otherlv_51=null;
        Token otherlv_52=null;
        Token otherlv_53=null;
        Token otherlv_54=null;
        Token otherlv_56=null;
        Token otherlv_57=null;
        Token otherlv_58=null;
        Token otherlv_59=null;
        Token otherlv_60=null;
        Token otherlv_61=null;
        Token otherlv_62=null;
        Token otherlv_64=null;
        Token otherlv_66=null;
        Token otherlv_67=null;
        Token otherlv_68=null;
        Token otherlv_69=null;
        Token otherlv_70=null;
        Token otherlv_73=null;
        Token otherlv_74=null;
        Token otherlv_75=null;
        Token otherlv_76=null;
        Token otherlv_78=null;
        Token otherlv_79=null;
        Token otherlv_80=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_propagations_24_0 = null;

        EObject lv_flows_26_0 = null;

        EObject lv_events_38_0 = null;

        EObject lv_transitions_40_0 = null;

        EObject lv_outgoingPropagationConditions_42_0 = null;

        EObject lv_errorDetections_44_0 = null;

        EObject lv_errorStateToModeMappings_47_0 = null;

        EObject lv_states_55_0 = null;

        EObject lv_connectionErrorSources_65_0 = null;

        EObject lv_points_71_0 = null;

        EObject lv_paths_72_0 = null;

        EObject lv_properties_77_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:787:2: ( ( () otherlv_1= Subclause ( (lv_name_2_0= ruleQCREF ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )? (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )? (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )? (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )? (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )? (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )? (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )? (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )? (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )? otherlv_78= End otherlv_79= Subclause otherlv_80= Semicolon ) )
            // InternalErrorModelParser.g:788:2: ( () otherlv_1= Subclause ( (lv_name_2_0= ruleQCREF ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )? (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )? (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )? (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )? (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )? (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )? (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )? (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )? (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )? otherlv_78= End otherlv_79= Subclause otherlv_80= Semicolon )
            {
            // InternalErrorModelParser.g:788:2: ( () otherlv_1= Subclause ( (lv_name_2_0= ruleQCREF ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )? (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )? (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )? (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )? (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )? (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )? (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )? (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )? (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )? otherlv_78= End otherlv_79= Subclause otherlv_80= Semicolon )
            // InternalErrorModelParser.g:789:3: () otherlv_1= Subclause ( (lv_name_2_0= ruleQCREF ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )? (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )? (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )? (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )? (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )? (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )? (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )? (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )? (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )? otherlv_78= End otherlv_79= Subclause otherlv_80= Semicolon
            {
            // InternalErrorModelParser.g:789:3: ()
            // InternalErrorModelParser.g:790:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getEMV2SubclauseAccess().getErrorModelSubclauseAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,Subclause,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getEMV2SubclauseAccess().getSubclauseKeyword_1());
            		
            // InternalErrorModelParser.g:800:3: ( (lv_name_2_0= ruleQCREF ) )
            // InternalErrorModelParser.g:801:4: (lv_name_2_0= ruleQCREF )
            {
            // InternalErrorModelParser.g:801:4: (lv_name_2_0= ruleQCREF )
            // InternalErrorModelParser.g:802:5: lv_name_2_0= ruleQCREF
            {

            					newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getNameQCREFParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_40);
            lv_name_2_0=ruleQCREF();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
            					}
            					set(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.QCREF");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:819:3: (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==Use) ) {
                int LA36_1 = input.LA(2);

                if ( (LA36_1==Types) ) {
                    alt36=1;
                }
            }
            switch (alt36) {
                case 1 :
                    // InternalErrorModelParser.g:820:4: otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon
                    {
                    otherlv_3=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_3, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_3_0());
                    			
                    otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getEMV2SubclauseAccess().getTypesKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:828:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:829:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:829:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:830:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getUseTypesErrorModelLibraryCrossReference_3_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_6);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:844:4: (otherlv_6= Comma ( ( ruleQEMREF ) ) )*
                    loop35:
                    do {
                        int alt35=2;
                        int LA35_0 = input.LA(1);

                        if ( (LA35_0==Comma) ) {
                            alt35=1;
                        }


                        switch (alt35) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:845:5: otherlv_6= Comma ( ( ruleQEMREF ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getEMV2SubclauseAccess().getCommaKeyword_3_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:849:5: ( ( ruleQEMREF ) )
                    	    // InternalErrorModelParser.g:850:6: ( ruleQEMREF )
                    	    {
                    	    // InternalErrorModelParser.g:850:6: ( ruleQEMREF )
                    	    // InternalErrorModelParser.g:851:7: ruleQEMREF
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getUseTypesErrorModelLibraryCrossReference_3_3_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    ruleQEMREF();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_40); 

                    				newLeafNode(otherlv_8, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_3_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:871:3: (otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==Use) ) {
                int LA37_1 = input.LA(2);

                if ( (LA37_1==Type) ) {
                    alt37=1;
                }
            }
            switch (alt37) {
                case 1 :
                    // InternalErrorModelParser.g:872:4: otherlv_9= Use otherlv_10= Type otherlv_11= Equivalence ( ( ruleQEMREF ) ) otherlv_13= Semicolon
                    {
                    otherlv_9=(Token)match(input,Use,FollowSets000.FOLLOW_8); 

                    				newLeafNode(otherlv_9, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_4_0());
                    			
                    otherlv_10=(Token)match(input,Type,FollowSets000.FOLLOW_9); 

                    				newLeafNode(otherlv_10, grammarAccess.getEMV2SubclauseAccess().getTypeKeyword_4_1());
                    			
                    otherlv_11=(Token)match(input,Equivalence,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_11, grammarAccess.getEMV2SubclauseAccess().getEquivalenceKeyword_4_2());
                    			
                    // InternalErrorModelParser.g:884:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:885:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:885:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:886:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getTypeEquivalenceTypeMappingSetCrossReference_4_3_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_13=(Token)match(input,Semicolon,FollowSets000.FOLLOW_40); 

                    				newLeafNode(otherlv_13, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_4_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:905:3: (otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==Use) ) {
                int LA38_1 = input.LA(2);

                if ( (LA38_1==Mappings) ) {
                    alt38=1;
                }
            }
            switch (alt38) {
                case 1 :
                    // InternalErrorModelParser.g:906:4: otherlv_14= Use otherlv_15= Mappings ( ( ruleQEMREF ) ) otherlv_17= Semicolon
                    {
                    otherlv_14=(Token)match(input,Use,FollowSets000.FOLLOW_11); 

                    				newLeafNode(otherlv_14, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_5_0());
                    			
                    otherlv_15=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_15, grammarAccess.getEMV2SubclauseAccess().getMappingsKeyword_5_1());
                    			
                    // InternalErrorModelParser.g:914:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:915:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:915:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:916:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getTypeMappingSetTypeMappingSetCrossReference_5_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_17=(Token)match(input,Semicolon,FollowSets000.FOLLOW_40); 

                    				newLeafNode(otherlv_17, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_5_3());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:935:3: (otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==Use) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // InternalErrorModelParser.g:936:4: otherlv_18= Use otherlv_19= Behavior ( ( ruleQEMREF ) ) otherlv_21= Semicolon
                    {
                    otherlv_18=(Token)match(input,Use,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_18, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_6_0());
                    			
                    otherlv_19=(Token)match(input,Behavior,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_19, grammarAccess.getEMV2SubclauseAccess().getBehaviorKeyword_6_1());
                    			
                    // InternalErrorModelParser.g:944:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:945:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:945:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:946:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getUseBehaviorErrorBehaviorStateMachineCrossReference_6_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_21=(Token)match(input,Semicolon,FollowSets000.FOLLOW_41); 

                    				newLeafNode(otherlv_21, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_6_3());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:965:3: (otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon )?
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==Error) ) {
                alt43=1;
            }
            switch (alt43) {
                case 1 :
                    // InternalErrorModelParser.g:966:4: otherlv_22= Error otherlv_23= Propagations ( (lv_propagations_24_0= ruleErrorPropagation ) )* (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )? otherlv_27= End otherlv_28= Propagations otherlv_29= Semicolon
                    {
                    otherlv_22=(Token)match(input,Error,FollowSets000.FOLLOW_14); 

                    				newLeafNode(otherlv_22, grammarAccess.getEMV2SubclauseAccess().getErrorKeyword_7_0());
                    			
                    otherlv_23=(Token)match(input,Propagations,FollowSets000.FOLLOW_15); 

                    				newLeafNode(otherlv_23, grammarAccess.getEMV2SubclauseAccess().getPropagationsKeyword_7_1());
                    			
                    // InternalErrorModelParser.g:974:4: ( (lv_propagations_24_0= ruleErrorPropagation ) )*
                    loop40:
                    do {
                        int alt40=2;
                        int LA40_0 = input.LA(1);

                        if ( (LA40_0==Connection||LA40_0==Processor||LA40_0==Bindings||LA40_0==Binding||LA40_0==Access||LA40_0==Memory||LA40_0==RULE_ID) ) {
                            alt40=1;
                        }


                        switch (alt40) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:975:5: (lv_propagations_24_0= ruleErrorPropagation )
                    	    {
                    	    // InternalErrorModelParser.g:975:5: (lv_propagations_24_0= ruleErrorPropagation )
                    	    // InternalErrorModelParser.g:976:6: lv_propagations_24_0= ruleErrorPropagation
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getPropagationsErrorPropagationParserRuleCall_7_2_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_15);
                    	    lv_propagations_24_0=ruleErrorPropagation();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"propagations",
                    	    							lv_propagations_24_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorPropagation");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:993:4: (otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+ )?
                    int alt42=2;
                    int LA42_0 = input.LA(1);

                    if ( (LA42_0==Flows) ) {
                        alt42=1;
                    }
                    switch (alt42) {
                        case 1 :
                            // InternalErrorModelParser.g:994:5: otherlv_25= Flows ( (lv_flows_26_0= ruleErrorFlow ) )+
                            {
                            otherlv_25=(Token)match(input,Flows,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_25, grammarAccess.getEMV2SubclauseAccess().getFlowsKeyword_7_3_0());
                            				
                            // InternalErrorModelParser.g:998:5: ( (lv_flows_26_0= ruleErrorFlow ) )+
                            int cnt41=0;
                            loop41:
                            do {
                                int alt41=2;
                                int LA41_0 = input.LA(1);

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


                                switch (alt41) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:999:6: (lv_flows_26_0= ruleErrorFlow )
                            	    {
                            	    // InternalErrorModelParser.g:999:6: (lv_flows_26_0= ruleErrorFlow )
                            	    // InternalErrorModelParser.g:1000:7: lv_flows_26_0= ruleErrorFlow
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getFlowsErrorFlowParserRuleCall_7_3_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_16);
                            	    lv_flows_26_0=ruleErrorFlow();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"flows",
                            	    								lv_flows_26_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorFlow");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

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


                            }
                            break;

                    }

                    otherlv_27=(Token)match(input,End,FollowSets000.FOLLOW_14); 

                    				newLeafNode(otherlv_27, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_7_4());
                    			
                    otherlv_28=(Token)match(input,Propagations,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_28, grammarAccess.getEMV2SubclauseAccess().getPropagationsKeyword_7_5());
                    			
                    otherlv_29=(Token)match(input,Semicolon,FollowSets000.FOLLOW_42); 

                    				newLeafNode(otherlv_29, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_7_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1031:3: (otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon )?
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==Component) ) {
                alt55=1;
            }
            switch (alt55) {
                case 1 :
                    // InternalErrorModelParser.g:1032:4: otherlv_30= Component otherlv_31= Error otherlv_32= Behavior (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )? (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )? (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )? (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )? otherlv_48= End otherlv_49= Component otherlv_50= Semicolon
                    {
                    otherlv_30=(Token)match(input,Component,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_30, grammarAccess.getEMV2SubclauseAccess().getComponentKeyword_8_0());
                    			
                    otherlv_31=(Token)match(input,Error,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_31, grammarAccess.getEMV2SubclauseAccess().getErrorKeyword_8_1());
                    			
                    otherlv_32=(Token)match(input,Behavior,FollowSets000.FOLLOW_19); 

                    				newLeafNode(otherlv_32, grammarAccess.getEMV2SubclauseAccess().getBehaviorKeyword_8_2());
                    			
                    // InternalErrorModelParser.g:1044:4: (otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon )?
                    int alt44=2;
                    int LA44_0 = input.LA(1);

                    if ( (LA44_0==Use) ) {
                        alt44=1;
                    }
                    switch (alt44) {
                        case 1 :
                            // InternalErrorModelParser.g:1045:5: otherlv_33= Use otherlv_34= Transformations ( ( ruleQEMREF ) ) otherlv_36= Semicolon
                            {
                            otherlv_33=(Token)match(input,Use,FollowSets000.FOLLOW_20); 

                            					newLeafNode(otherlv_33, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_8_3_0());
                            				
                            otherlv_34=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_34, grammarAccess.getEMV2SubclauseAccess().getTransformationsKeyword_8_3_1());
                            				
                            // InternalErrorModelParser.g:1053:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:1054:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:1054:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:1055:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getUseTransformationTypeTransformationSetCrossReference_8_3_2_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_10);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            otherlv_36=(Token)match(input,Semicolon,FollowSets000.FOLLOW_21); 

                            					newLeafNode(otherlv_36, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_8_3_3());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1074:4: (otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+ )?
                    int alt46=2;
                    int LA46_0 = input.LA(1);

                    if ( (LA46_0==Events) ) {
                        alt46=1;
                    }
                    switch (alt46) {
                        case 1 :
                            // InternalErrorModelParser.g:1075:5: otherlv_37= Events ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+
                            {
                            otherlv_37=(Token)match(input,Events,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_37, grammarAccess.getEMV2SubclauseAccess().getEventsKeyword_8_4_0());
                            				
                            // InternalErrorModelParser.g:1079:5: ( (lv_events_38_0= ruleErrorBehaviorEvent ) )+
                            int cnt45=0;
                            loop45:
                            do {
                                int alt45=2;
                                int LA45_0 = input.LA(1);

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


                                switch (alt45) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1080:6: (lv_events_38_0= ruleErrorBehaviorEvent )
                            	    {
                            	    // InternalErrorModelParser.g:1080:6: (lv_events_38_0= ruleErrorBehaviorEvent )
                            	    // InternalErrorModelParser.g:1081:7: lv_events_38_0= ruleErrorBehaviorEvent
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getEventsErrorBehaviorEventParserRuleCall_8_4_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_22);
                            	    lv_events_38_0=ruleErrorBehaviorEvent();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"events",
                            	    								lv_events_38_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorEvent");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt45 >= 1 ) break loop45;
                                        EarlyExitException eee =
                                            new EarlyExitException(45, input);
                                        throw eee;
                                }
                                cnt45++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1099:4: (otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+ )?
                    int alt48=2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0==Transitions) ) {
                        alt48=1;
                    }
                    switch (alt48) {
                        case 1 :
                            // InternalErrorModelParser.g:1100:5: otherlv_39= Transitions ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+
                            {
                            otherlv_39=(Token)match(input,Transitions,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_39, grammarAccess.getEMV2SubclauseAccess().getTransitionsKeyword_8_5_0());
                            				
                            // InternalErrorModelParser.g:1104:5: ( (lv_transitions_40_0= ruleErrorBehaviorTransition ) )+
                            int cnt47=0;
                            loop47:
                            do {
                                int alt47=2;
                                int LA47_0 = input.LA(1);

                                if ( (LA47_0==All||LA47_0==RULE_ID) ) {
                                    alt47=1;
                                }


                                switch (alt47) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1105:6: (lv_transitions_40_0= ruleErrorBehaviorTransition )
                            	    {
                            	    // InternalErrorModelParser.g:1105:6: (lv_transitions_40_0= ruleErrorBehaviorTransition )
                            	    // InternalErrorModelParser.g:1106:7: lv_transitions_40_0= ruleErrorBehaviorTransition
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getTransitionsErrorBehaviorTransitionParserRuleCall_8_5_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_24);
                            	    lv_transitions_40_0=ruleErrorBehaviorTransition();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"transitions",
                            	    								lv_transitions_40_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorTransition");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

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


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1124:4: (otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+ )?
                    int alt50=2;
                    int LA50_0 = input.LA(1);

                    if ( (LA50_0==Propagations) ) {
                        alt50=1;
                    }
                    switch (alt50) {
                        case 1 :
                            // InternalErrorModelParser.g:1125:5: otherlv_41= Propagations ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+
                            {
                            otherlv_41=(Token)match(input,Propagations,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_41, grammarAccess.getEMV2SubclauseAccess().getPropagationsKeyword_8_6_0());
                            				
                            // InternalErrorModelParser.g:1129:5: ( (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition ) )+
                            int cnt49=0;
                            loop49:
                            do {
                                int alt49=2;
                                int LA49_0 = input.LA(1);

                                if ( (LA49_0==All||LA49_0==RULE_ID) ) {
                                    alt49=1;
                                }


                                switch (alt49) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1130:6: (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition )
                            	    {
                            	    // InternalErrorModelParser.g:1130:6: (lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition )
                            	    // InternalErrorModelParser.g:1131:7: lv_outgoingPropagationConditions_42_0= ruleOutgoingPropagationCondition
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getOutgoingPropagationConditionsOutgoingPropagationConditionParserRuleCall_8_6_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_25);
                            	    lv_outgoingPropagationConditions_42_0=ruleOutgoingPropagationCondition();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"outgoingPropagationConditions",
                            	    								lv_outgoingPropagationConditions_42_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.OutgoingPropagationCondition");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

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


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1149:4: (otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+ )?
                    int alt52=2;
                    int LA52_0 = input.LA(1);

                    if ( (LA52_0==Detections) ) {
                        alt52=1;
                    }
                    switch (alt52) {
                        case 1 :
                            // InternalErrorModelParser.g:1150:5: otherlv_43= Detections ( (lv_errorDetections_44_0= ruleErrorDetection ) )+
                            {
                            otherlv_43=(Token)match(input,Detections,FollowSets000.FOLLOW_23); 

                            					newLeafNode(otherlv_43, grammarAccess.getEMV2SubclauseAccess().getDetectionsKeyword_8_7_0());
                            				
                            // InternalErrorModelParser.g:1154:5: ( (lv_errorDetections_44_0= ruleErrorDetection ) )+
                            int cnt51=0;
                            loop51:
                            do {
                                int alt51=2;
                                int LA51_0 = input.LA(1);

                                if ( (LA51_0==All||LA51_0==RULE_ID) ) {
                                    alt51=1;
                                }


                                switch (alt51) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1155:6: (lv_errorDetections_44_0= ruleErrorDetection )
                            	    {
                            	    // InternalErrorModelParser.g:1155:6: (lv_errorDetections_44_0= ruleErrorDetection )
                            	    // InternalErrorModelParser.g:1156:7: lv_errorDetections_44_0= ruleErrorDetection
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getErrorDetectionsErrorDetectionParserRuleCall_8_7_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_26);
                            	    lv_errorDetections_44_0=ruleErrorDetection();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"errorDetections",
                            	    								lv_errorDetections_44_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorDetection");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt51 >= 1 ) break loop51;
                                        EarlyExitException eee =
                                            new EarlyExitException(51, input);
                                        throw eee;
                                }
                                cnt51++;
                            } while (true);


                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1174:4: (otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+ )?
                    int alt54=2;
                    int LA54_0 = input.LA(1);

                    if ( (LA54_0==Mode) ) {
                        alt54=1;
                    }
                    switch (alt54) {
                        case 1 :
                            // InternalErrorModelParser.g:1175:5: otherlv_45= Mode otherlv_46= Mappings ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+
                            {
                            otherlv_45=(Token)match(input,Mode,FollowSets000.FOLLOW_11); 

                            					newLeafNode(otherlv_45, grammarAccess.getEMV2SubclauseAccess().getModeKeyword_8_8_0());
                            				
                            otherlv_46=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_46, grammarAccess.getEMV2SubclauseAccess().getMappingsKeyword_8_8_1());
                            				
                            // InternalErrorModelParser.g:1183:5: ( (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping ) )+
                            int cnt53=0;
                            loop53:
                            do {
                                int alt53=2;
                                int LA53_0 = input.LA(1);

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


                                switch (alt53) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1184:6: (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping )
                            	    {
                            	    // InternalErrorModelParser.g:1184:6: (lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping )
                            	    // InternalErrorModelParser.g:1185:7: lv_errorStateToModeMappings_47_0= ruleErrorStateToModeMapping
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getErrorStateToModeMappingsErrorStateToModeMappingParserRuleCall_8_8_2_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_16);
                            	    lv_errorStateToModeMappings_47_0=ruleErrorStateToModeMapping();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"errorStateToModeMappings",
                            	    								lv_errorStateToModeMappings_47_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorStateToModeMapping");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt53 >= 1 ) break loop53;
                                        EarlyExitException eee =
                                            new EarlyExitException(53, input);
                                        throw eee;
                                }
                                cnt53++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_48=(Token)match(input,End,FollowSets000.FOLLOW_27); 

                    				newLeafNode(otherlv_48, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_8_9());
                    			
                    otherlv_49=(Token)match(input,Component,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_49, grammarAccess.getEMV2SubclauseAccess().getComponentKeyword_8_10());
                    			
                    otherlv_50=(Token)match(input,Semicolon,FollowSets000.FOLLOW_43); 

                    				newLeafNode(otherlv_50, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_8_11());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1216:3: (otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon )?
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==Composite) ) {
                alt58=1;
            }
            switch (alt58) {
                case 1 :
                    // InternalErrorModelParser.g:1217:4: otherlv_51= Composite otherlv_52= Error otherlv_53= Behavior (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )? otherlv_56= End otherlv_57= Composite otherlv_58= Semicolon
                    {
                    otherlv_51=(Token)match(input,Composite,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_51, grammarAccess.getEMV2SubclauseAccess().getCompositeKeyword_9_0());
                    			
                    otherlv_52=(Token)match(input,Error,FollowSets000.FOLLOW_12); 

                    				newLeafNode(otherlv_52, grammarAccess.getEMV2SubclauseAccess().getErrorKeyword_9_1());
                    			
                    otherlv_53=(Token)match(input,Behavior,FollowSets000.FOLLOW_29); 

                    				newLeafNode(otherlv_53, grammarAccess.getEMV2SubclauseAccess().getBehaviorKeyword_9_2());
                    			
                    // InternalErrorModelParser.g:1229:4: (otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+ )?
                    int alt57=2;
                    int LA57_0 = input.LA(1);

                    if ( (LA57_0==States) ) {
                        alt57=1;
                    }
                    switch (alt57) {
                        case 1 :
                            // InternalErrorModelParser.g:1230:5: otherlv_54= States ( (lv_states_55_0= ruleCompositeState ) )+
                            {
                            otherlv_54=(Token)match(input,States,FollowSets000.FOLLOW_30); 

                            					newLeafNode(otherlv_54, grammarAccess.getEMV2SubclauseAccess().getStatesKeyword_9_3_0());
                            				
                            // InternalErrorModelParser.g:1234:5: ( (lv_states_55_0= ruleCompositeState ) )+
                            int cnt56=0;
                            loop56:
                            do {
                                int alt56=2;
                                int LA56_0 = input.LA(1);

                                if ( (LA56_0==LeftSquareBracket||LA56_0==RULE_ID) ) {
                                    alt56=1;
                                }


                                switch (alt56) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1235:6: (lv_states_55_0= ruleCompositeState )
                            	    {
                            	    // InternalErrorModelParser.g:1235:6: (lv_states_55_0= ruleCompositeState )
                            	    // InternalErrorModelParser.g:1236:7: lv_states_55_0= ruleCompositeState
                            	    {

                            	    							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getStatesCompositeStateParserRuleCall_9_3_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_31);
                            	    lv_states_55_0=ruleCompositeState();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"states",
                            	    								lv_states_55_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.CompositeState");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt56 >= 1 ) break loop56;
                                        EarlyExitException eee =
                                            new EarlyExitException(56, input);
                                        throw eee;
                                }
                                cnt56++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_56=(Token)match(input,End,FollowSets000.FOLLOW_32); 

                    				newLeafNode(otherlv_56, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_9_4());
                    			
                    otherlv_57=(Token)match(input,Composite,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_57, grammarAccess.getEMV2SubclauseAccess().getCompositeKeyword_9_5());
                    			
                    otherlv_58=(Token)match(input,Semicolon,FollowSets000.FOLLOW_44); 

                    				newLeafNode(otherlv_58, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_9_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1267:3: (otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon )?
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==Connection) ) {
                alt61=1;
            }
            switch (alt61) {
                case 1 :
                    // InternalErrorModelParser.g:1268:4: otherlv_59= Connection otherlv_60= Error (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )? ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )* otherlv_66= End otherlv_67= Connection otherlv_68= Semicolon
                    {
                    otherlv_59=(Token)match(input,Connection,FollowSets000.FOLLOW_18); 

                    				newLeafNode(otherlv_59, grammarAccess.getEMV2SubclauseAccess().getConnectionKeyword_10_0());
                    			
                    otherlv_60=(Token)match(input,Error,FollowSets000.FOLLOW_34); 

                    				newLeafNode(otherlv_60, grammarAccess.getEMV2SubclauseAccess().getErrorKeyword_10_1());
                    			
                    // InternalErrorModelParser.g:1276:4: (otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon )?
                    int alt59=2;
                    int LA59_0 = input.LA(1);

                    if ( (LA59_0==Use) ) {
                        alt59=1;
                    }
                    switch (alt59) {
                        case 1 :
                            // InternalErrorModelParser.g:1277:5: otherlv_61= Use otherlv_62= Transformations ( ( ruleQEMREF ) ) otherlv_64= Semicolon
                            {
                            otherlv_61=(Token)match(input,Use,FollowSets000.FOLLOW_20); 

                            					newLeafNode(otherlv_61, grammarAccess.getEMV2SubclauseAccess().getUseKeyword_10_2_0());
                            				
                            otherlv_62=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_62, grammarAccess.getEMV2SubclauseAccess().getTransformationsKeyword_10_2_1());
                            				
                            // InternalErrorModelParser.g:1285:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:1286:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:1286:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:1287:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getEMV2SubclauseRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getTypeTransformationSetTypeTransformationSetCrossReference_10_2_2_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_10);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            otherlv_64=(Token)match(input,Semicolon,FollowSets000.FOLLOW_16); 

                            					newLeafNode(otherlv_64, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_10_2_3());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1306:4: ( (lv_connectionErrorSources_65_0= ruleErrorSource ) )*
                    loop60:
                    do {
                        int alt60=2;
                        int LA60_0 = input.LA(1);

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


                        switch (alt60) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1307:5: (lv_connectionErrorSources_65_0= ruleErrorSource )
                    	    {
                    	    // InternalErrorModelParser.g:1307:5: (lv_connectionErrorSources_65_0= ruleErrorSource )
                    	    // InternalErrorModelParser.g:1308:6: lv_connectionErrorSources_65_0= ruleErrorSource
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getConnectionErrorSourcesErrorSourceParserRuleCall_10_3_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_connectionErrorSources_65_0=ruleErrorSource();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"connectionErrorSources",
                    	    							lv_connectionErrorSources_65_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorSource");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    otherlv_66=(Token)match(input,End,FollowSets000.FOLLOW_35); 

                    				newLeafNode(otherlv_66, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_10_4());
                    			
                    otherlv_67=(Token)match(input,Connection,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_67, grammarAccess.getEMV2SubclauseAccess().getConnectionKeyword_10_5());
                    			
                    otherlv_68=(Token)match(input,Semicolon,FollowSets000.FOLLOW_45); 

                    				newLeafNode(otherlv_68, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_10_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1338:3: (otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon )?
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==Propagation) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // InternalErrorModelParser.g:1339:4: otherlv_69= Propagation otherlv_70= Paths ( (lv_points_71_0= rulePropagationPoint ) )* ( (lv_paths_72_0= rulePropagationPath ) )* otherlv_73= End otherlv_74= Paths otherlv_75= Semicolon
                    {
                    otherlv_69=(Token)match(input,Propagation,FollowSets000.FOLLOW_37); 

                    				newLeafNode(otherlv_69, grammarAccess.getEMV2SubclauseAccess().getPropagationKeyword_11_0());
                    			
                    otherlv_70=(Token)match(input,Paths,FollowSets000.FOLLOW_16); 

                    				newLeafNode(otherlv_70, grammarAccess.getEMV2SubclauseAccess().getPathsKeyword_11_1());
                    			
                    // InternalErrorModelParser.g:1347:4: ( (lv_points_71_0= rulePropagationPoint ) )*
                    loop62:
                    do {
                        int alt62=2;
                        int LA62_0 = input.LA(1);

                        if ( (LA62_0==RULE_ID) ) {
                            int LA62_1 = input.LA(2);

                            if ( (LA62_1==Colon) ) {
                                int LA62_3 = input.LA(3);

                                if ( (LA62_3==Propagation) ) {
                                    alt62=1;
                                }


                            }


                        }


                        switch (alt62) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1348:5: (lv_points_71_0= rulePropagationPoint )
                    	    {
                    	    // InternalErrorModelParser.g:1348:5: (lv_points_71_0= rulePropagationPoint )
                    	    // InternalErrorModelParser.g:1349:6: lv_points_71_0= rulePropagationPoint
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getPointsPropagationPointParserRuleCall_11_2_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_points_71_0=rulePropagationPoint();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"points",
                    	    							lv_points_71_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationPoint");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:1366:4: ( (lv_paths_72_0= rulePropagationPath ) )*
                    loop63:
                    do {
                        int alt63=2;
                        int LA63_0 = input.LA(1);

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


                        switch (alt63) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1367:5: (lv_paths_72_0= rulePropagationPath )
                    	    {
                    	    // InternalErrorModelParser.g:1367:5: (lv_paths_72_0= rulePropagationPath )
                    	    // InternalErrorModelParser.g:1368:6: lv_paths_72_0= rulePropagationPath
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getPathsPropagationPathParserRuleCall_11_3_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_paths_72_0=rulePropagationPath();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"paths",
                    	    							lv_paths_72_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationPath");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    otherlv_73=(Token)match(input,End,FollowSets000.FOLLOW_37); 

                    				newLeafNode(otherlv_73, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_11_4());
                    			
                    otherlv_74=(Token)match(input,Paths,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_74, grammarAccess.getEMV2SubclauseAccess().getPathsKeyword_11_5());
                    			
                    otherlv_75=(Token)match(input,Semicolon,FollowSets000.FOLLOW_46); 

                    				newLeafNode(otherlv_75, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_11_6());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1398:3: (otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+ )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==Properties) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // InternalErrorModelParser.g:1399:4: otherlv_76= Properties ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+
                    {
                    otherlv_76=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_76, grammarAccess.getEMV2SubclauseAccess().getPropertiesKeyword_12_0());
                    			
                    // InternalErrorModelParser.g:1403:4: ( (lv_properties_77_0= ruleEMV2PropertyAssociation ) )+
                    int cnt65=0;
                    loop65:
                    do {
                        int alt65=2;
                        int LA65_0 = input.LA(1);

                        if ( (LA65_0==RULE_ID) ) {
                            alt65=1;
                        }


                        switch (alt65) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1404:5: (lv_properties_77_0= ruleEMV2PropertyAssociation )
                    	    {
                    	    // InternalErrorModelParser.g:1404:5: (lv_properties_77_0= ruleEMV2PropertyAssociation )
                    	    // InternalErrorModelParser.g:1405:6: lv_properties_77_0= ruleEMV2PropertyAssociation
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2SubclauseAccess().getPropertiesEMV2PropertyAssociationParserRuleCall_12_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_properties_77_0=ruleEMV2PropertyAssociation();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2SubclauseRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"properties",
                    	    							lv_properties_77_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PropertyAssociation");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt65 >= 1 ) break loop65;
                                EarlyExitException eee =
                                    new EarlyExitException(65, input);
                                throw eee;
                        }
                        cnt65++;
                    } while (true);


                    }
                    break;

            }

            otherlv_78=(Token)match(input,End,FollowSets000.FOLLOW_47); 

            			newLeafNode(otherlv_78, grammarAccess.getEMV2SubclauseAccess().getEndKeyword_13());
            		
            otherlv_79=(Token)match(input,Subclause,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_79, grammarAccess.getEMV2SubclauseAccess().getSubclauseKeyword_14());
            		
            otherlv_80=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_80, grammarAccess.getEMV2SubclauseAccess().getSemicolonKeyword_15());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorModelLibrary"
    // InternalErrorModelParser.g:1439:1: entryRuleErrorModelLibrary returns [EObject current=null] : iv_ruleErrorModelLibrary= ruleErrorModelLibrary EOF ;
    public final EObject entryRuleErrorModelLibrary() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorModelLibrary = null;


        try {
            // InternalErrorModelParser.g:1439:58: (iv_ruleErrorModelLibrary= ruleErrorModelLibrary EOF )
            // InternalErrorModelParser.g:1440:2: iv_ruleErrorModelLibrary= ruleErrorModelLibrary EOF
            {
             newCompositeNode(grammarAccess.getErrorModelLibraryRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorModelLibrary=ruleErrorModelLibrary();

            state._fsp--;

             current =iv_ruleErrorModelLibrary; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorModelLibrary"
    // InternalErrorModelParser.g:1446:1: ruleErrorModelLibrary returns [EObject current=null] : ( () (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )? ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_22_0= ruleTypeMappingSet ) )* ( (lv_transformations_23_0= ruleTypeTransformationSet ) )* ) ;
    public final EObject ruleErrorModelLibrary() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        EObject lv_types_14_0 = null;

        EObject lv_typesets_15_0 = null;

        EObject lv_properties_17_0 = null;

        EObject lv_behaviors_21_0 = null;

        EObject lv_mappings_22_0 = null;

        EObject lv_transformations_23_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:1452:2: ( ( () (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )? ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_22_0= ruleTypeMappingSet ) )* ( (lv_transformations_23_0= ruleTypeTransformationSet ) )* ) )
            // InternalErrorModelParser.g:1453:2: ( () (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )? ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_22_0= ruleTypeMappingSet ) )* ( (lv_transformations_23_0= ruleTypeTransformationSet ) )* )
            {
            // InternalErrorModelParser.g:1453:2: ( () (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )? ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_22_0= ruleTypeMappingSet ) )* ( (lv_transformations_23_0= ruleTypeTransformationSet ) )* )
            // InternalErrorModelParser.g:1454:3: () (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )? ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_22_0= ruleTypeMappingSet ) )* ( (lv_transformations_23_0= ruleTypeTransformationSet ) )*
            {
            // InternalErrorModelParser.g:1454:3: ()
            // InternalErrorModelParser.g:1455:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getErrorModelLibraryAccess().getErrorModelLibraryAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:1461:3: (otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon )?
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==Error) ) {
                int LA74_1 = input.LA(2);

                if ( (LA74_1==Types) ) {
                    alt74=1;
                }
            }
            switch (alt74) {
                case 1 :
                    // InternalErrorModelParser.g:1462:4: otherlv_1= Error otherlv_2= Types (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )? ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )* (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_18= End otherlv_19= Types otherlv_20= Semicolon
                    {
                    otherlv_1=(Token)match(input,Error,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_1, grammarAccess.getErrorModelLibraryAccess().getErrorKeyword_1_0());
                    			
                    otherlv_2=(Token)match(input,Types,FollowSets000.FOLLOW_48); 

                    				newLeafNode(otherlv_2, grammarAccess.getErrorModelLibraryAccess().getTypesKeyword_1_1());
                    			
                    // InternalErrorModelParser.g:1470:4: (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )?
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( (LA68_0==Use) ) {
                        alt68=1;
                    }
                    switch (alt68) {
                        case 1 :
                            // InternalErrorModelParser.g:1471:5: otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon
                            {
                            otherlv_3=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                            					newLeafNode(otherlv_3, grammarAccess.getErrorModelLibraryAccess().getUseKeyword_1_2_0());
                            				
                            otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_4, grammarAccess.getErrorModelLibraryAccess().getTypesKeyword_1_2_1());
                            				
                            // InternalErrorModelParser.g:1479:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:1480:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:1480:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:1481:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getErrorModelLibraryRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getUseTypesErrorModelLibraryCrossReference_1_2_2_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_6);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            // InternalErrorModelParser.g:1495:5: (otherlv_6= Comma ( ( ruleQEMREF ) ) )*
                            loop67:
                            do {
                                int alt67=2;
                                int LA67_0 = input.LA(1);

                                if ( (LA67_0==Comma) ) {
                                    alt67=1;
                                }


                                switch (alt67) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1496:6: otherlv_6= Comma ( ( ruleQEMREF ) )
                            	    {
                            	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                            	    						newLeafNode(otherlv_6, grammarAccess.getErrorModelLibraryAccess().getCommaKeyword_1_2_3_0());
                            	    					
                            	    // InternalErrorModelParser.g:1500:6: ( ( ruleQEMREF ) )
                            	    // InternalErrorModelParser.g:1501:7: ( ruleQEMREF )
                            	    {
                            	    // InternalErrorModelParser.g:1501:7: ( ruleQEMREF )
                            	    // InternalErrorModelParser.g:1502:8: ruleQEMREF
                            	    {

                            	    								if (current==null) {
                            	    									current = createModelElement(grammarAccess.getErrorModelLibraryRule());
                            	    								}
                            	    							

                            	    								newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getUseTypesErrorModelLibraryCrossReference_1_2_3_1_0());
                            	    							
                            	    pushFollow(FollowSets000.FOLLOW_6);
                            	    ruleQEMREF();

                            	    state._fsp--;


                            	    								afterParserOrEnumRuleCall();
                            	    							

                            	    }


                            	    }


                            	    }
                            	    break;

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

                            otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_49); 

                            					newLeafNode(otherlv_8, grammarAccess.getErrorModelLibraryAccess().getSemicolonKeyword_1_2_4());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1522:4: (otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With )?
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( (LA70_0==Extends) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // InternalErrorModelParser.g:1523:5: otherlv_9= Extends ( ( ruleQEMREF ) ) (otherlv_11= Comma ( ( ruleQEMREF ) ) )* otherlv_13= With
                            {
                            otherlv_9=(Token)match(input,Extends,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_9, grammarAccess.getErrorModelLibraryAccess().getExtendsKeyword_1_3_0());
                            				
                            // InternalErrorModelParser.g:1527:5: ( ( ruleQEMREF ) )
                            // InternalErrorModelParser.g:1528:6: ( ruleQEMREF )
                            {
                            // InternalErrorModelParser.g:1528:6: ( ruleQEMREF )
                            // InternalErrorModelParser.g:1529:7: ruleQEMREF
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getErrorModelLibraryRule());
                            							}
                            						

                            							newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getExtendsErrorModelLibraryCrossReference_1_3_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_50);
                            ruleQEMREF();

                            state._fsp--;


                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }

                            // InternalErrorModelParser.g:1543:5: (otherlv_11= Comma ( ( ruleQEMREF ) ) )*
                            loop69:
                            do {
                                int alt69=2;
                                int LA69_0 = input.LA(1);

                                if ( (LA69_0==Comma) ) {
                                    alt69=1;
                                }


                                switch (alt69) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1544:6: otherlv_11= Comma ( ( ruleQEMREF ) )
                            	    {
                            	    otherlv_11=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                            	    						newLeafNode(otherlv_11, grammarAccess.getErrorModelLibraryAccess().getCommaKeyword_1_3_2_0());
                            	    					
                            	    // InternalErrorModelParser.g:1548:6: ( ( ruleQEMREF ) )
                            	    // InternalErrorModelParser.g:1549:7: ( ruleQEMREF )
                            	    {
                            	    // InternalErrorModelParser.g:1549:7: ( ruleQEMREF )
                            	    // InternalErrorModelParser.g:1550:8: ruleQEMREF
                            	    {

                            	    								if (current==null) {
                            	    									current = createModelElement(grammarAccess.getErrorModelLibraryRule());
                            	    								}
                            	    							

                            	    								newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getExtendsErrorModelLibraryCrossReference_1_3_2_1_0());
                            	    							
                            	    pushFollow(FollowSets000.FOLLOW_50);
                            	    ruleQEMREF();

                            	    state._fsp--;


                            	    								afterParserOrEnumRuleCall();
                            	    							

                            	    }


                            	    }


                            	    }
                            	    break;

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

                            otherlv_13=(Token)match(input,With,FollowSets000.FOLLOW_51); 

                            					newLeafNode(otherlv_13, grammarAccess.getErrorModelLibraryAccess().getWithKeyword_1_3_3());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1570:4: ( ( (lv_types_14_0= ruleTypeDefinition ) ) | ( (lv_typesets_15_0= ruleTypeSetDefinition ) ) )*
                    loop71:
                    do {
                        int alt71=3;
                        int LA71_0 = input.LA(1);

                        if ( (LA71_0==RULE_ID) ) {
                            int LA71_2 = input.LA(2);

                            if ( (LA71_2==Colon) ) {
                                int LA71_3 = input.LA(3);

                                if ( (LA71_3==Type) ) {
                                    int LA71_5 = input.LA(4);

                                    if ( (LA71_5==Extends||LA71_5==Semicolon) ) {
                                        alt71=1;
                                    }
                                    else if ( (LA71_5==Set) ) {
                                        alt71=2;
                                    }


                                }


                            }
                            else if ( (LA71_2==Renames) ) {
                                int LA71_4 = input.LA(3);

                                if ( (LA71_4==Type) ) {
                                    int LA71_6 = input.LA(4);

                                    if ( (LA71_6==RULE_ID) ) {
                                        alt71=1;
                                    }
                                    else if ( (LA71_6==Set) ) {
                                        alt71=2;
                                    }


                                }


                            }


                        }


                        switch (alt71) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1571:5: ( (lv_types_14_0= ruleTypeDefinition ) )
                    	    {
                    	    // InternalErrorModelParser.g:1571:5: ( (lv_types_14_0= ruleTypeDefinition ) )
                    	    // InternalErrorModelParser.g:1572:6: (lv_types_14_0= ruleTypeDefinition )
                    	    {
                    	    // InternalErrorModelParser.g:1572:6: (lv_types_14_0= ruleTypeDefinition )
                    	    // InternalErrorModelParser.g:1573:7: lv_types_14_0= ruleTypeDefinition
                    	    {

                    	    							newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getTypesTypeDefinitionParserRuleCall_1_4_0_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_51);
                    	    lv_types_14_0=ruleTypeDefinition();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"types",
                    	    								lv_types_14_0,
                    	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeDefinition");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // InternalErrorModelParser.g:1591:5: ( (lv_typesets_15_0= ruleTypeSetDefinition ) )
                    	    {
                    	    // InternalErrorModelParser.g:1591:5: ( (lv_typesets_15_0= ruleTypeSetDefinition ) )
                    	    // InternalErrorModelParser.g:1592:6: (lv_typesets_15_0= ruleTypeSetDefinition )
                    	    {
                    	    // InternalErrorModelParser.g:1592:6: (lv_typesets_15_0= ruleTypeSetDefinition )
                    	    // InternalErrorModelParser.g:1593:7: lv_typesets_15_0= ruleTypeSetDefinition
                    	    {

                    	    							newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getTypesetsTypeSetDefinitionParserRuleCall_1_4_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_51);
                    	    lv_typesets_15_0=ruleTypeSetDefinition();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"typesets",
                    	    								lv_typesets_15_0,
                    	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetDefinition");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:1611:4: (otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+ )?
                    int alt73=2;
                    int LA73_0 = input.LA(1);

                    if ( (LA73_0==Properties) ) {
                        alt73=1;
                    }
                    switch (alt73) {
                        case 1 :
                            // InternalErrorModelParser.g:1612:5: otherlv_16= Properties ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+
                            {
                            otherlv_16=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_16, grammarAccess.getErrorModelLibraryAccess().getPropertiesKeyword_1_5_0());
                            				
                            // InternalErrorModelParser.g:1616:5: ( (lv_properties_17_0= ruleBasicEMV2PropertyAssociation ) )+
                            int cnt72=0;
                            loop72:
                            do {
                                int alt72=2;
                                int LA72_0 = input.LA(1);

                                if ( (LA72_0==RULE_ID) ) {
                                    alt72=1;
                                }


                                switch (alt72) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1617:6: (lv_properties_17_0= ruleBasicEMV2PropertyAssociation )
                            	    {
                            	    // InternalErrorModelParser.g:1617:6: (lv_properties_17_0= ruleBasicEMV2PropertyAssociation )
                            	    // InternalErrorModelParser.g:1618:7: lv_properties_17_0= ruleBasicEMV2PropertyAssociation
                            	    {

                            	    							newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getPropertiesBasicEMV2PropertyAssociationParserRuleCall_1_5_1_0());
                            	    						
                            	    pushFollow(FollowSets000.FOLLOW_16);
                            	    lv_properties_17_0=ruleBasicEMV2PropertyAssociation();

                            	    state._fsp--;


                            	    							if (current==null) {
                            	    								current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
                            	    							}
                            	    							add(
                            	    								current,
                            	    								"properties",
                            	    								lv_properties_17_0,
                            	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2PropertyAssociation");
                            	    							afterParserOrEnumRuleCall();
                            	    						

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    if ( cnt72 >= 1 ) break loop72;
                                        EarlyExitException eee =
                                            new EarlyExitException(72, input);
                                        throw eee;
                                }
                                cnt72++;
                            } while (true);


                            }
                            break;

                    }

                    otherlv_18=(Token)match(input,End,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_18, grammarAccess.getErrorModelLibraryAccess().getEndKeyword_1_6());
                    			
                    otherlv_19=(Token)match(input,Types,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_19, grammarAccess.getErrorModelLibraryAccess().getTypesKeyword_1_7());
                    			
                    otherlv_20=(Token)match(input,Semicolon,FollowSets000.FOLLOW_52); 

                    				newLeafNode(otherlv_20, grammarAccess.getErrorModelLibraryAccess().getSemicolonKeyword_1_8());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:1649:3: ( (lv_behaviors_21_0= ruleErrorBehaviorStateMachine ) )*
            loop75:
            do {
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0==Error) ) {
                    alt75=1;
                }


                switch (alt75) {
            	case 1 :
            	    // InternalErrorModelParser.g:1650:4: (lv_behaviors_21_0= ruleErrorBehaviorStateMachine )
            	    {
            	    // InternalErrorModelParser.g:1650:4: (lv_behaviors_21_0= ruleErrorBehaviorStateMachine )
            	    // InternalErrorModelParser.g:1651:5: lv_behaviors_21_0= ruleErrorBehaviorStateMachine
            	    {

            	    					newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getBehaviorsErrorBehaviorStateMachineParserRuleCall_2_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_52);
            	    lv_behaviors_21_0=ruleErrorBehaviorStateMachine();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
            	    					}
            	    					add(
            	    						current,
            	    						"behaviors",
            	    						lv_behaviors_21_0,
            	    						"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorStateMachine");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

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

            // InternalErrorModelParser.g:1668:3: ( (lv_mappings_22_0= ruleTypeMappingSet ) )*
            loop76:
            do {
                int alt76=2;
                int LA76_0 = input.LA(1);

                if ( (LA76_0==Type) ) {
                    int LA76_1 = input.LA(2);

                    if ( (LA76_1==Mappings) ) {
                        alt76=1;
                    }


                }


                switch (alt76) {
            	case 1 :
            	    // InternalErrorModelParser.g:1669:4: (lv_mappings_22_0= ruleTypeMappingSet )
            	    {
            	    // InternalErrorModelParser.g:1669:4: (lv_mappings_22_0= ruleTypeMappingSet )
            	    // InternalErrorModelParser.g:1670:5: lv_mappings_22_0= ruleTypeMappingSet
            	    {

            	    					newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getMappingsTypeMappingSetParserRuleCall_3_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_53);
            	    lv_mappings_22_0=ruleTypeMappingSet();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
            	    					}
            	    					add(
            	    						current,
            	    						"mappings",
            	    						lv_mappings_22_0,
            	    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeMappingSet");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

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

            // InternalErrorModelParser.g:1687:3: ( (lv_transformations_23_0= ruleTypeTransformationSet ) )*
            loop77:
            do {
                int alt77=2;
                int LA77_0 = input.LA(1);

                if ( (LA77_0==Type) ) {
                    alt77=1;
                }


                switch (alt77) {
            	case 1 :
            	    // InternalErrorModelParser.g:1688:4: (lv_transformations_23_0= ruleTypeTransformationSet )
            	    {
            	    // InternalErrorModelParser.g:1688:4: (lv_transformations_23_0= ruleTypeTransformationSet )
            	    // InternalErrorModelParser.g:1689:5: lv_transformations_23_0= ruleTypeTransformationSet
            	    {

            	    					newCompositeNode(grammarAccess.getErrorModelLibraryAccess().getTransformationsTypeTransformationSetParserRuleCall_4_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_53);
            	    lv_transformations_23_0=ruleTypeTransformationSet();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getErrorModelLibraryRule());
            	    					}
            	    					add(
            	    						current,
            	    						"transformations",
            	    						lv_transformations_23_0,
            	    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTransformationSet");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2Library"
    // InternalErrorModelParser.g:1710:1: entryRuleEMV2Library returns [EObject current=null] : iv_ruleEMV2Library= ruleEMV2Library EOF ;
    public final EObject entryRuleEMV2Library() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2Library = null;


        try {
            // InternalErrorModelParser.g:1710:52: (iv_ruleEMV2Library= ruleEMV2Library EOF )
            // InternalErrorModelParser.g:1711:2: iv_ruleEMV2Library= ruleEMV2Library EOF
            {
             newCompositeNode(grammarAccess.getEMV2LibraryRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2Library=ruleEMV2Library();

            state._fsp--;

             current =iv_ruleEMV2Library; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2Library"
    // InternalErrorModelParser.g:1717:1: ruleEMV2Library returns [EObject current=null] : ( ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) ) | (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon ) ) ;
    public final EObject ruleEMV2Library() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_18=null;
        Token otherlv_20=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_26=null;
        Token otherlv_28=null;
        Token otherlv_29=null;
        Token this_ID_30=null;
        Token otherlv_31=null;
        Token otherlv_32=null;
        Token otherlv_33=null;
        Token otherlv_34=null;
        Token otherlv_35=null;
        Token otherlv_37=null;
        Token otherlv_39=null;
        Token otherlv_40=null;
        Token otherlv_42=null;
        Token otherlv_44=null;
        Token otherlv_47=null;
        Token otherlv_49=null;
        Token otherlv_50=null;
        Token otherlv_51=null;
        Token otherlv_55=null;
        Token otherlv_56=null;
        Token otherlv_57=null;
        Token otherlv_59=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_types_16_0 = null;

        EObject lv_typesets_17_0 = null;

        EObject lv_properties_19_0 = null;

        EObject lv_behaviors_23_0 = null;

        EObject lv_mappings_24_0 = null;

        EObject lv_transformations_25_0 = null;

        AntlrDatatypeRuleToken lv_name_27_0 = null;

        EObject lv_types_45_0 = null;

        EObject lv_typesets_46_0 = null;

        EObject lv_properties_48_0 = null;

        EObject lv_behaviors_52_0 = null;

        EObject lv_mappings_53_0 = null;

        EObject lv_transformations_54_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:1723:2: ( ( ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) ) | (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon ) ) )
            // InternalErrorModelParser.g:1724:2: ( ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) ) | (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon ) )
            {
            // InternalErrorModelParser.g:1724:2: ( ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) ) | (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon ) )
            int alt100=2;
            int LA100_0 = input.LA(1);

            if ( (LA100_0==Library) ) {
                alt100=1;
            }
            else if ( (LA100_0==Package) ) {
                alt100=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 100, 0, input);

                throw nvae;
            }
            switch (alt100) {
                case 1 :
                    // InternalErrorModelParser.g:1725:3: ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) )
                    {
                    // InternalErrorModelParser.g:1725:3: ( () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* ) )
                    // InternalErrorModelParser.g:1726:4: () (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* )
                    {
                    // InternalErrorModelParser.g:1726:4: ()
                    // InternalErrorModelParser.g:1727:5: 
                    {

                    					current = forceCreateModelElement(
                    						grammarAccess.getEMV2LibraryAccess().getErrorModelLibraryAction_0_0(),
                    						current);
                    				

                    }

                    // InternalErrorModelParser.g:1733:4: (otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )* )
                    // InternalErrorModelParser.g:1734:5: otherlv_1= Library ( (lv_name_2_0= ruleQEMREF ) ) (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )? ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_24_0= ruleTypeMappingSet ) )* ( (lv_transformations_25_0= ruleTypeTransformationSet ) )*
                    {
                    otherlv_1=(Token)match(input,Library,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_1, grammarAccess.getEMV2LibraryAccess().getLibraryKeyword_0_1_0());
                    				
                    // InternalErrorModelParser.g:1738:5: ( (lv_name_2_0= ruleQEMREF ) )
                    // InternalErrorModelParser.g:1739:6: (lv_name_2_0= ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:1739:6: (lv_name_2_0= ruleQEMREF )
                    // InternalErrorModelParser.g:1740:7: lv_name_2_0= ruleQEMREF
                    {

                    							newCompositeNode(grammarAccess.getEMV2LibraryAccess().getNameQEMREFParserRuleCall_0_1_1_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_52);
                    lv_name_2_0=ruleQEMREF();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    							}
                    							set(
                    								current,
                    								"name",
                    								lv_name_2_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.QEMREF");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:1757:5: (otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon )?
                    int alt85=2;
                    int LA85_0 = input.LA(1);

                    if ( (LA85_0==Error) ) {
                        int LA85_1 = input.LA(2);

                        if ( (LA85_1==Types) ) {
                            alt85=1;
                        }
                    }
                    switch (alt85) {
                        case 1 :
                            // InternalErrorModelParser.g:1758:6: otherlv_3= Error otherlv_4= Types (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )? (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )? ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )* (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_20= End otherlv_21= Types otherlv_22= Semicolon
                            {
                            otherlv_3=(Token)match(input,Error,FollowSets000.FOLLOW_4); 

                            						newLeafNode(otherlv_3, grammarAccess.getEMV2LibraryAccess().getErrorKeyword_0_1_2_0());
                            					
                            otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_48); 

                            						newLeafNode(otherlv_4, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_0_1_2_1());
                            					
                            // InternalErrorModelParser.g:1766:6: (otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon )?
                            int alt79=2;
                            int LA79_0 = input.LA(1);

                            if ( (LA79_0==Use) ) {
                                alt79=1;
                            }
                            switch (alt79) {
                                case 1 :
                                    // InternalErrorModelParser.g:1767:7: otherlv_5= Use otherlv_6= Types ( ( ruleQEMREF ) ) (otherlv_8= Comma ( ( ruleQEMREF ) ) )* otherlv_10= Semicolon
                                    {
                                    otherlv_5=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                                    							newLeafNode(otherlv_5, grammarAccess.getEMV2LibraryAccess().getUseKeyword_0_1_2_2_0());
                                    						
                                    otherlv_6=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                                    							newLeafNode(otherlv_6, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_0_1_2_2_1());
                                    						
                                    // InternalErrorModelParser.g:1775:7: ( ( ruleQEMREF ) )
                                    // InternalErrorModelParser.g:1776:8: ( ruleQEMREF )
                                    {
                                    // InternalErrorModelParser.g:1776:8: ( ruleQEMREF )
                                    // InternalErrorModelParser.g:1777:9: ruleQEMREF
                                    {

                                    									if (current==null) {
                                    										current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    									}
                                    								

                                    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getUseTypesErrorModelLibraryCrossReference_0_1_2_2_2_0());
                                    								
                                    pushFollow(FollowSets000.FOLLOW_6);
                                    ruleQEMREF();

                                    state._fsp--;


                                    									afterParserOrEnumRuleCall();
                                    								

                                    }


                                    }

                                    // InternalErrorModelParser.g:1791:7: (otherlv_8= Comma ( ( ruleQEMREF ) ) )*
                                    loop78:
                                    do {
                                        int alt78=2;
                                        int LA78_0 = input.LA(1);

                                        if ( (LA78_0==Comma) ) {
                                            alt78=1;
                                        }


                                        switch (alt78) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:1792:8: otherlv_8= Comma ( ( ruleQEMREF ) )
                                    	    {
                                    	    otherlv_8=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                                    	    								newLeafNode(otherlv_8, grammarAccess.getEMV2LibraryAccess().getCommaKeyword_0_1_2_2_3_0());
                                    	    							
                                    	    // InternalErrorModelParser.g:1796:8: ( ( ruleQEMREF ) )
                                    	    // InternalErrorModelParser.g:1797:9: ( ruleQEMREF )
                                    	    {
                                    	    // InternalErrorModelParser.g:1797:9: ( ruleQEMREF )
                                    	    // InternalErrorModelParser.g:1798:10: ruleQEMREF
                                    	    {

                                    	    										if (current==null) {
                                    	    											current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    	    										}
                                    	    									

                                    	    										newCompositeNode(grammarAccess.getEMV2LibraryAccess().getUseTypesErrorModelLibraryCrossReference_0_1_2_2_3_1_0());
                                    	    									
                                    	    pushFollow(FollowSets000.FOLLOW_6);
                                    	    ruleQEMREF();

                                    	    state._fsp--;


                                    	    										afterParserOrEnumRuleCall();
                                    	    									

                                    	    }


                                    	    }


                                    	    }
                                    	    break;

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

                                    otherlv_10=(Token)match(input,Semicolon,FollowSets000.FOLLOW_49); 

                                    							newLeafNode(otherlv_10, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_0_1_2_2_4());
                                    						

                                    }
                                    break;

                            }

                            // InternalErrorModelParser.g:1818:6: (otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With )?
                            int alt81=2;
                            int LA81_0 = input.LA(1);

                            if ( (LA81_0==Extends) ) {
                                alt81=1;
                            }
                            switch (alt81) {
                                case 1 :
                                    // InternalErrorModelParser.g:1819:7: otherlv_11= Extends ( ( ruleQEMREF ) ) (otherlv_13= Comma ( ( ruleQEMREF ) ) )* otherlv_15= With
                                    {
                                    otherlv_11=(Token)match(input,Extends,FollowSets000.FOLLOW_5); 

                                    							newLeafNode(otherlv_11, grammarAccess.getEMV2LibraryAccess().getExtendsKeyword_0_1_2_3_0());
                                    						
                                    // InternalErrorModelParser.g:1823:7: ( ( ruleQEMREF ) )
                                    // InternalErrorModelParser.g:1824:8: ( ruleQEMREF )
                                    {
                                    // InternalErrorModelParser.g:1824:8: ( ruleQEMREF )
                                    // InternalErrorModelParser.g:1825:9: ruleQEMREF
                                    {

                                    									if (current==null) {
                                    										current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    									}
                                    								

                                    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getExtendsErrorModelLibraryCrossReference_0_1_2_3_1_0());
                                    								
                                    pushFollow(FollowSets000.FOLLOW_50);
                                    ruleQEMREF();

                                    state._fsp--;


                                    									afterParserOrEnumRuleCall();
                                    								

                                    }


                                    }

                                    // InternalErrorModelParser.g:1839:7: (otherlv_13= Comma ( ( ruleQEMREF ) ) )*
                                    loop80:
                                    do {
                                        int alt80=2;
                                        int LA80_0 = input.LA(1);

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


                                        switch (alt80) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:1840:8: otherlv_13= Comma ( ( ruleQEMREF ) )
                                    	    {
                                    	    otherlv_13=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                                    	    								newLeafNode(otherlv_13, grammarAccess.getEMV2LibraryAccess().getCommaKeyword_0_1_2_3_2_0());
                                    	    							
                                    	    // InternalErrorModelParser.g:1844:8: ( ( ruleQEMREF ) )
                                    	    // InternalErrorModelParser.g:1845:9: ( ruleQEMREF )
                                    	    {
                                    	    // InternalErrorModelParser.g:1845:9: ( ruleQEMREF )
                                    	    // InternalErrorModelParser.g:1846:10: ruleQEMREF
                                    	    {

                                    	    										if (current==null) {
                                    	    											current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    	    										}
                                    	    									

                                    	    										newCompositeNode(grammarAccess.getEMV2LibraryAccess().getExtendsErrorModelLibraryCrossReference_0_1_2_3_2_1_0());
                                    	    									
                                    	    pushFollow(FollowSets000.FOLLOW_50);
                                    	    ruleQEMREF();

                                    	    state._fsp--;


                                    	    										afterParserOrEnumRuleCall();
                                    	    									

                                    	    }


                                    	    }


                                    	    }
                                    	    break;

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

                                    otherlv_15=(Token)match(input,With,FollowSets000.FOLLOW_51); 

                                    							newLeafNode(otherlv_15, grammarAccess.getEMV2LibraryAccess().getWithKeyword_0_1_2_3_3());
                                    						

                                    }
                                    break;

                            }

                            // InternalErrorModelParser.g:1866:6: ( ( (lv_types_16_0= ruleTypeDefinition ) ) | ( (lv_typesets_17_0= ruleTypeSetDefinition ) ) )*
                            loop82:
                            do {
                                int alt82=3;
                                int LA82_0 = input.LA(1);

                                if ( (LA82_0==RULE_ID) ) {
                                    int LA82_2 = input.LA(2);

                                    if ( (LA82_2==Colon) ) {
                                        int LA82_3 = input.LA(3);

                                        if ( (LA82_3==Type) ) {
                                            int LA82_5 = input.LA(4);

                                            if ( (LA82_5==Set) ) {
                                                alt82=2;
                                            }
                                            else if ( (LA82_5==Extends||LA82_5==Semicolon) ) {
                                                alt82=1;
                                            }


                                        }


                                    }
                                    else if ( (LA82_2==Renames) ) {
                                        int LA82_4 = input.LA(3);

                                        if ( (LA82_4==Type) ) {
                                            int LA82_6 = input.LA(4);

                                            if ( (LA82_6==RULE_ID) ) {
                                                alt82=1;
                                            }
                                            else if ( (LA82_6==Set) ) {
                                                alt82=2;
                                            }


                                        }


                                    }


                                }


                                switch (alt82) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:1867:7: ( (lv_types_16_0= ruleTypeDefinition ) )
                            	    {
                            	    // InternalErrorModelParser.g:1867:7: ( (lv_types_16_0= ruleTypeDefinition ) )
                            	    // InternalErrorModelParser.g:1868:8: (lv_types_16_0= ruleTypeDefinition )
                            	    {
                            	    // InternalErrorModelParser.g:1868:8: (lv_types_16_0= ruleTypeDefinition )
                            	    // InternalErrorModelParser.g:1869:9: lv_types_16_0= ruleTypeDefinition
                            	    {

                            	    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTypesTypeDefinitionParserRuleCall_0_1_2_4_0_0());
                            	    								
                            	    pushFollow(FollowSets000.FOLLOW_51);
                            	    lv_types_16_0=ruleTypeDefinition();

                            	    state._fsp--;


                            	    									if (current==null) {
                            	    										current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                            	    									}
                            	    									add(
                            	    										current,
                            	    										"types",
                            	    										lv_types_16_0,
                            	    										"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeDefinition");
                            	    									afterParserOrEnumRuleCall();
                            	    								

                            	    }


                            	    }


                            	    }
                            	    break;
                            	case 2 :
                            	    // InternalErrorModelParser.g:1887:7: ( (lv_typesets_17_0= ruleTypeSetDefinition ) )
                            	    {
                            	    // InternalErrorModelParser.g:1887:7: ( (lv_typesets_17_0= ruleTypeSetDefinition ) )
                            	    // InternalErrorModelParser.g:1888:8: (lv_typesets_17_0= ruleTypeSetDefinition )
                            	    {
                            	    // InternalErrorModelParser.g:1888:8: (lv_typesets_17_0= ruleTypeSetDefinition )
                            	    // InternalErrorModelParser.g:1889:9: lv_typesets_17_0= ruleTypeSetDefinition
                            	    {

                            	    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTypesetsTypeSetDefinitionParserRuleCall_0_1_2_4_1_0());
                            	    								
                            	    pushFollow(FollowSets000.FOLLOW_51);
                            	    lv_typesets_17_0=ruleTypeSetDefinition();

                            	    state._fsp--;


                            	    									if (current==null) {
                            	    										current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                            	    									}
                            	    									add(
                            	    										current,
                            	    										"typesets",
                            	    										lv_typesets_17_0,
                            	    										"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetDefinition");
                            	    									afterParserOrEnumRuleCall();
                            	    								

                            	    }


                            	    }


                            	    }
                            	    break;

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

                            // InternalErrorModelParser.g:1907:6: (otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+ )?
                            int alt84=2;
                            int LA84_0 = input.LA(1);

                            if ( (LA84_0==Properties) ) {
                                alt84=1;
                            }
                            switch (alt84) {
                                case 1 :
                                    // InternalErrorModelParser.g:1908:7: otherlv_18= Properties ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+
                                    {
                                    otherlv_18=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                                    							newLeafNode(otherlv_18, grammarAccess.getEMV2LibraryAccess().getPropertiesKeyword_0_1_2_5_0());
                                    						
                                    // InternalErrorModelParser.g:1912:7: ( (lv_properties_19_0= ruleBasicEMV2PropertyAssociation ) )+
                                    int cnt83=0;
                                    loop83:
                                    do {
                                        int alt83=2;
                                        int LA83_0 = input.LA(1);

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


                                        switch (alt83) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:1913:8: (lv_properties_19_0= ruleBasicEMV2PropertyAssociation )
                                    	    {
                                    	    // InternalErrorModelParser.g:1913:8: (lv_properties_19_0= ruleBasicEMV2PropertyAssociation )
                                    	    // InternalErrorModelParser.g:1914:9: lv_properties_19_0= ruleBasicEMV2PropertyAssociation
                                    	    {

                                    	    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getPropertiesBasicEMV2PropertyAssociationParserRuleCall_0_1_2_5_1_0());
                                    	    								
                                    	    pushFollow(FollowSets000.FOLLOW_16);
                                    	    lv_properties_19_0=ruleBasicEMV2PropertyAssociation();

                                    	    state._fsp--;


                                    	    									if (current==null) {
                                    	    										current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                                    	    									}
                                    	    									add(
                                    	    										current,
                                    	    										"properties",
                                    	    										lv_properties_19_0,
                                    	    										"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2PropertyAssociation");
                                    	    									afterParserOrEnumRuleCall();
                                    	    								

                                    	    }


                                    	    }
                                    	    break;

                                    	default :
                                    	    if ( cnt83 >= 1 ) break loop83;
                                                EarlyExitException eee =
                                                    new EarlyExitException(83, input);
                                                throw eee;
                                        }
                                        cnt83++;
                                    } while (true);


                                    }
                                    break;

                            }

                            otherlv_20=(Token)match(input,End,FollowSets000.FOLLOW_4); 

                            						newLeafNode(otherlv_20, grammarAccess.getEMV2LibraryAccess().getEndKeyword_0_1_2_6());
                            					
                            otherlv_21=(Token)match(input,Types,FollowSets000.FOLLOW_10); 

                            						newLeafNode(otherlv_21, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_0_1_2_7());
                            					
                            otherlv_22=(Token)match(input,Semicolon,FollowSets000.FOLLOW_52); 

                            						newLeafNode(otherlv_22, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_0_1_2_8());
                            					

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:1945:5: ( (lv_behaviors_23_0= ruleErrorBehaviorStateMachine ) )*
                    loop86:
                    do {
                        int alt86=2;
                        int LA86_0 = input.LA(1);

                        if ( (LA86_0==Error) ) {
                            alt86=1;
                        }


                        switch (alt86) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1946:6: (lv_behaviors_23_0= ruleErrorBehaviorStateMachine )
                    	    {
                    	    // InternalErrorModelParser.g:1946:6: (lv_behaviors_23_0= ruleErrorBehaviorStateMachine )
                    	    // InternalErrorModelParser.g:1947:7: lv_behaviors_23_0= ruleErrorBehaviorStateMachine
                    	    {

                    	    							newCompositeNode(grammarAccess.getEMV2LibraryAccess().getBehaviorsErrorBehaviorStateMachineParserRuleCall_0_1_3_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_52);
                    	    lv_behaviors_23_0=ruleErrorBehaviorStateMachine();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"behaviors",
                    	    								lv_behaviors_23_0,
                    	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorStateMachine");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:1964:5: ( (lv_mappings_24_0= ruleTypeMappingSet ) )*
                    loop87:
                    do {
                        int alt87=2;
                        int LA87_0 = input.LA(1);

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

                            if ( (LA87_1==Mappings) ) {
                                alt87=1;
                            }


                        }


                        switch (alt87) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1965:6: (lv_mappings_24_0= ruleTypeMappingSet )
                    	    {
                    	    // InternalErrorModelParser.g:1965:6: (lv_mappings_24_0= ruleTypeMappingSet )
                    	    // InternalErrorModelParser.g:1966:7: lv_mappings_24_0= ruleTypeMappingSet
                    	    {

                    	    							newCompositeNode(grammarAccess.getEMV2LibraryAccess().getMappingsTypeMappingSetParserRuleCall_0_1_4_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_53);
                    	    lv_mappings_24_0=ruleTypeMappingSet();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"mappings",
                    	    								lv_mappings_24_0,
                    	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeMappingSet");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:1983:5: ( (lv_transformations_25_0= ruleTypeTransformationSet ) )*
                    loop88:
                    do {
                        int alt88=2;
                        int LA88_0 = input.LA(1);

                        if ( (LA88_0==Type) ) {
                            alt88=1;
                        }


                        switch (alt88) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:1984:6: (lv_transformations_25_0= ruleTypeTransformationSet )
                    	    {
                    	    // InternalErrorModelParser.g:1984:6: (lv_transformations_25_0= ruleTypeTransformationSet )
                    	    // InternalErrorModelParser.g:1985:7: lv_transformations_25_0= ruleTypeTransformationSet
                    	    {

                    	    							newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTransformationsTypeTransformationSetParserRuleCall_0_1_5_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_53);
                    	    lv_transformations_25_0=ruleTypeTransformationSet();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"transformations",
                    	    								lv_transformations_25_0,
                    	    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTransformationSet");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }
                    	    break;

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


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:2005:3: (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon )
                    {
                    // InternalErrorModelParser.g:2005:3: (otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon )
                    // InternalErrorModelParser.g:2006:4: otherlv_26= Package ( (lv_name_27_0= ruleQEMREF ) ) otherlv_28= Public otherlv_29= Annex this_ID_30= RULE_ID otherlv_31= LeftCurlyBracketAsteriskAsterisk (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )? ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )* ( (lv_mappings_53_0= ruleTypeMappingSet ) )* ( (lv_transformations_54_0= ruleTypeTransformationSet ) )* otherlv_55= AsteriskAsteriskRightCurlyBracket otherlv_56= Semicolon otherlv_57= End ruleQEMREF otherlv_59= Semicolon
                    {
                    otherlv_26=(Token)match(input,Package,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_26, grammarAccess.getEMV2LibraryAccess().getPackageKeyword_1_0());
                    			
                    // InternalErrorModelParser.g:2010:4: ( (lv_name_27_0= ruleQEMREF ) )
                    // InternalErrorModelParser.g:2011:5: (lv_name_27_0= ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:2011:5: (lv_name_27_0= ruleQEMREF )
                    // InternalErrorModelParser.g:2012:6: lv_name_27_0= ruleQEMREF
                    {

                    						newCompositeNode(grammarAccess.getEMV2LibraryAccess().getNameQEMREFParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_54);
                    lv_name_27_0=ruleQEMREF();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    						}
                    						set(
                    							current,
                    							"name",
                    							lv_name_27_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.QEMREF");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_28=(Token)match(input,Public,FollowSets000.FOLLOW_55); 

                    				newLeafNode(otherlv_28, grammarAccess.getEMV2LibraryAccess().getPublicKeyword_1_2());
                    			
                    otherlv_29=(Token)match(input,Annex,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_29, grammarAccess.getEMV2LibraryAccess().getAnnexKeyword_1_3());
                    			
                    this_ID_30=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_56); 

                    				newLeafNode(this_ID_30, grammarAccess.getEMV2LibraryAccess().getIDTerminalRuleCall_1_4());
                    			
                    otherlv_31=(Token)match(input,LeftCurlyBracketAsteriskAsterisk,FollowSets000.FOLLOW_57); 

                    				newLeafNode(otherlv_31, grammarAccess.getEMV2LibraryAccess().getLeftCurlyBracketAsteriskAsteriskKeyword_1_5());
                    			
                    // InternalErrorModelParser.g:2045:4: (otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon )?
                    int alt96=2;
                    int LA96_0 = input.LA(1);

                    if ( (LA96_0==Error) ) {
                        int LA96_1 = input.LA(2);

                        if ( (LA96_1==Types) ) {
                            alt96=1;
                        }
                    }
                    switch (alt96) {
                        case 1 :
                            // InternalErrorModelParser.g:2046:5: otherlv_32= Error otherlv_33= Types (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )? (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )? ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )* (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_49= End otherlv_50= Types otherlv_51= Semicolon
                            {
                            otherlv_32=(Token)match(input,Error,FollowSets000.FOLLOW_4); 

                            					newLeafNode(otherlv_32, grammarAccess.getEMV2LibraryAccess().getErrorKeyword_1_6_0());
                            				
                            otherlv_33=(Token)match(input,Types,FollowSets000.FOLLOW_48); 

                            					newLeafNode(otherlv_33, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_1_6_1());
                            				
                            // InternalErrorModelParser.g:2054:5: (otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon )?
                            int alt90=2;
                            int LA90_0 = input.LA(1);

                            if ( (LA90_0==Use) ) {
                                alt90=1;
                            }
                            switch (alt90) {
                                case 1 :
                                    // InternalErrorModelParser.g:2055:6: otherlv_34= Use otherlv_35= Types ( ( ruleQEMREF ) ) (otherlv_37= Comma ( ( ruleQEMREF ) ) )* otherlv_39= Semicolon
                                    {
                                    otherlv_34=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                                    						newLeafNode(otherlv_34, grammarAccess.getEMV2LibraryAccess().getUseKeyword_1_6_2_0());
                                    					
                                    otherlv_35=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                                    						newLeafNode(otherlv_35, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_1_6_2_1());
                                    					
                                    // InternalErrorModelParser.g:2063:6: ( ( ruleQEMREF ) )
                                    // InternalErrorModelParser.g:2064:7: ( ruleQEMREF )
                                    {
                                    // InternalErrorModelParser.g:2064:7: ( ruleQEMREF )
                                    // InternalErrorModelParser.g:2065:8: ruleQEMREF
                                    {

                                    								if (current==null) {
                                    									current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    								}
                                    							

                                    								newCompositeNode(grammarAccess.getEMV2LibraryAccess().getUseTypesErrorModelLibraryCrossReference_1_6_2_2_0());
                                    							
                                    pushFollow(FollowSets000.FOLLOW_6);
                                    ruleQEMREF();

                                    state._fsp--;


                                    								afterParserOrEnumRuleCall();
                                    							

                                    }


                                    }

                                    // InternalErrorModelParser.g:2079:6: (otherlv_37= Comma ( ( ruleQEMREF ) ) )*
                                    loop89:
                                    do {
                                        int alt89=2;
                                        int LA89_0 = input.LA(1);

                                        if ( (LA89_0==Comma) ) {
                                            alt89=1;
                                        }


                                        switch (alt89) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:2080:7: otherlv_37= Comma ( ( ruleQEMREF ) )
                                    	    {
                                    	    otherlv_37=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                                    	    							newLeafNode(otherlv_37, grammarAccess.getEMV2LibraryAccess().getCommaKeyword_1_6_2_3_0());
                                    	    						
                                    	    // InternalErrorModelParser.g:2084:7: ( ( ruleQEMREF ) )
                                    	    // InternalErrorModelParser.g:2085:8: ( ruleQEMREF )
                                    	    {
                                    	    // InternalErrorModelParser.g:2085:8: ( ruleQEMREF )
                                    	    // InternalErrorModelParser.g:2086:9: ruleQEMREF
                                    	    {

                                    	    									if (current==null) {
                                    	    										current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    	    									}
                                    	    								

                                    	    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getUseTypesErrorModelLibraryCrossReference_1_6_2_3_1_0());
                                    	    								
                                    	    pushFollow(FollowSets000.FOLLOW_6);
                                    	    ruleQEMREF();

                                    	    state._fsp--;


                                    	    									afterParserOrEnumRuleCall();
                                    	    								

                                    	    }


                                    	    }


                                    	    }
                                    	    break;

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

                                    otherlv_39=(Token)match(input,Semicolon,FollowSets000.FOLLOW_49); 

                                    						newLeafNode(otherlv_39, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_1_6_2_4());
                                    					

                                    }
                                    break;

                            }

                            // InternalErrorModelParser.g:2106:5: (otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With )?
                            int alt92=2;
                            int LA92_0 = input.LA(1);

                            if ( (LA92_0==Extends) ) {
                                alt92=1;
                            }
                            switch (alt92) {
                                case 1 :
                                    // InternalErrorModelParser.g:2107:6: otherlv_40= Extends ( ( ruleQEMREF ) ) (otherlv_42= Comma ( ( ruleQEMREF ) ) )* otherlv_44= With
                                    {
                                    otherlv_40=(Token)match(input,Extends,FollowSets000.FOLLOW_5); 

                                    						newLeafNode(otherlv_40, grammarAccess.getEMV2LibraryAccess().getExtendsKeyword_1_6_3_0());
                                    					
                                    // InternalErrorModelParser.g:2111:6: ( ( ruleQEMREF ) )
                                    // InternalErrorModelParser.g:2112:7: ( ruleQEMREF )
                                    {
                                    // InternalErrorModelParser.g:2112:7: ( ruleQEMREF )
                                    // InternalErrorModelParser.g:2113:8: ruleQEMREF
                                    {

                                    								if (current==null) {
                                    									current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    								}
                                    							

                                    								newCompositeNode(grammarAccess.getEMV2LibraryAccess().getExtendsErrorModelLibraryCrossReference_1_6_3_1_0());
                                    							
                                    pushFollow(FollowSets000.FOLLOW_50);
                                    ruleQEMREF();

                                    state._fsp--;


                                    								afterParserOrEnumRuleCall();
                                    							

                                    }


                                    }

                                    // InternalErrorModelParser.g:2127:6: (otherlv_42= Comma ( ( ruleQEMREF ) ) )*
                                    loop91:
                                    do {
                                        int alt91=2;
                                        int LA91_0 = input.LA(1);

                                        if ( (LA91_0==Comma) ) {
                                            alt91=1;
                                        }


                                        switch (alt91) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:2128:7: otherlv_42= Comma ( ( ruleQEMREF ) )
                                    	    {
                                    	    otherlv_42=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                                    	    							newLeafNode(otherlv_42, grammarAccess.getEMV2LibraryAccess().getCommaKeyword_1_6_3_2_0());
                                    	    						
                                    	    // InternalErrorModelParser.g:2132:7: ( ( ruleQEMREF ) )
                                    	    // InternalErrorModelParser.g:2133:8: ( ruleQEMREF )
                                    	    {
                                    	    // InternalErrorModelParser.g:2133:8: ( ruleQEMREF )
                                    	    // InternalErrorModelParser.g:2134:9: ruleQEMREF
                                    	    {

                                    	    									if (current==null) {
                                    	    										current = createModelElement(grammarAccess.getEMV2LibraryRule());
                                    	    									}
                                    	    								

                                    	    									newCompositeNode(grammarAccess.getEMV2LibraryAccess().getExtendsErrorModelLibraryCrossReference_1_6_3_2_1_0());
                                    	    								
                                    	    pushFollow(FollowSets000.FOLLOW_50);
                                    	    ruleQEMREF();

                                    	    state._fsp--;


                                    	    									afterParserOrEnumRuleCall();
                                    	    								

                                    	    }


                                    	    }


                                    	    }
                                    	    break;

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

                                    otherlv_44=(Token)match(input,With,FollowSets000.FOLLOW_51); 

                                    						newLeafNode(otherlv_44, grammarAccess.getEMV2LibraryAccess().getWithKeyword_1_6_3_3());
                                    					

                                    }
                                    break;

                            }

                            // InternalErrorModelParser.g:2154:5: ( ( (lv_types_45_0= ruleTypeDefinition ) ) | ( (lv_typesets_46_0= ruleTypeSetDefinition ) ) )*
                            loop93:
                            do {
                                int alt93=3;
                                int LA93_0 = input.LA(1);

                                if ( (LA93_0==RULE_ID) ) {
                                    int LA93_2 = input.LA(2);

                                    if ( (LA93_2==Colon) ) {
                                        int LA93_3 = input.LA(3);

                                        if ( (LA93_3==Type) ) {
                                            int LA93_5 = input.LA(4);

                                            if ( (LA93_5==Extends||LA93_5==Semicolon) ) {
                                                alt93=1;
                                            }
                                            else if ( (LA93_5==Set) ) {
                                                alt93=2;
                                            }


                                        }


                                    }
                                    else if ( (LA93_2==Renames) ) {
                                        int LA93_4 = input.LA(3);

                                        if ( (LA93_4==Type) ) {
                                            int LA93_6 = input.LA(4);

                                            if ( (LA93_6==RULE_ID) ) {
                                                alt93=1;
                                            }
                                            else if ( (LA93_6==Set) ) {
                                                alt93=2;
                                            }


                                        }


                                    }


                                }


                                switch (alt93) {
                            	case 1 :
                            	    // InternalErrorModelParser.g:2155:6: ( (lv_types_45_0= ruleTypeDefinition ) )
                            	    {
                            	    // InternalErrorModelParser.g:2155:6: ( (lv_types_45_0= ruleTypeDefinition ) )
                            	    // InternalErrorModelParser.g:2156:7: (lv_types_45_0= ruleTypeDefinition )
                            	    {
                            	    // InternalErrorModelParser.g:2156:7: (lv_types_45_0= ruleTypeDefinition )
                            	    // InternalErrorModelParser.g:2157:8: lv_types_45_0= ruleTypeDefinition
                            	    {

                            	    								newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTypesTypeDefinitionParserRuleCall_1_6_4_0_0());
                            	    							
                            	    pushFollow(FollowSets000.FOLLOW_51);
                            	    lv_types_45_0=ruleTypeDefinition();

                            	    state._fsp--;


                            	    								if (current==null) {
                            	    									current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                            	    								}
                            	    								add(
                            	    									current,
                            	    									"types",
                            	    									lv_types_45_0,
                            	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeDefinition");
                            	    								afterParserOrEnumRuleCall();
                            	    							

                            	    }


                            	    }


                            	    }
                            	    break;
                            	case 2 :
                            	    // InternalErrorModelParser.g:2175:6: ( (lv_typesets_46_0= ruleTypeSetDefinition ) )
                            	    {
                            	    // InternalErrorModelParser.g:2175:6: ( (lv_typesets_46_0= ruleTypeSetDefinition ) )
                            	    // InternalErrorModelParser.g:2176:7: (lv_typesets_46_0= ruleTypeSetDefinition )
                            	    {
                            	    // InternalErrorModelParser.g:2176:7: (lv_typesets_46_0= ruleTypeSetDefinition )
                            	    // InternalErrorModelParser.g:2177:8: lv_typesets_46_0= ruleTypeSetDefinition
                            	    {

                            	    								newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTypesetsTypeSetDefinitionParserRuleCall_1_6_4_1_0());
                            	    							
                            	    pushFollow(FollowSets000.FOLLOW_51);
                            	    lv_typesets_46_0=ruleTypeSetDefinition();

                            	    state._fsp--;


                            	    								if (current==null) {
                            	    									current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                            	    								}
                            	    								add(
                            	    									current,
                            	    									"typesets",
                            	    									lv_typesets_46_0,
                            	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetDefinition");
                            	    								afterParserOrEnumRuleCall();
                            	    							

                            	    }


                            	    }


                            	    }
                            	    break;

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

                            // InternalErrorModelParser.g:2195:5: (otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+ )?
                            int alt95=2;
                            int LA95_0 = input.LA(1);

                            if ( (LA95_0==Properties) ) {
                                alt95=1;
                            }
                            switch (alt95) {
                                case 1 :
                                    // InternalErrorModelParser.g:2196:6: otherlv_47= Properties ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+
                                    {
                                    otherlv_47=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                                    						newLeafNode(otherlv_47, grammarAccess.getEMV2LibraryAccess().getPropertiesKeyword_1_6_5_0());
                                    					
                                    // InternalErrorModelParser.g:2200:6: ( (lv_properties_48_0= ruleBasicEMV2PropertyAssociation ) )+
                                    int cnt94=0;
                                    loop94:
                                    do {
                                        int alt94=2;
                                        int LA94_0 = input.LA(1);

                                        if ( (LA94_0==RULE_ID) ) {
                                            alt94=1;
                                        }


                                        switch (alt94) {
                                    	case 1 :
                                    	    // InternalErrorModelParser.g:2201:7: (lv_properties_48_0= ruleBasicEMV2PropertyAssociation )
                                    	    {
                                    	    // InternalErrorModelParser.g:2201:7: (lv_properties_48_0= ruleBasicEMV2PropertyAssociation )
                                    	    // InternalErrorModelParser.g:2202:8: lv_properties_48_0= ruleBasicEMV2PropertyAssociation
                                    	    {

                                    	    								newCompositeNode(grammarAccess.getEMV2LibraryAccess().getPropertiesBasicEMV2PropertyAssociationParserRuleCall_1_6_5_1_0());
                                    	    							
                                    	    pushFollow(FollowSets000.FOLLOW_16);
                                    	    lv_properties_48_0=ruleBasicEMV2PropertyAssociation();

                                    	    state._fsp--;


                                    	    								if (current==null) {
                                    	    									current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                                    	    								}
                                    	    								add(
                                    	    									current,
                                    	    									"properties",
                                    	    									lv_properties_48_0,
                                    	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2PropertyAssociation");
                                    	    								afterParserOrEnumRuleCall();
                                    	    							

                                    	    }


                                    	    }
                                    	    break;

                                    	default :
                                    	    if ( cnt94 >= 1 ) break loop94;
                                                EarlyExitException eee =
                                                    new EarlyExitException(94, input);
                                                throw eee;
                                        }
                                        cnt94++;
                                    } while (true);


                                    }
                                    break;

                            }

                            otherlv_49=(Token)match(input,End,FollowSets000.FOLLOW_4); 

                            					newLeafNode(otherlv_49, grammarAccess.getEMV2LibraryAccess().getEndKeyword_1_6_6());
                            				
                            otherlv_50=(Token)match(input,Types,FollowSets000.FOLLOW_10); 

                            					newLeafNode(otherlv_50, grammarAccess.getEMV2LibraryAccess().getTypesKeyword_1_6_7());
                            				
                            otherlv_51=(Token)match(input,Semicolon,FollowSets000.FOLLOW_57); 

                            					newLeafNode(otherlv_51, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_1_6_8());
                            				

                            }
                            break;

                    }

                    // InternalErrorModelParser.g:2233:4: ( (lv_behaviors_52_0= ruleErrorBehaviorStateMachine ) )*
                    loop97:
                    do {
                        int alt97=2;
                        int LA97_0 = input.LA(1);

                        if ( (LA97_0==Error) ) {
                            alt97=1;
                        }


                        switch (alt97) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:2234:5: (lv_behaviors_52_0= ruleErrorBehaviorStateMachine )
                    	    {
                    	    // InternalErrorModelParser.g:2234:5: (lv_behaviors_52_0= ruleErrorBehaviorStateMachine )
                    	    // InternalErrorModelParser.g:2235:6: lv_behaviors_52_0= ruleErrorBehaviorStateMachine
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2LibraryAccess().getBehaviorsErrorBehaviorStateMachineParserRuleCall_1_7_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_57);
                    	    lv_behaviors_52_0=ruleErrorBehaviorStateMachine();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"behaviors",
                    	    							lv_behaviors_52_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorStateMachine");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:2252:4: ( (lv_mappings_53_0= ruleTypeMappingSet ) )*
                    loop98:
                    do {
                        int alt98=2;
                        int LA98_0 = input.LA(1);

                        if ( (LA98_0==Type) ) {
                            int LA98_1 = input.LA(2);

                            if ( (LA98_1==Mappings) ) {
                                alt98=1;
                            }


                        }


                        switch (alt98) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:2253:5: (lv_mappings_53_0= ruleTypeMappingSet )
                    	    {
                    	    // InternalErrorModelParser.g:2253:5: (lv_mappings_53_0= ruleTypeMappingSet )
                    	    // InternalErrorModelParser.g:2254:6: lv_mappings_53_0= ruleTypeMappingSet
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2LibraryAccess().getMappingsTypeMappingSetParserRuleCall_1_8_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_58);
                    	    lv_mappings_53_0=ruleTypeMappingSet();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"mappings",
                    	    							lv_mappings_53_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeMappingSet");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    // InternalErrorModelParser.g:2271:4: ( (lv_transformations_54_0= ruleTypeTransformationSet ) )*
                    loop99:
                    do {
                        int alt99=2;
                        int LA99_0 = input.LA(1);

                        if ( (LA99_0==Type) ) {
                            alt99=1;
                        }


                        switch (alt99) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:2272:5: (lv_transformations_54_0= ruleTypeTransformationSet )
                    	    {
                    	    // InternalErrorModelParser.g:2272:5: (lv_transformations_54_0= ruleTypeTransformationSet )
                    	    // InternalErrorModelParser.g:2273:6: lv_transformations_54_0= ruleTypeTransformationSet
                    	    {

                    	    						newCompositeNode(grammarAccess.getEMV2LibraryAccess().getTransformationsTypeTransformationSetParserRuleCall_1_9_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_58);
                    	    lv_transformations_54_0=ruleTypeTransformationSet();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEMV2LibraryRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"transformations",
                    	    							lv_transformations_54_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTransformationSet");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

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

                    otherlv_55=(Token)match(input,AsteriskAsteriskRightCurlyBracket,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_55, grammarAccess.getEMV2LibraryAccess().getAsteriskAsteriskRightCurlyBracketKeyword_1_10());
                    			
                    otherlv_56=(Token)match(input,Semicolon,FollowSets000.FOLLOW_59); 

                    				newLeafNode(otherlv_56, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_1_11());
                    			
                    otherlv_57=(Token)match(input,End,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_57, grammarAccess.getEMV2LibraryAccess().getEndKeyword_1_12());
                    			

                    				newCompositeNode(grammarAccess.getEMV2LibraryAccess().getQEMREFParserRuleCall_1_13());
                    			
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    				afterParserOrEnumRuleCall();
                    			
                    otherlv_59=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_59, grammarAccess.getEMV2LibraryAccess().getSemicolonKeyword_1_14());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2PropertyAssociation"
    // InternalErrorModelParser.g:2318:1: entryRuleEMV2PropertyAssociation returns [EObject current=null] : iv_ruleEMV2PropertyAssociation= ruleEMV2PropertyAssociation EOF ;
    public final EObject entryRuleEMV2PropertyAssociation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2PropertyAssociation = null;


        try {
            // InternalErrorModelParser.g:2318:64: (iv_ruleEMV2PropertyAssociation= ruleEMV2PropertyAssociation EOF )
            // InternalErrorModelParser.g:2319:2: iv_ruleEMV2PropertyAssociation= ruleEMV2PropertyAssociation EOF
            {
             newCompositeNode(grammarAccess.getEMV2PropertyAssociationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2PropertyAssociation=ruleEMV2PropertyAssociation();

            state._fsp--;

             current =iv_ruleEMV2PropertyAssociation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2PropertyAssociation"
    // InternalErrorModelParser.g:2325:1: ruleEMV2PropertyAssociation returns [EObject current=null] : ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )? otherlv_10= Semicolon ) ;
    public final EObject ruleEMV2PropertyAssociation() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_ownedValues_2_0 = null;

        EObject lv_ownedValues_4_0 = null;

        EObject lv_emv2Path_7_0 = null;

        EObject lv_emv2Path_9_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2331:2: ( ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )? otherlv_10= Semicolon ) )
            // InternalErrorModelParser.g:2332:2: ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )? otherlv_10= Semicolon )
            {
            // InternalErrorModelParser.g:2332:2: ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )? otherlv_10= Semicolon )
            // InternalErrorModelParser.g:2333:3: ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )? otherlv_10= Semicolon
            {
            // InternalErrorModelParser.g:2333:3: ( ( ruleQPREF ) )
            // InternalErrorModelParser.g:2334:4: ( ruleQPREF )
            {
            // InternalErrorModelParser.g:2334:4: ( ruleQPREF )
            // InternalErrorModelParser.g:2335:5: ruleQPREF
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getEMV2PropertyAssociationRule());
            					}
            				

            					newCompositeNode(grammarAccess.getEMV2PropertyAssociationAccess().getPropertyPropertyCrossReference_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_60);
            ruleQPREF();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,EqualsSignGreaterThanSign,FollowSets000.FOLLOW_61); 

            			newLeafNode(otherlv_1, grammarAccess.getEMV2PropertyAssociationAccess().getEqualsSignGreaterThanSignKeyword_1());
            		
            // InternalErrorModelParser.g:2353:3: ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* )
            // InternalErrorModelParser.g:2354:4: ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )*
            {
            // InternalErrorModelParser.g:2354:4: ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) )
            // InternalErrorModelParser.g:2355:5: (lv_ownedValues_2_0= ruleOptionalModalPropertyValue )
            {
            // InternalErrorModelParser.g:2355:5: (lv_ownedValues_2_0= ruleOptionalModalPropertyValue )
            // InternalErrorModelParser.g:2356:6: lv_ownedValues_2_0= ruleOptionalModalPropertyValue
            {

            						newCompositeNode(grammarAccess.getEMV2PropertyAssociationAccess().getOwnedValuesOptionalModalPropertyValueParserRuleCall_2_0_0());
            					
            pushFollow(FollowSets000.FOLLOW_62);
            lv_ownedValues_2_0=ruleOptionalModalPropertyValue();

            state._fsp--;


            						if (current==null) {
            							current = createModelElementForParent(grammarAccess.getEMV2PropertyAssociationRule());
            						}
            						add(
            							current,
            							"ownedValues",
            							lv_ownedValues_2_0,
            							"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            						afterParserOrEnumRuleCall();
            					

            }


            }

            // InternalErrorModelParser.g:2373:4: (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )*
            loop101:
            do {
                int alt101=2;
                int LA101_0 = input.LA(1);

                if ( (LA101_0==Comma) ) {
                    alt101=1;
                }


                switch (alt101) {
            	case 1 :
            	    // InternalErrorModelParser.g:2374:5: otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) )
            	    {
            	    otherlv_3=(Token)match(input,Comma,FollowSets000.FOLLOW_61); 

            	    					newLeafNode(otherlv_3, grammarAccess.getEMV2PropertyAssociationAccess().getCommaKeyword_2_1_0());
            	    				
            	    // InternalErrorModelParser.g:2378:5: ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) )
            	    // InternalErrorModelParser.g:2379:6: (lv_ownedValues_4_0= ruleOptionalModalPropertyValue )
            	    {
            	    // InternalErrorModelParser.g:2379:6: (lv_ownedValues_4_0= ruleOptionalModalPropertyValue )
            	    // InternalErrorModelParser.g:2380:7: lv_ownedValues_4_0= ruleOptionalModalPropertyValue
            	    {

            	    							newCompositeNode(grammarAccess.getEMV2PropertyAssociationAccess().getOwnedValuesOptionalModalPropertyValueParserRuleCall_2_1_1_0());
            	    						
            	    pushFollow(FollowSets000.FOLLOW_62);
            	    lv_ownedValues_4_0=ruleOptionalModalPropertyValue();

            	    state._fsp--;


            	    							if (current==null) {
            	    								current = createModelElementForParent(grammarAccess.getEMV2PropertyAssociationRule());
            	    							}
            	    							add(
            	    								current,
            	    								"ownedValues",
            	    								lv_ownedValues_4_0,
            	    								"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            	    							afterParserOrEnumRuleCall();
            	    						

            	    }


            	    }


            	    }
            	    break;

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


            }

            // InternalErrorModelParser.g:2399:3: (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* ) )?
            int alt103=2;
            int LA103_0 = input.LA(1);

            if ( (LA103_0==Applies) ) {
                alt103=1;
            }
            switch (alt103) {
                case 1 :
                    // InternalErrorModelParser.g:2400:4: otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* )
                    {
                    otherlv_5=(Token)match(input,Applies,FollowSets000.FOLLOW_63); 

                    				newLeafNode(otherlv_5, grammarAccess.getEMV2PropertyAssociationAccess().getAppliesKeyword_3_0());
                    			
                    otherlv_6=(Token)match(input,To,FollowSets000.FOLLOW_64); 

                    				newLeafNode(otherlv_6, grammarAccess.getEMV2PropertyAssociationAccess().getToKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:2408:4: ( ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )* )
                    // InternalErrorModelParser.g:2409:5: ( (lv_emv2Path_7_0= ruleEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )*
                    {
                    // InternalErrorModelParser.g:2409:5: ( (lv_emv2Path_7_0= ruleEMV2Path ) )
                    // InternalErrorModelParser.g:2410:6: (lv_emv2Path_7_0= ruleEMV2Path )
                    {
                    // InternalErrorModelParser.g:2410:6: (lv_emv2Path_7_0= ruleEMV2Path )
                    // InternalErrorModelParser.g:2411:7: lv_emv2Path_7_0= ruleEMV2Path
                    {

                    							newCompositeNode(grammarAccess.getEMV2PropertyAssociationAccess().getEmv2PathEMV2PathParserRuleCall_3_2_0_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_6);
                    lv_emv2Path_7_0=ruleEMV2Path();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getEMV2PropertyAssociationRule());
                    							}
                    							add(
                    								current,
                    								"emv2Path",
                    								lv_emv2Path_7_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2Path");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:2428:5: (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) ) )*
                    loop102:
                    do {
                        int alt102=2;
                        int LA102_0 = input.LA(1);

                        if ( (LA102_0==Comma) ) {
                            alt102=1;
                        }


                        switch (alt102) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:2429:6: otherlv_8= Comma ( (lv_emv2Path_9_0= ruleEMV2Path ) )
                    	    {
                    	    otherlv_8=(Token)match(input,Comma,FollowSets000.FOLLOW_64); 

                    	    						newLeafNode(otherlv_8, grammarAccess.getEMV2PropertyAssociationAccess().getCommaKeyword_3_2_1_0());
                    	    					
                    	    // InternalErrorModelParser.g:2433:6: ( (lv_emv2Path_9_0= ruleEMV2Path ) )
                    	    // InternalErrorModelParser.g:2434:7: (lv_emv2Path_9_0= ruleEMV2Path )
                    	    {
                    	    // InternalErrorModelParser.g:2434:7: (lv_emv2Path_9_0= ruleEMV2Path )
                    	    // InternalErrorModelParser.g:2435:8: lv_emv2Path_9_0= ruleEMV2Path
                    	    {

                    	    								newCompositeNode(grammarAccess.getEMV2PropertyAssociationAccess().getEmv2PathEMV2PathParserRuleCall_3_2_1_1_0());
                    	    							
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    lv_emv2Path_9_0=ruleEMV2Path();

                    	    state._fsp--;


                    	    								if (current==null) {
                    	    									current = createModelElementForParent(grammarAccess.getEMV2PropertyAssociationRule());
                    	    								}
                    	    								add(
                    	    									current,
                    	    									"emv2Path",
                    	    									lv_emv2Path_9_0,
                    	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2Path");
                    	    								afterParserOrEnumRuleCall();
                    	    							

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_10, grammarAccess.getEMV2PropertyAssociationAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleBasicEMV2PropertyAssociation"
    // InternalErrorModelParser.g:2463:1: entryRuleBasicEMV2PropertyAssociation returns [EObject current=null] : iv_ruleBasicEMV2PropertyAssociation= ruleBasicEMV2PropertyAssociation EOF ;
    public final EObject entryRuleBasicEMV2PropertyAssociation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBasicEMV2PropertyAssociation = null;


        try {
            // InternalErrorModelParser.g:2463:69: (iv_ruleBasicEMV2PropertyAssociation= ruleBasicEMV2PropertyAssociation EOF )
            // InternalErrorModelParser.g:2464:2: iv_ruleBasicEMV2PropertyAssociation= ruleBasicEMV2PropertyAssociation EOF
            {
             newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleBasicEMV2PropertyAssociation=ruleBasicEMV2PropertyAssociation();

            state._fsp--;

             current =iv_ruleBasicEMV2PropertyAssociation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleBasicEMV2PropertyAssociation"
    // InternalErrorModelParser.g:2470:1: ruleBasicEMV2PropertyAssociation returns [EObject current=null] : ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )? otherlv_10= Semicolon ) ;
    public final EObject ruleBasicEMV2PropertyAssociation() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_ownedValues_2_0 = null;

        EObject lv_ownedValues_4_0 = null;

        EObject lv_emv2Path_7_0 = null;

        EObject lv_emv2Path_9_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2476:2: ( ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )? otherlv_10= Semicolon ) )
            // InternalErrorModelParser.g:2477:2: ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )? otherlv_10= Semicolon )
            {
            // InternalErrorModelParser.g:2477:2: ( ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )? otherlv_10= Semicolon )
            // InternalErrorModelParser.g:2478:3: ( ( ruleQPREF ) ) otherlv_1= EqualsSignGreaterThanSign ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* ) (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )? otherlv_10= Semicolon
            {
            // InternalErrorModelParser.g:2478:3: ( ( ruleQPREF ) )
            // InternalErrorModelParser.g:2479:4: ( ruleQPREF )
            {
            // InternalErrorModelParser.g:2479:4: ( ruleQPREF )
            // InternalErrorModelParser.g:2480:5: ruleQPREF
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getBasicEMV2PropertyAssociationRule());
            					}
            				

            					newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationAccess().getPropertyPropertyCrossReference_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_60);
            ruleQPREF();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,EqualsSignGreaterThanSign,FollowSets000.FOLLOW_61); 

            			newLeafNode(otherlv_1, grammarAccess.getBasicEMV2PropertyAssociationAccess().getEqualsSignGreaterThanSignKeyword_1());
            		
            // InternalErrorModelParser.g:2498:3: ( ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )* )
            // InternalErrorModelParser.g:2499:4: ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) ) (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )*
            {
            // InternalErrorModelParser.g:2499:4: ( (lv_ownedValues_2_0= ruleOptionalModalPropertyValue ) )
            // InternalErrorModelParser.g:2500:5: (lv_ownedValues_2_0= ruleOptionalModalPropertyValue )
            {
            // InternalErrorModelParser.g:2500:5: (lv_ownedValues_2_0= ruleOptionalModalPropertyValue )
            // InternalErrorModelParser.g:2501:6: lv_ownedValues_2_0= ruleOptionalModalPropertyValue
            {

            						newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationAccess().getOwnedValuesOptionalModalPropertyValueParserRuleCall_2_0_0());
            					
            pushFollow(FollowSets000.FOLLOW_62);
            lv_ownedValues_2_0=ruleOptionalModalPropertyValue();

            state._fsp--;


            						if (current==null) {
            							current = createModelElementForParent(grammarAccess.getBasicEMV2PropertyAssociationRule());
            						}
            						add(
            							current,
            							"ownedValues",
            							lv_ownedValues_2_0,
            							"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            						afterParserOrEnumRuleCall();
            					

            }


            }

            // InternalErrorModelParser.g:2518:4: (otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) ) )*
            loop104:
            do {
                int alt104=2;
                int LA104_0 = input.LA(1);

                if ( (LA104_0==Comma) ) {
                    alt104=1;
                }


                switch (alt104) {
            	case 1 :
            	    // InternalErrorModelParser.g:2519:5: otherlv_3= Comma ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) )
            	    {
            	    otherlv_3=(Token)match(input,Comma,FollowSets000.FOLLOW_61); 

            	    					newLeafNode(otherlv_3, grammarAccess.getBasicEMV2PropertyAssociationAccess().getCommaKeyword_2_1_0());
            	    				
            	    // InternalErrorModelParser.g:2523:5: ( (lv_ownedValues_4_0= ruleOptionalModalPropertyValue ) )
            	    // InternalErrorModelParser.g:2524:6: (lv_ownedValues_4_0= ruleOptionalModalPropertyValue )
            	    {
            	    // InternalErrorModelParser.g:2524:6: (lv_ownedValues_4_0= ruleOptionalModalPropertyValue )
            	    // InternalErrorModelParser.g:2525:7: lv_ownedValues_4_0= ruleOptionalModalPropertyValue
            	    {

            	    							newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationAccess().getOwnedValuesOptionalModalPropertyValueParserRuleCall_2_1_1_0());
            	    						
            	    pushFollow(FollowSets000.FOLLOW_62);
            	    lv_ownedValues_4_0=ruleOptionalModalPropertyValue();

            	    state._fsp--;


            	    							if (current==null) {
            	    								current = createModelElementForParent(grammarAccess.getBasicEMV2PropertyAssociationRule());
            	    							}
            	    							add(
            	    								current,
            	    								"ownedValues",
            	    								lv_ownedValues_4_0,
            	    								"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            	    							afterParserOrEnumRuleCall();
            	    						

            	    }


            	    }


            	    }
            	    break;

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


            }

            // InternalErrorModelParser.g:2544:3: (otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* ) )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==Applies) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // InternalErrorModelParser.g:2545:4: otherlv_5= Applies otherlv_6= To ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* )
                    {
                    otherlv_5=(Token)match(input,Applies,FollowSets000.FOLLOW_63); 

                    				newLeafNode(otherlv_5, grammarAccess.getBasicEMV2PropertyAssociationAccess().getAppliesKeyword_3_0());
                    			
                    otherlv_6=(Token)match(input,To,FollowSets000.FOLLOW_64); 

                    				newLeafNode(otherlv_6, grammarAccess.getBasicEMV2PropertyAssociationAccess().getToKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:2553:4: ( ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )* )
                    // InternalErrorModelParser.g:2554:5: ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) ) (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )*
                    {
                    // InternalErrorModelParser.g:2554:5: ( (lv_emv2Path_7_0= ruleBasicEMV2Path ) )
                    // InternalErrorModelParser.g:2555:6: (lv_emv2Path_7_0= ruleBasicEMV2Path )
                    {
                    // InternalErrorModelParser.g:2555:6: (lv_emv2Path_7_0= ruleBasicEMV2Path )
                    // InternalErrorModelParser.g:2556:7: lv_emv2Path_7_0= ruleBasicEMV2Path
                    {

                    							newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationAccess().getEmv2PathBasicEMV2PathParserRuleCall_3_2_0_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_6);
                    lv_emv2Path_7_0=ruleBasicEMV2Path();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getBasicEMV2PropertyAssociationRule());
                    							}
                    							add(
                    								current,
                    								"emv2Path",
                    								lv_emv2Path_7_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2Path");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:2573:5: (otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) ) )*
                    loop105:
                    do {
                        int alt105=2;
                        int LA105_0 = input.LA(1);

                        if ( (LA105_0==Comma) ) {
                            alt105=1;
                        }


                        switch (alt105) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:2574:6: otherlv_8= Comma ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) )
                    	    {
                    	    otherlv_8=(Token)match(input,Comma,FollowSets000.FOLLOW_64); 

                    	    						newLeafNode(otherlv_8, grammarAccess.getBasicEMV2PropertyAssociationAccess().getCommaKeyword_3_2_1_0());
                    	    					
                    	    // InternalErrorModelParser.g:2578:6: ( (lv_emv2Path_9_0= ruleBasicEMV2Path ) )
                    	    // InternalErrorModelParser.g:2579:7: (lv_emv2Path_9_0= ruleBasicEMV2Path )
                    	    {
                    	    // InternalErrorModelParser.g:2579:7: (lv_emv2Path_9_0= ruleBasicEMV2Path )
                    	    // InternalErrorModelParser.g:2580:8: lv_emv2Path_9_0= ruleBasicEMV2Path
                    	    {

                    	    								newCompositeNode(grammarAccess.getBasicEMV2PropertyAssociationAccess().getEmv2PathBasicEMV2PathParserRuleCall_3_2_1_1_0());
                    	    							
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    lv_emv2Path_9_0=ruleBasicEMV2Path();

                    	    state._fsp--;


                    	    								if (current==null) {
                    	    									current = createModelElementForParent(grammarAccess.getBasicEMV2PropertyAssociationRule());
                    	    								}
                    	    								add(
                    	    									current,
                    	    									"emv2Path",
                    	    									lv_emv2Path_9_0,
                    	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2Path");
                    	    								afterParserOrEnumRuleCall();
                    	    							

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_10, grammarAccess.getBasicEMV2PropertyAssociationAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2Path"
    // InternalErrorModelParser.g:2608:1: entryRuleEMV2Path returns [EObject current=null] : iv_ruleEMV2Path= ruleEMV2Path EOF ;
    public final EObject entryRuleEMV2Path() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2Path = null;


        try {
            // InternalErrorModelParser.g:2608:49: (iv_ruleEMV2Path= ruleEMV2Path EOF )
            // InternalErrorModelParser.g:2609:2: iv_ruleEMV2Path= ruleEMV2Path EOF
            {
             newCompositeNode(grammarAccess.getEMV2PathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2Path=ruleEMV2Path();

            state._fsp--;

             current =iv_ruleEMV2Path; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2Path"
    // InternalErrorModelParser.g:2615:1: ruleEMV2Path returns [EObject current=null] : ( (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )? ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) ) ) ;
    public final EObject ruleEMV2Path() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_containmentPath_1_0 = null;

        EObject lv_emv2Target_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2621:2: ( ( (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )? ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) ) ) )
            // InternalErrorModelParser.g:2622:2: ( (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )? ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) ) )
            {
            // InternalErrorModelParser.g:2622:2: ( (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )? ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) ) )
            // InternalErrorModelParser.g:2623:3: (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )? ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) )
            {
            // InternalErrorModelParser.g:2623:3: (otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt )?
            int alt107=2;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==CircumflexAccent) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // InternalErrorModelParser.g:2624:4: otherlv_0= CircumflexAccent ( (lv_containmentPath_1_0= ruleContainmentPathElement ) ) otherlv_2= CommercialAt
                    {
                    otherlv_0=(Token)match(input,CircumflexAccent,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_0, grammarAccess.getEMV2PathAccess().getCircumflexAccentKeyword_0_0());
                    			
                    // InternalErrorModelParser.g:2628:4: ( (lv_containmentPath_1_0= ruleContainmentPathElement ) )
                    // InternalErrorModelParser.g:2629:5: (lv_containmentPath_1_0= ruleContainmentPathElement )
                    {
                    // InternalErrorModelParser.g:2629:5: (lv_containmentPath_1_0= ruleContainmentPathElement )
                    // InternalErrorModelParser.g:2630:6: lv_containmentPath_1_0= ruleContainmentPathElement
                    {

                    						newCompositeNode(grammarAccess.getEMV2PathAccess().getContainmentPathContainmentPathElementParserRuleCall_0_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_65);
                    lv_containmentPath_1_0=ruleContainmentPathElement();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEMV2PathRule());
                    						}
                    						set(
                    							current,
                    							"containmentPath",
                    							lv_containmentPath_1_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ContainmentPathElement");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_2=(Token)match(input,CommercialAt,FollowSets000.FOLLOW_64); 

                    				newLeafNode(otherlv_2, grammarAccess.getEMV2PathAccess().getCommercialAtKeyword_0_2());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:2652:3: ( (lv_emv2Target_3_0= ruleEMV2PathElementOrKind ) )
            // InternalErrorModelParser.g:2653:4: (lv_emv2Target_3_0= ruleEMV2PathElementOrKind )
            {
            // InternalErrorModelParser.g:2653:4: (lv_emv2Target_3_0= ruleEMV2PathElementOrKind )
            // InternalErrorModelParser.g:2654:5: lv_emv2Target_3_0= ruleEMV2PathElementOrKind
            {

            					newCompositeNode(grammarAccess.getEMV2PathAccess().getEmv2TargetEMV2PathElementOrKindParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_emv2Target_3_0=ruleEMV2PathElementOrKind();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getEMV2PathRule());
            					}
            					set(
            						current,
            						"emv2Target",
            						lv_emv2Target_3_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PathElementOrKind");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleBasicEMV2Path"
    // InternalErrorModelParser.g:2675:1: entryRuleBasicEMV2Path returns [EObject current=null] : iv_ruleBasicEMV2Path= ruleBasicEMV2Path EOF ;
    public final EObject entryRuleBasicEMV2Path() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBasicEMV2Path = null;


        try {
            // InternalErrorModelParser.g:2675:54: (iv_ruleBasicEMV2Path= ruleBasicEMV2Path EOF )
            // InternalErrorModelParser.g:2676:2: iv_ruleBasicEMV2Path= ruleBasicEMV2Path EOF
            {
             newCompositeNode(grammarAccess.getBasicEMV2PathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleBasicEMV2Path=ruleBasicEMV2Path();

            state._fsp--;

             current =iv_ruleBasicEMV2Path; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleBasicEMV2Path"
    // InternalErrorModelParser.g:2682:1: ruleBasicEMV2Path returns [EObject current=null] : ( (lv_emv2Target_0_0= ruleEMV2PathElementOrKind ) ) ;
    public final EObject ruleBasicEMV2Path() throws RecognitionException {
        EObject current = null;

        EObject lv_emv2Target_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2688:2: ( ( (lv_emv2Target_0_0= ruleEMV2PathElementOrKind ) ) )
            // InternalErrorModelParser.g:2689:2: ( (lv_emv2Target_0_0= ruleEMV2PathElementOrKind ) )
            {
            // InternalErrorModelParser.g:2689:2: ( (lv_emv2Target_0_0= ruleEMV2PathElementOrKind ) )
            // InternalErrorModelParser.g:2690:3: (lv_emv2Target_0_0= ruleEMV2PathElementOrKind )
            {
            // InternalErrorModelParser.g:2690:3: (lv_emv2Target_0_0= ruleEMV2PathElementOrKind )
            // InternalErrorModelParser.g:2691:4: lv_emv2Target_0_0= ruleEMV2PathElementOrKind
            {

            				newCompositeNode(grammarAccess.getBasicEMV2PathAccess().getEmv2TargetEMV2PathElementOrKindParserRuleCall_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            lv_emv2Target_0_0=ruleEMV2PathElementOrKind();

            state._fsp--;


            				if (current==null) {
            					current = createModelElementForParent(grammarAccess.getBasicEMV2PathRule());
            				}
            				set(
            					current,
            					"emv2Target",
            					lv_emv2Target_0_0,
            					"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PathElementOrKind");
            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2PathElementOrKind"
    // InternalErrorModelParser.g:2711:1: entryRuleEMV2PathElementOrKind returns [EObject current=null] : iv_ruleEMV2PathElementOrKind= ruleEMV2PathElementOrKind EOF ;
    public final EObject entryRuleEMV2PathElementOrKind() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2PathElementOrKind = null;


        try {
            // InternalErrorModelParser.g:2711:62: (iv_ruleEMV2PathElementOrKind= ruleEMV2PathElementOrKind EOF )
            // InternalErrorModelParser.g:2712:2: iv_ruleEMV2PathElementOrKind= ruleEMV2PathElementOrKind EOF
            {
             newCompositeNode(grammarAccess.getEMV2PathElementOrKindRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2PathElementOrKind=ruleEMV2PathElementOrKind();

            state._fsp--;

             current =iv_ruleEMV2PathElementOrKind; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2PathElementOrKind"
    // InternalErrorModelParser.g:2718:1: ruleEMV2PathElementOrKind returns [EObject current=null] : ( ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? ) | ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? ) ) ;
    public final EObject ruleEMV2PathElementOrKind() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_emv2PropagationKind_0_0 = null;

        EObject lv_path_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2724:2: ( ( ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? ) | ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? ) ) )
            // InternalErrorModelParser.g:2725:2: ( ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? ) | ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? ) )
            {
            // InternalErrorModelParser.g:2725:2: ( ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? ) | ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? ) )
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==Connection||LA110_0==Processor||LA110_0==Bindings||LA110_0==Binding||LA110_0==Access||LA110_0==Memory) ) {
                alt110=1;
            }
            else if ( (LA110_0==RULE_ID) ) {
                alt110=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 110, 0, input);

                throw nvae;
            }
            switch (alt110) {
                case 1 :
                    // InternalErrorModelParser.g:2726:3: ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? )
                    {
                    // InternalErrorModelParser.g:2726:3: ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )? )
                    // InternalErrorModelParser.g:2727:4: ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )?
                    {
                    // InternalErrorModelParser.g:2727:4: ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) )
                    // InternalErrorModelParser.g:2728:5: (lv_emv2PropagationKind_0_0= rulePropagationKind )
                    {
                    // InternalErrorModelParser.g:2728:5: (lv_emv2PropagationKind_0_0= rulePropagationKind )
                    // InternalErrorModelParser.g:2729:6: lv_emv2PropagationKind_0_0= rulePropagationKind
                    {

                    						newCompositeNode(grammarAccess.getEMV2PathElementOrKindAccess().getEmv2PropagationKindPropagationKindParserRuleCall_0_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_66);
                    lv_emv2PropagationKind_0_0=rulePropagationKind();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEMV2PathElementOrKindRule());
                    						}
                    						set(
                    							current,
                    							"emv2PropagationKind",
                    							lv_emv2PropagationKind_0_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationKind");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:2746:4: (otherlv_1= FullStop ( (otherlv_2= RULE_ID ) ) )?
                    int alt108=2;
                    int LA108_0 = input.LA(1);

                    if ( (LA108_0==FullStop) ) {
                        alt108=1;
                    }
                    switch (alt108) {
                        case 1 :
                            // InternalErrorModelParser.g:2747:5: otherlv_1= FullStop ( (otherlv_2= RULE_ID ) )
                            {
                            otherlv_1=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_1, grammarAccess.getEMV2PathElementOrKindAccess().getFullStopKeyword_0_1_0());
                            				
                            // InternalErrorModelParser.g:2751:5: ( (otherlv_2= RULE_ID ) )
                            // InternalErrorModelParser.g:2752:6: (otherlv_2= RULE_ID )
                            {
                            // InternalErrorModelParser.g:2752:6: (otherlv_2= RULE_ID )
                            // InternalErrorModelParser.g:2753:7: otherlv_2= RULE_ID
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getEMV2PathElementOrKindRule());
                            							}
                            						
                            otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                            							newLeafNode(otherlv_2, grammarAccess.getEMV2PathElementOrKindAccess().getErrorTypeErrorTypesCrossReference_0_1_1_0());
                            						

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:2767:3: ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? )
                    {
                    // InternalErrorModelParser.g:2767:3: ( ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )? )
                    // InternalErrorModelParser.g:2768:4: ( (otherlv_3= RULE_ID ) ) (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )?
                    {
                    // InternalErrorModelParser.g:2768:4: ( (otherlv_3= RULE_ID ) )
                    // InternalErrorModelParser.g:2769:5: (otherlv_3= RULE_ID )
                    {
                    // InternalErrorModelParser.g:2769:5: (otherlv_3= RULE_ID )
                    // InternalErrorModelParser.g:2770:6: otherlv_3= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2PathElementOrKindRule());
                    						}
                    					
                    otherlv_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

                    						newLeafNode(otherlv_3, grammarAccess.getEMV2PathElementOrKindAccess().getNamedElementNamedElementCrossReference_1_0_0());
                    					

                    }


                    }

                    // InternalErrorModelParser.g:2781:4: (otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) ) )?
                    int alt109=2;
                    int LA109_0 = input.LA(1);

                    if ( (LA109_0==FullStop) ) {
                        alt109=1;
                    }
                    switch (alt109) {
                        case 1 :
                            // InternalErrorModelParser.g:2782:5: otherlv_4= FullStop ( (lv_path_5_0= ruleEMV2PathElement ) )
                            {
                            otherlv_4=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                            					newLeafNode(otherlv_4, grammarAccess.getEMV2PathElementOrKindAccess().getFullStopKeyword_1_1_0());
                            				
                            // InternalErrorModelParser.g:2786:5: ( (lv_path_5_0= ruleEMV2PathElement ) )
                            // InternalErrorModelParser.g:2787:6: (lv_path_5_0= ruleEMV2PathElement )
                            {
                            // InternalErrorModelParser.g:2787:6: (lv_path_5_0= ruleEMV2PathElement )
                            // InternalErrorModelParser.g:2788:7: lv_path_5_0= ruleEMV2PathElement
                            {

                            							newCompositeNode(grammarAccess.getEMV2PathElementOrKindAccess().getPathEMV2PathElementParserRuleCall_1_1_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_2);
                            lv_path_5_0=ruleEMV2PathElement();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getEMV2PathElementOrKindRule());
                            							}
                            							set(
                            								current,
                            								"path",
                            								lv_path_5_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PathElement");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2PathElement"
    // InternalErrorModelParser.g:2811:1: entryRuleEMV2PathElement returns [EObject current=null] : iv_ruleEMV2PathElement= ruleEMV2PathElement EOF ;
    public final EObject entryRuleEMV2PathElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2PathElement = null;


        try {
            // InternalErrorModelParser.g:2811:56: (iv_ruleEMV2PathElement= ruleEMV2PathElement EOF )
            // InternalErrorModelParser.g:2812:2: iv_ruleEMV2PathElement= ruleEMV2PathElement EOF
            {
             newCompositeNode(grammarAccess.getEMV2PathElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2PathElement=ruleEMV2PathElement();

            state._fsp--;

             current =iv_ruleEMV2PathElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2PathElement"
    // InternalErrorModelParser.g:2818:1: ruleEMV2PathElement returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )? ) ;
    public final EObject ruleEMV2PathElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_path_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2824:2: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )? ) )
            // InternalErrorModelParser.g:2825:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )? )
            {
            // InternalErrorModelParser.g:2825:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )? )
            // InternalErrorModelParser.g:2826:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )?
            {
            // InternalErrorModelParser.g:2826:3: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:2827:4: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:2827:4: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:2828:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getEMV2PathElementRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            					newLeafNode(otherlv_0, grammarAccess.getEMV2PathElementAccess().getNamedElementNamedElementCrossReference_0_0());
            				

            }


            }

            // InternalErrorModelParser.g:2839:3: (otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) ) )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==FullStop) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // InternalErrorModelParser.g:2840:4: otherlv_1= FullStop ( (lv_path_2_0= ruleEMV2PathElement ) )
                    {
                    otherlv_1=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_1, grammarAccess.getEMV2PathElementAccess().getFullStopKeyword_1_0());
                    			
                    // InternalErrorModelParser.g:2844:4: ( (lv_path_2_0= ruleEMV2PathElement ) )
                    // InternalErrorModelParser.g:2845:5: (lv_path_2_0= ruleEMV2PathElement )
                    {
                    // InternalErrorModelParser.g:2845:5: (lv_path_2_0= ruleEMV2PathElement )
                    // InternalErrorModelParser.g:2846:6: lv_path_2_0= ruleEMV2PathElement
                    {

                    						newCompositeNode(grammarAccess.getEMV2PathElementAccess().getPathEMV2PathElementParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_path_2_0=ruleEMV2PathElement();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getEMV2PathElementRule());
                    						}
                    						set(
                    							current,
                    							"path",
                    							lv_path_2_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2PathElement");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorTypes"
    // InternalErrorModelParser.g:2868:1: entryRuleErrorTypes returns [EObject current=null] : iv_ruleErrorTypes= ruleErrorTypes EOF ;
    public final EObject entryRuleErrorTypes() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorTypes = null;


        try {
            // InternalErrorModelParser.g:2868:51: (iv_ruleErrorTypes= ruleErrorTypes EOF )
            // InternalErrorModelParser.g:2869:2: iv_ruleErrorTypes= ruleErrorTypes EOF
            {
             newCompositeNode(grammarAccess.getErrorTypesRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorTypes=ruleErrorTypes();

            state._fsp--;

             current =iv_ruleErrorTypes; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorTypes"
    // InternalErrorModelParser.g:2875:1: ruleErrorTypes returns [EObject current=null] : (this_TypeDefinition_0= ruleTypeDefinition | this_TypeSetDefinition_1= ruleTypeSetDefinition ) ;
    public final EObject ruleErrorTypes() throws RecognitionException {
        EObject current = null;

        EObject this_TypeDefinition_0 = null;

        EObject this_TypeSetDefinition_1 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:2881:2: ( (this_TypeDefinition_0= ruleTypeDefinition | this_TypeSetDefinition_1= ruleTypeSetDefinition ) )
            // InternalErrorModelParser.g:2882:2: (this_TypeDefinition_0= ruleTypeDefinition | this_TypeSetDefinition_1= ruleTypeSetDefinition )
            {
            // InternalErrorModelParser.g:2882:2: (this_TypeDefinition_0= ruleTypeDefinition | this_TypeSetDefinition_1= ruleTypeSetDefinition )
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==RULE_ID) ) {
                int LA112_1 = input.LA(2);

                if ( (LA112_1==Colon) ) {
                    int LA112_2 = input.LA(3);

                    if ( (LA112_2==Type) ) {
                        int LA112_4 = input.LA(4);

                        if ( (LA112_4==Set) ) {
                            alt112=2;
                        }
                        else if ( (LA112_4==Extends||LA112_4==Semicolon) ) {
                            alt112=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 112, 4, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 112, 2, input);

                        throw nvae;
                    }
                }
                else if ( (LA112_1==Renames) ) {
                    int LA112_3 = input.LA(3);

                    if ( (LA112_3==Type) ) {
                        int LA112_5 = input.LA(4);

                        if ( (LA112_5==Set) ) {
                            alt112=2;
                        }
                        else if ( (LA112_5==RULE_ID) ) {
                            alt112=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 112, 5, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 112, 3, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 112, 1, input);

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

                throw nvae;
            }
            switch (alt112) {
                case 1 :
                    // InternalErrorModelParser.g:2883:3: this_TypeDefinition_0= ruleTypeDefinition
                    {

                    			newCompositeNode(grammarAccess.getErrorTypesAccess().getTypeDefinitionParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_TypeDefinition_0=ruleTypeDefinition();

                    state._fsp--;


                    			current = this_TypeDefinition_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:2892:3: this_TypeSetDefinition_1= ruleTypeSetDefinition
                    {

                    			newCompositeNode(grammarAccess.getErrorTypesAccess().getTypeSetDefinitionParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_TypeSetDefinition_1=ruleTypeSetDefinition();

                    state._fsp--;


                    			current = this_TypeSetDefinition_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeDefinition"
    // InternalErrorModelParser.g:2904:1: entryRuleTypeDefinition returns [EObject current=null] : iv_ruleTypeDefinition= ruleTypeDefinition EOF ;
    public final EObject entryRuleTypeDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeDefinition = null;


        try {
            // InternalErrorModelParser.g:2904:55: (iv_ruleTypeDefinition= ruleTypeDefinition EOF )
            // InternalErrorModelParser.g:2905:2: iv_ruleTypeDefinition= ruleTypeDefinition EOF
            {
             newCompositeNode(grammarAccess.getTypeDefinitionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeDefinition=ruleTypeDefinition();

            state._fsp--;

             current =iv_ruleTypeDefinition; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeDefinition"
    // InternalErrorModelParser.g:2911:1: ruleTypeDefinition returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) ) otherlv_10= Semicolon ) ;
    public final EObject ruleTypeDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:2917:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) ) otherlv_10= Semicolon ) )
            // InternalErrorModelParser.g:2918:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) ) otherlv_10= Semicolon )
            {
            // InternalErrorModelParser.g:2918:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) ) otherlv_10= Semicolon )
            // InternalErrorModelParser.g:2919:3: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) ) otherlv_10= Semicolon
            {
            // InternalErrorModelParser.g:2919:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:2920:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:2920:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:2921:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_67); 

            					newLeafNode(lv_name_0_0, grammarAccess.getTypeDefinitionAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getTypeDefinitionRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            // InternalErrorModelParser.g:2937:3: ( (otherlv_1= Colon otherlv_2= Type ) | (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) ) | (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) ) )
            int alt113=3;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==Colon) ) {
                int LA113_1 = input.LA(2);

                if ( (LA113_1==Type) ) {
                    int LA113_3 = input.LA(3);

                    if ( (LA113_3==Semicolon) ) {
                        alt113=1;
                    }
                    else if ( (LA113_3==Extends) ) {
                        alt113=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 113, 3, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 113, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA113_0==Renames) ) {
                alt113=3;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 113, 0, input);

                throw nvae;
            }
            switch (alt113) {
                case 1 :
                    // InternalErrorModelParser.g:2938:4: (otherlv_1= Colon otherlv_2= Type )
                    {
                    // InternalErrorModelParser.g:2938:4: (otherlv_1= Colon otherlv_2= Type )
                    // InternalErrorModelParser.g:2939:5: otherlv_1= Colon otherlv_2= Type
                    {
                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_8); 

                    					newLeafNode(otherlv_1, grammarAccess.getTypeDefinitionAccess().getColonKeyword_1_0_0());
                    				
                    otherlv_2=(Token)match(input,Type,FollowSets000.FOLLOW_10); 

                    					newLeafNode(otherlv_2, grammarAccess.getTypeDefinitionAccess().getTypeKeyword_1_0_1());
                    				

                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:2949:4: (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) )
                    {
                    // InternalErrorModelParser.g:2949:4: (otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) ) )
                    // InternalErrorModelParser.g:2950:5: otherlv_3= Colon otherlv_4= Type otherlv_5= Extends ( ( ruleQEMREF ) )
                    {
                    otherlv_3=(Token)match(input,Colon,FollowSets000.FOLLOW_8); 

                    					newLeafNode(otherlv_3, grammarAccess.getTypeDefinitionAccess().getColonKeyword_1_1_0());
                    				
                    otherlv_4=(Token)match(input,Type,FollowSets000.FOLLOW_68); 

                    					newLeafNode(otherlv_4, grammarAccess.getTypeDefinitionAccess().getTypeKeyword_1_1_1());
                    				
                    otherlv_5=(Token)match(input,Extends,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_5, grammarAccess.getTypeDefinitionAccess().getExtendsKeyword_1_1_2());
                    				
                    // InternalErrorModelParser.g:2962:5: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:2963:6: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:2963:6: ( ruleQEMREF )
                    // InternalErrorModelParser.g:2964:7: ruleQEMREF
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getTypeDefinitionRule());
                    							}
                    						

                    							newCompositeNode(grammarAccess.getTypeDefinitionAccess().getSuperTypeErrorTypeCrossReference_1_1_3_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:2980:4: (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) )
                    {
                    // InternalErrorModelParser.g:2980:4: (otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) ) )
                    // InternalErrorModelParser.g:2981:5: otherlv_7= Renames otherlv_8= Type ( ( ruleQEMREF ) )
                    {
                    otherlv_7=(Token)match(input,Renames,FollowSets000.FOLLOW_8); 

                    					newLeafNode(otherlv_7, grammarAccess.getTypeDefinitionAccess().getRenamesKeyword_1_2_0());
                    				
                    otherlv_8=(Token)match(input,Type,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_8, grammarAccess.getTypeDefinitionAccess().getTypeKeyword_1_2_1());
                    				
                    // InternalErrorModelParser.g:2989:5: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:2990:6: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:2990:6: ( ruleQEMREF )
                    // InternalErrorModelParser.g:2991:7: ruleQEMREF
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getTypeDefinitionRule());
                    							}
                    						

                    							newCompositeNode(grammarAccess.getTypeDefinitionAccess().getAliasedTypeErrorTypeCrossReference_1_2_2_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_10, grammarAccess.getTypeDefinitionAccess().getSemicolonKeyword_2());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeSetDefinition"
    // InternalErrorModelParser.g:3015:1: entryRuleTypeSetDefinition returns [EObject current=null] : iv_ruleTypeSetDefinition= ruleTypeSetDefinition EOF ;
    public final EObject entryRuleTypeSetDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeSetDefinition = null;


        try {
            // InternalErrorModelParser.g:3015:58: (iv_ruleTypeSetDefinition= ruleTypeSetDefinition EOF )
            // InternalErrorModelParser.g:3016:2: iv_ruleTypeSetDefinition= ruleTypeSetDefinition EOF
            {
             newCompositeNode(grammarAccess.getTypeSetDefinitionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeSetDefinition=ruleTypeSetDefinition();

            state._fsp--;

             current =iv_ruleTypeSetDefinition; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeSetDefinition"
    // InternalErrorModelParser.g:3022:1: ruleTypeSetDefinition returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) ) otherlv_13= Semicolon ) ;
    public final EObject ruleTypeSetDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeTokens_5_0 = null;

        EObject lv_typeTokens_7_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3028:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) ) otherlv_13= Semicolon ) )
            // InternalErrorModelParser.g:3029:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) ) otherlv_13= Semicolon )
            {
            // InternalErrorModelParser.g:3029:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) ) otherlv_13= Semicolon )
            // InternalErrorModelParser.g:3030:3: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) ) otherlv_13= Semicolon
            {
            // InternalErrorModelParser.g:3030:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:3031:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:3031:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:3032:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_67); 

            					newLeafNode(lv_name_0_0, grammarAccess.getTypeSetDefinitionAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getTypeSetDefinitionRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            // InternalErrorModelParser.g:3048:3: ( (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket ) | (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) ) )
            int alt115=2;
            int LA115_0 = input.LA(1);

            if ( (LA115_0==Colon) ) {
                alt115=1;
            }
            else if ( (LA115_0==Renames) ) {
                alt115=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 115, 0, input);

                throw nvae;
            }
            switch (alt115) {
                case 1 :
                    // InternalErrorModelParser.g:3049:4: (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket )
                    {
                    // InternalErrorModelParser.g:3049:4: (otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket )
                    // InternalErrorModelParser.g:3050:5: otherlv_1= Colon otherlv_2= Type otherlv_3= Set otherlv_4= LeftCurlyBracket ( (lv_typeTokens_5_0= ruleTypeSetElement ) ) (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )* otherlv_8= RightCurlyBracket
                    {
                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_8); 

                    					newLeafNode(otherlv_1, grammarAccess.getTypeSetDefinitionAccess().getColonKeyword_1_0_0());
                    				
                    otherlv_2=(Token)match(input,Type,FollowSets000.FOLLOW_69); 

                    					newLeafNode(otherlv_2, grammarAccess.getTypeSetDefinitionAccess().getTypeKeyword_1_0_1());
                    				
                    otherlv_3=(Token)match(input,Set,FollowSets000.FOLLOW_70); 

                    					newLeafNode(otherlv_3, grammarAccess.getTypeSetDefinitionAccess().getSetKeyword_1_0_2());
                    				
                    otherlv_4=(Token)match(input,LeftCurlyBracket,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_4, grammarAccess.getTypeSetDefinitionAccess().getLeftCurlyBracketKeyword_1_0_3());
                    				
                    // InternalErrorModelParser.g:3066:5: ( (lv_typeTokens_5_0= ruleTypeSetElement ) )
                    // InternalErrorModelParser.g:3067:6: (lv_typeTokens_5_0= ruleTypeSetElement )
                    {
                    // InternalErrorModelParser.g:3067:6: (lv_typeTokens_5_0= ruleTypeSetElement )
                    // InternalErrorModelParser.g:3068:7: lv_typeTokens_5_0= ruleTypeSetElement
                    {

                    							newCompositeNode(grammarAccess.getTypeSetDefinitionAccess().getTypeTokensTypeSetElementParserRuleCall_1_0_4_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_71);
                    lv_typeTokens_5_0=ruleTypeSetElement();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getTypeSetDefinitionRule());
                    							}
                    							add(
                    								current,
                    								"typeTokens",
                    								lv_typeTokens_5_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetElement");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:3085:5: (otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) ) )*
                    loop114:
                    do {
                        int alt114=2;
                        int LA114_0 = input.LA(1);

                        if ( (LA114_0==Comma) ) {
                            alt114=1;
                        }


                        switch (alt114) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:3086:6: otherlv_6= Comma ( (lv_typeTokens_7_0= ruleTypeSetElement ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    						newLeafNode(otherlv_6, grammarAccess.getTypeSetDefinitionAccess().getCommaKeyword_1_0_5_0());
                    	    					
                    	    // InternalErrorModelParser.g:3090:6: ( (lv_typeTokens_7_0= ruleTypeSetElement ) )
                    	    // InternalErrorModelParser.g:3091:7: (lv_typeTokens_7_0= ruleTypeSetElement )
                    	    {
                    	    // InternalErrorModelParser.g:3091:7: (lv_typeTokens_7_0= ruleTypeSetElement )
                    	    // InternalErrorModelParser.g:3092:8: lv_typeTokens_7_0= ruleTypeSetElement
                    	    {

                    	    								newCompositeNode(grammarAccess.getTypeSetDefinitionAccess().getTypeTokensTypeSetElementParserRuleCall_1_0_5_1_0());
                    	    							
                    	    pushFollow(FollowSets000.FOLLOW_71);
                    	    lv_typeTokens_7_0=ruleTypeSetElement();

                    	    state._fsp--;


                    	    								if (current==null) {
                    	    									current = createModelElementForParent(grammarAccess.getTypeSetDefinitionRule());
                    	    								}
                    	    								add(
                    	    									current,
                    	    									"typeTokens",
                    	    									lv_typeTokens_7_0,
                    	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetElement");
                    	    								afterParserOrEnumRuleCall();
                    	    							

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,RightCurlyBracket,FollowSets000.FOLLOW_10); 

                    					newLeafNode(otherlv_8, grammarAccess.getTypeSetDefinitionAccess().getRightCurlyBracketKeyword_1_0_6());
                    				

                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:3116:4: (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) )
                    {
                    // InternalErrorModelParser.g:3116:4: (otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) ) )
                    // InternalErrorModelParser.g:3117:5: otherlv_9= Renames otherlv_10= Type otherlv_11= Set ( ( ruleQEMREF ) )
                    {
                    otherlv_9=(Token)match(input,Renames,FollowSets000.FOLLOW_8); 

                    					newLeafNode(otherlv_9, grammarAccess.getTypeSetDefinitionAccess().getRenamesKeyword_1_1_0());
                    				
                    otherlv_10=(Token)match(input,Type,FollowSets000.FOLLOW_69); 

                    					newLeafNode(otherlv_10, grammarAccess.getTypeSetDefinitionAccess().getTypeKeyword_1_1_1());
                    				
                    otherlv_11=(Token)match(input,Set,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_11, grammarAccess.getTypeSetDefinitionAccess().getSetKeyword_1_1_2());
                    				
                    // InternalErrorModelParser.g:3129:5: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:3130:6: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:3130:6: ( ruleQEMREF )
                    // InternalErrorModelParser.g:3131:7: ruleQEMREF
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getTypeSetDefinitionRule());
                    							}
                    						

                    							newCompositeNode(grammarAccess.getTypeSetDefinitionAccess().getAliasedTypeTypeSetCrossReference_1_1_3_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_13=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_13, grammarAccess.getTypeSetDefinitionAccess().getSemicolonKeyword_2());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeSetConstructor"
    // InternalErrorModelParser.g:3155:1: entryRuleTypeSetConstructor returns [EObject current=null] : iv_ruleTypeSetConstructor= ruleTypeSetConstructor EOF ;
    public final EObject entryRuleTypeSetConstructor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeSetConstructor = null;


        try {
            // InternalErrorModelParser.g:3155:59: (iv_ruleTypeSetConstructor= ruleTypeSetConstructor EOF )
            // InternalErrorModelParser.g:3156:2: iv_ruleTypeSetConstructor= ruleTypeSetConstructor EOF
            {
             newCompositeNode(grammarAccess.getTypeSetConstructorRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeSetConstructor=ruleTypeSetConstructor();

            state._fsp--;

             current =iv_ruleTypeSetConstructor; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeSetConstructor"
    // InternalErrorModelParser.g:3162:1: ruleTypeSetConstructor returns [EObject current=null] : (otherlv_0= LeftCurlyBracket ( (lv_typeTokens_1_0= ruleTypeSetElement ) ) (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )* otherlv_4= RightCurlyBracket ) ;
    public final EObject ruleTypeSetConstructor() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_typeTokens_1_0 = null;

        EObject lv_typeTokens_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3168:2: ( (otherlv_0= LeftCurlyBracket ( (lv_typeTokens_1_0= ruleTypeSetElement ) ) (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )* otherlv_4= RightCurlyBracket ) )
            // InternalErrorModelParser.g:3169:2: (otherlv_0= LeftCurlyBracket ( (lv_typeTokens_1_0= ruleTypeSetElement ) ) (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )* otherlv_4= RightCurlyBracket )
            {
            // InternalErrorModelParser.g:3169:2: (otherlv_0= LeftCurlyBracket ( (lv_typeTokens_1_0= ruleTypeSetElement ) ) (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )* otherlv_4= RightCurlyBracket )
            // InternalErrorModelParser.g:3170:3: otherlv_0= LeftCurlyBracket ( (lv_typeTokens_1_0= ruleTypeSetElement ) ) (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )* otherlv_4= RightCurlyBracket
            {
            otherlv_0=(Token)match(input,LeftCurlyBracket,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_0, grammarAccess.getTypeSetConstructorAccess().getLeftCurlyBracketKeyword_0());
            		
            // InternalErrorModelParser.g:3174:3: ( (lv_typeTokens_1_0= ruleTypeSetElement ) )
            // InternalErrorModelParser.g:3175:4: (lv_typeTokens_1_0= ruleTypeSetElement )
            {
            // InternalErrorModelParser.g:3175:4: (lv_typeTokens_1_0= ruleTypeSetElement )
            // InternalErrorModelParser.g:3176:5: lv_typeTokens_1_0= ruleTypeSetElement
            {

            					newCompositeNode(grammarAccess.getTypeSetConstructorAccess().getTypeTokensTypeSetElementParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_71);
            lv_typeTokens_1_0=ruleTypeSetElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getTypeSetConstructorRule());
            					}
            					add(
            						current,
            						"typeTokens",
            						lv_typeTokens_1_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:3193:3: (otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) ) )*
            loop116:
            do {
                int alt116=2;
                int LA116_0 = input.LA(1);

                if ( (LA116_0==Comma) ) {
                    alt116=1;
                }


                switch (alt116) {
            	case 1 :
            	    // InternalErrorModelParser.g:3194:4: otherlv_2= Comma ( (lv_typeTokens_3_0= ruleTypeSetElement ) )
            	    {
            	    otherlv_2=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

            	    				newLeafNode(otherlv_2, grammarAccess.getTypeSetConstructorAccess().getCommaKeyword_2_0());
            	    			
            	    // InternalErrorModelParser.g:3198:4: ( (lv_typeTokens_3_0= ruleTypeSetElement ) )
            	    // InternalErrorModelParser.g:3199:5: (lv_typeTokens_3_0= ruleTypeSetElement )
            	    {
            	    // InternalErrorModelParser.g:3199:5: (lv_typeTokens_3_0= ruleTypeSetElement )
            	    // InternalErrorModelParser.g:3200:6: lv_typeTokens_3_0= ruleTypeSetElement
            	    {

            	    						newCompositeNode(grammarAccess.getTypeSetConstructorAccess().getTypeTokensTypeSetElementParserRuleCall_2_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_71);
            	    lv_typeTokens_3_0=ruleTypeSetElement();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getTypeSetConstructorRule());
            	    						}
            	    						add(
            	    							current,
            	    							"typeTokens",
            	    							lv_typeTokens_3_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetElement");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_4=(Token)match(input,RightCurlyBracket,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_4, grammarAccess.getTypeSetConstructorAccess().getRightCurlyBracketKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeSetReference"
    // InternalErrorModelParser.g:3226:1: entryRuleTypeSetReference returns [EObject current=null] : iv_ruleTypeSetReference= ruleTypeSetReference EOF ;
    public final EObject entryRuleTypeSetReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeSetReference = null;


        try {
            // InternalErrorModelParser.g:3226:57: (iv_ruleTypeSetReference= ruleTypeSetReference EOF )
            // InternalErrorModelParser.g:3227:2: iv_ruleTypeSetReference= ruleTypeSetReference EOF
            {
             newCompositeNode(grammarAccess.getTypeSetReferenceRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeSetReference=ruleTypeSetReference();

            state._fsp--;

             current =iv_ruleTypeSetReference; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeSetReference"
    // InternalErrorModelParser.g:3233:1: ruleTypeSetReference returns [EObject current=null] : this_TypeSetConstructor_0= ruleTypeSetConstructor ;
    public final EObject ruleTypeSetReference() throws RecognitionException {
        EObject current = null;

        EObject this_TypeSetConstructor_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3239:2: (this_TypeSetConstructor_0= ruleTypeSetConstructor )
            // InternalErrorModelParser.g:3240:2: this_TypeSetConstructor_0= ruleTypeSetConstructor
            {

            		newCompositeNode(grammarAccess.getTypeSetReferenceAccess().getTypeSetConstructorParserRuleCall());
            	
            pushFollow(FollowSets000.FOLLOW_2);
            this_TypeSetConstructor_0=ruleTypeSetConstructor();

            state._fsp--;


            		current = this_TypeSetConstructor_0;
            		afterParserOrEnumRuleCall();
            	

            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeSetElement"
    // InternalErrorModelParser.g:3251:1: entryRuleTypeSetElement returns [EObject current=null] : iv_ruleTypeSetElement= ruleTypeSetElement EOF ;
    public final EObject entryRuleTypeSetElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeSetElement = null;


        try {
            // InternalErrorModelParser.g:3251:55: (iv_ruleTypeSetElement= ruleTypeSetElement EOF )
            // InternalErrorModelParser.g:3252:2: iv_ruleTypeSetElement= ruleTypeSetElement EOF
            {
             newCompositeNode(grammarAccess.getTypeSetElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeSetElement=ruleTypeSetElement();

            state._fsp--;

             current =iv_ruleTypeSetElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeSetElement"
    // InternalErrorModelParser.g:3258:1: ruleTypeSetElement returns [EObject current=null] : ( ( ( ruleQEMREF ) ) (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )* ) ;
    public final EObject ruleTypeSetElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:3264:2: ( ( ( ( ruleQEMREF ) ) (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )* ) )
            // InternalErrorModelParser.g:3265:2: ( ( ( ruleQEMREF ) ) (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )* )
            {
            // InternalErrorModelParser.g:3265:2: ( ( ( ruleQEMREF ) ) (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )* )
            // InternalErrorModelParser.g:3266:3: ( ( ruleQEMREF ) ) (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )*
            {
            // InternalErrorModelParser.g:3266:3: ( ( ruleQEMREF ) )
            // InternalErrorModelParser.g:3267:4: ( ruleQEMREF )
            {
            // InternalErrorModelParser.g:3267:4: ( ruleQEMREF )
            // InternalErrorModelParser.g:3268:5: ruleQEMREF
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getTypeSetElementRule());
            					}
            				

            					newCompositeNode(grammarAccess.getTypeSetElementAccess().getTypeErrorTypesCrossReference_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_72);
            ruleQEMREF();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:3282:3: (otherlv_1= Asterisk ( ( ruleQEMREF ) ) )*
            loop117:
            do {
                int alt117=2;
                int LA117_0 = input.LA(1);

                if ( (LA117_0==Asterisk) ) {
                    alt117=1;
                }


                switch (alt117) {
            	case 1 :
            	    // InternalErrorModelParser.g:3283:4: otherlv_1= Asterisk ( ( ruleQEMREF ) )
            	    {
            	    otherlv_1=(Token)match(input,Asterisk,FollowSets000.FOLLOW_5); 

            	    				newLeafNode(otherlv_1, grammarAccess.getTypeSetElementAccess().getAsteriskKeyword_1_0());
            	    			
            	    // InternalErrorModelParser.g:3287:4: ( ( ruleQEMREF ) )
            	    // InternalErrorModelParser.g:3288:5: ( ruleQEMREF )
            	    {
            	    // InternalErrorModelParser.g:3288:5: ( ruleQEMREF )
            	    // InternalErrorModelParser.g:3289:6: ruleQEMREF
            	    {

            	    						if (current==null) {
            	    							current = createModelElement(grammarAccess.getTypeSetElementRule());
            	    						}
            	    					

            	    						newCompositeNode(grammarAccess.getTypeSetElementAccess().getTypeErrorTypesCrossReference_1_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_72);
            	    ruleQEMREF();

            	    state._fsp--;


            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleNoErrorTypeSet"
    // InternalErrorModelParser.g:3308:1: entryRuleNoErrorTypeSet returns [EObject current=null] : iv_ruleNoErrorTypeSet= ruleNoErrorTypeSet EOF ;
    public final EObject entryRuleNoErrorTypeSet() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNoErrorTypeSet = null;


        try {
            // InternalErrorModelParser.g:3308:55: (iv_ruleNoErrorTypeSet= ruleNoErrorTypeSet EOF )
            // InternalErrorModelParser.g:3309:2: iv_ruleNoErrorTypeSet= ruleNoErrorTypeSet EOF
            {
             newCompositeNode(grammarAccess.getNoErrorTypeSetRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleNoErrorTypeSet=ruleNoErrorTypeSet();

            state._fsp--;

             current =iv_ruleNoErrorTypeSet; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleNoErrorTypeSet"
    // InternalErrorModelParser.g:3315:1: ruleNoErrorTypeSet returns [EObject current=null] : ( () otherlv_1= LeftCurlyBracket ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) ) otherlv_3= RightCurlyBracket ) ;
    public final EObject ruleNoErrorTypeSet() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_typeTokens_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3321:2: ( ( () otherlv_1= LeftCurlyBracket ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) ) otherlv_3= RightCurlyBracket ) )
            // InternalErrorModelParser.g:3322:2: ( () otherlv_1= LeftCurlyBracket ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) ) otherlv_3= RightCurlyBracket )
            {
            // InternalErrorModelParser.g:3322:2: ( () otherlv_1= LeftCurlyBracket ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) ) otherlv_3= RightCurlyBracket )
            // InternalErrorModelParser.g:3323:3: () otherlv_1= LeftCurlyBracket ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) ) otherlv_3= RightCurlyBracket
            {
            // InternalErrorModelParser.g:3323:3: ()
            // InternalErrorModelParser.g:3324:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getNoErrorTypeSetAccess().getTypeSetAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,LeftCurlyBracket,FollowSets000.FOLLOW_73); 

            			newLeafNode(otherlv_1, grammarAccess.getNoErrorTypeSetAccess().getLeftCurlyBracketKeyword_1());
            		
            // InternalErrorModelParser.g:3334:3: ( (lv_typeTokens_2_0= ruleNoErrorTypeToken ) )
            // InternalErrorModelParser.g:3335:4: (lv_typeTokens_2_0= ruleNoErrorTypeToken )
            {
            // InternalErrorModelParser.g:3335:4: (lv_typeTokens_2_0= ruleNoErrorTypeToken )
            // InternalErrorModelParser.g:3336:5: lv_typeTokens_2_0= ruleNoErrorTypeToken
            {

            					newCompositeNode(grammarAccess.getNoErrorTypeSetAccess().getTypeTokensNoErrorTypeTokenParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_74);
            lv_typeTokens_2_0=ruleNoErrorTypeToken();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNoErrorTypeSetRule());
            					}
            					add(
            						current,
            						"typeTokens",
            						lv_typeTokens_2_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.NoErrorTypeToken");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,RightCurlyBracket,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getNoErrorTypeSetAccess().getRightCurlyBracketKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleNoErrorTypeToken"
    // InternalErrorModelParser.g:3361:1: entryRuleNoErrorTypeToken returns [EObject current=null] : iv_ruleNoErrorTypeToken= ruleNoErrorTypeToken EOF ;
    public final EObject entryRuleNoErrorTypeToken() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNoErrorTypeToken = null;


        try {
            // InternalErrorModelParser.g:3361:57: (iv_ruleNoErrorTypeToken= ruleNoErrorTypeToken EOF )
            // InternalErrorModelParser.g:3362:2: iv_ruleNoErrorTypeToken= ruleNoErrorTypeToken EOF
            {
             newCompositeNode(grammarAccess.getNoErrorTypeTokenRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleNoErrorTypeToken=ruleNoErrorTypeToken();

            state._fsp--;

             current =iv_ruleNoErrorTypeToken; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleNoErrorTypeToken"
    // InternalErrorModelParser.g:3368:1: ruleNoErrorTypeToken returns [EObject current=null] : ( () ( (lv_noError_1_0= Noerror ) ) ) ;
    public final EObject ruleNoErrorTypeToken() throws RecognitionException {
        EObject current = null;

        Token lv_noError_1_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:3374:2: ( ( () ( (lv_noError_1_0= Noerror ) ) ) )
            // InternalErrorModelParser.g:3375:2: ( () ( (lv_noError_1_0= Noerror ) ) )
            {
            // InternalErrorModelParser.g:3375:2: ( () ( (lv_noError_1_0= Noerror ) ) )
            // InternalErrorModelParser.g:3376:3: () ( (lv_noError_1_0= Noerror ) )
            {
            // InternalErrorModelParser.g:3376:3: ()
            // InternalErrorModelParser.g:3377:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getNoErrorTypeTokenAccess().getTypeTokenAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:3383:3: ( (lv_noError_1_0= Noerror ) )
            // InternalErrorModelParser.g:3384:4: (lv_noError_1_0= Noerror )
            {
            // InternalErrorModelParser.g:3384:4: (lv_noError_1_0= Noerror )
            // InternalErrorModelParser.g:3385:5: lv_noError_1_0= Noerror
            {
            lv_noError_1_0=(Token)match(input,Noerror,FollowSets000.FOLLOW_2); 

            					newLeafNode(lv_noError_1_0, grammarAccess.getNoErrorTypeTokenAccess().getNoErrorNoerrorKeyword_1_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getNoErrorTypeTokenRule());
            					}
            					setWithLastConsumed(current, "noError", lv_noError_1_0 != null, "noerror");
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeToken"
    // InternalErrorModelParser.g:3401:1: entryRuleTypeToken returns [EObject current=null] : iv_ruleTypeToken= ruleTypeToken EOF ;
    public final EObject entryRuleTypeToken() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeToken = null;


        try {
            // InternalErrorModelParser.g:3401:50: (iv_ruleTypeToken= ruleTypeToken EOF )
            // InternalErrorModelParser.g:3402:2: iv_ruleTypeToken= ruleTypeToken EOF
            {
             newCompositeNode(grammarAccess.getTypeTokenRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeToken=ruleTypeToken();

            state._fsp--;

             current =iv_ruleTypeToken; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeToken"
    // InternalErrorModelParser.g:3408:1: ruleTypeToken returns [EObject current=null] : this_TypeSetReference_0= ruleTypeSetReference ;
    public final EObject ruleTypeToken() throws RecognitionException {
        EObject current = null;

        EObject this_TypeSetReference_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3414:2: (this_TypeSetReference_0= ruleTypeSetReference )
            // InternalErrorModelParser.g:3415:2: this_TypeSetReference_0= ruleTypeSetReference
            {

            		newCompositeNode(grammarAccess.getTypeTokenAccess().getTypeSetReferenceParserRuleCall());
            	
            pushFollow(FollowSets000.FOLLOW_2);
            this_TypeSetReference_0=ruleTypeSetReference();

            state._fsp--;


            		current = this_TypeSetReference_0;
            		afterParserOrEnumRuleCall();
            	

            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeTokenOrNoError"
    // InternalErrorModelParser.g:3426:1: entryRuleTypeTokenOrNoError returns [EObject current=null] : iv_ruleTypeTokenOrNoError= ruleTypeTokenOrNoError EOF ;
    public final EObject entryRuleTypeTokenOrNoError() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeTokenOrNoError = null;


        try {
            // InternalErrorModelParser.g:3426:59: (iv_ruleTypeTokenOrNoError= ruleTypeTokenOrNoError EOF )
            // InternalErrorModelParser.g:3427:2: iv_ruleTypeTokenOrNoError= ruleTypeTokenOrNoError EOF
            {
             newCompositeNode(grammarAccess.getTypeTokenOrNoErrorRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeTokenOrNoError=ruleTypeTokenOrNoError();

            state._fsp--;

             current =iv_ruleTypeTokenOrNoError; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeTokenOrNoError"
    // InternalErrorModelParser.g:3433:1: ruleTypeTokenOrNoError returns [EObject current=null] : (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet ) ;
    public final EObject ruleTypeTokenOrNoError() throws RecognitionException {
        EObject current = null;

        EObject this_TypeSetReference_0 = null;

        EObject this_NoErrorTypeSet_1 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3439:2: ( (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet ) )
            // InternalErrorModelParser.g:3440:2: (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet )
            {
            // InternalErrorModelParser.g:3440:2: (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet )
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==LeftCurlyBracket) ) {
                int LA118_1 = input.LA(2);

                if ( (LA118_1==RULE_ID) ) {
                    alt118=1;
                }
                else if ( (LA118_1==Noerror) ) {
                    alt118=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 118, 1, input);

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

                throw nvae;
            }
            switch (alt118) {
                case 1 :
                    // InternalErrorModelParser.g:3441:3: this_TypeSetReference_0= ruleTypeSetReference
                    {

                    			newCompositeNode(grammarAccess.getTypeTokenOrNoErrorAccess().getTypeSetReferenceParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_TypeSetReference_0=ruleTypeSetReference();

                    state._fsp--;


                    			current = this_TypeSetReference_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:3450:3: this_NoErrorTypeSet_1= ruleNoErrorTypeSet
                    {

                    			newCompositeNode(grammarAccess.getTypeTokenOrNoErrorAccess().getNoErrorTypeSetParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_NoErrorTypeSet_1=ruleNoErrorTypeSet();

                    state._fsp--;


                    			current = this_NoErrorTypeSet_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeTokenConstraint"
    // InternalErrorModelParser.g:3462:1: entryRuleTypeTokenConstraint returns [EObject current=null] : iv_ruleTypeTokenConstraint= ruleTypeTokenConstraint EOF ;
    public final EObject entryRuleTypeTokenConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeTokenConstraint = null;


        try {
            // InternalErrorModelParser.g:3462:60: (iv_ruleTypeTokenConstraint= ruleTypeTokenConstraint EOF )
            // InternalErrorModelParser.g:3463:2: iv_ruleTypeTokenConstraint= ruleTypeTokenConstraint EOF
            {
             newCompositeNode(grammarAccess.getTypeTokenConstraintRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeTokenConstraint=ruleTypeTokenConstraint();

            state._fsp--;

             current =iv_ruleTypeTokenConstraint; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeTokenConstraint"
    // InternalErrorModelParser.g:3469:1: ruleTypeTokenConstraint returns [EObject current=null] : this_TypeSetReference_0= ruleTypeSetReference ;
    public final EObject ruleTypeTokenConstraint() throws RecognitionException {
        EObject current = null;

        EObject this_TypeSetReference_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3475:2: (this_TypeSetReference_0= ruleTypeSetReference )
            // InternalErrorModelParser.g:3476:2: this_TypeSetReference_0= ruleTypeSetReference
            {

            		newCompositeNode(grammarAccess.getTypeTokenConstraintAccess().getTypeSetReferenceParserRuleCall());
            	
            pushFollow(FollowSets000.FOLLOW_2);
            this_TypeSetReference_0=ruleTypeSetReference();

            state._fsp--;


            		current = this_TypeSetReference_0;
            		afterParserOrEnumRuleCall();
            	

            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeTokenConstraintNoError"
    // InternalErrorModelParser.g:3487:1: entryRuleTypeTokenConstraintNoError returns [EObject current=null] : iv_ruleTypeTokenConstraintNoError= ruleTypeTokenConstraintNoError EOF ;
    public final EObject entryRuleTypeTokenConstraintNoError() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeTokenConstraintNoError = null;


        try {
            // InternalErrorModelParser.g:3487:67: (iv_ruleTypeTokenConstraintNoError= ruleTypeTokenConstraintNoError EOF )
            // InternalErrorModelParser.g:3488:2: iv_ruleTypeTokenConstraintNoError= ruleTypeTokenConstraintNoError EOF
            {
             newCompositeNode(grammarAccess.getTypeTokenConstraintNoErrorRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeTokenConstraintNoError=ruleTypeTokenConstraintNoError();

            state._fsp--;

             current =iv_ruleTypeTokenConstraintNoError; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeTokenConstraintNoError"
    // InternalErrorModelParser.g:3494:1: ruleTypeTokenConstraintNoError returns [EObject current=null] : (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet ) ;
    public final EObject ruleTypeTokenConstraintNoError() throws RecognitionException {
        EObject current = null;

        EObject this_TypeSetReference_0 = null;

        EObject this_NoErrorTypeSet_1 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3500:2: ( (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet ) )
            // InternalErrorModelParser.g:3501:2: (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet )
            {
            // InternalErrorModelParser.g:3501:2: (this_TypeSetReference_0= ruleTypeSetReference | this_NoErrorTypeSet_1= ruleNoErrorTypeSet )
            int alt119=2;
            int LA119_0 = input.LA(1);

            if ( (LA119_0==LeftCurlyBracket) ) {
                int LA119_1 = input.LA(2);

                if ( (LA119_1==RULE_ID) ) {
                    alt119=1;
                }
                else if ( (LA119_1==Noerror) ) {
                    alt119=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 119, 1, input);

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

                throw nvae;
            }
            switch (alt119) {
                case 1 :
                    // InternalErrorModelParser.g:3502:3: this_TypeSetReference_0= ruleTypeSetReference
                    {

                    			newCompositeNode(grammarAccess.getTypeTokenConstraintNoErrorAccess().getTypeSetReferenceParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_TypeSetReference_0=ruleTypeSetReference();

                    state._fsp--;


                    			current = this_TypeSetReference_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:3511:3: this_NoErrorTypeSet_1= ruleNoErrorTypeSet
                    {

                    			newCompositeNode(grammarAccess.getTypeTokenConstraintNoErrorAccess().getNoErrorTypeSetParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_NoErrorTypeSet_1=ruleNoErrorTypeSet();

                    state._fsp--;


                    			current = this_NoErrorTypeSet_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeTransformationSet"
    // InternalErrorModelParser.g:3523:1: entryRuleTypeTransformationSet returns [EObject current=null] : iv_ruleTypeTransformationSet= ruleTypeTransformationSet EOF ;
    public final EObject entryRuleTypeTransformationSet() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeTransformationSet = null;


        try {
            // InternalErrorModelParser.g:3523:62: (iv_ruleTypeTransformationSet= ruleTypeTransformationSet EOF )
            // InternalErrorModelParser.g:3524:2: iv_ruleTypeTransformationSet= ruleTypeTransformationSet EOF
            {
             newCompositeNode(grammarAccess.getTypeTransformationSetRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeTransformationSet=ruleTypeTransformationSet();

            state._fsp--;

             current =iv_ruleTypeTransformationSet; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeTransformationSet"
    // InternalErrorModelParser.g:3530:1: ruleTypeTransformationSet returns [EObject current=null] : (otherlv_0= Type otherlv_1= Transformations ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_transformation_9_0= ruleTypeTransformation ) )+ otherlv_10= End otherlv_11= Transformations otherlv_12= Semicolon ) ;
    public final EObject ruleTypeTransformationSet() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        EObject lv_transformation_9_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3536:2: ( (otherlv_0= Type otherlv_1= Transformations ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_transformation_9_0= ruleTypeTransformation ) )+ otherlv_10= End otherlv_11= Transformations otherlv_12= Semicolon ) )
            // InternalErrorModelParser.g:3537:2: (otherlv_0= Type otherlv_1= Transformations ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_transformation_9_0= ruleTypeTransformation ) )+ otherlv_10= End otherlv_11= Transformations otherlv_12= Semicolon )
            {
            // InternalErrorModelParser.g:3537:2: (otherlv_0= Type otherlv_1= Transformations ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_transformation_9_0= ruleTypeTransformation ) )+ otherlv_10= End otherlv_11= Transformations otherlv_12= Semicolon )
            // InternalErrorModelParser.g:3538:3: otherlv_0= Type otherlv_1= Transformations ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_transformation_9_0= ruleTypeTransformation ) )+ otherlv_10= End otherlv_11= Transformations otherlv_12= Semicolon
            {
            otherlv_0=(Token)match(input,Type,FollowSets000.FOLLOW_20); 

            			newLeafNode(otherlv_0, grammarAccess.getTypeTransformationSetAccess().getTypeKeyword_0());
            		
            otherlv_1=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getTypeTransformationSetAccess().getTransformationsKeyword_1());
            		
            // InternalErrorModelParser.g:3546:3: ( (lv_name_2_0= RULE_ID ) )
            // InternalErrorModelParser.g:3547:4: (lv_name_2_0= RULE_ID )
            {
            // InternalErrorModelParser.g:3547:4: (lv_name_2_0= RULE_ID )
            // InternalErrorModelParser.g:3548:5: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_75); 

            					newLeafNode(lv_name_2_0, grammarAccess.getTypeTransformationSetAccess().getNameIDTerminalRuleCall_2_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getTypeTransformationSetRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            // InternalErrorModelParser.g:3564:3: (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )?
            int alt121=2;
            int LA121_0 = input.LA(1);

            if ( (LA121_0==Use) ) {
                alt121=1;
            }
            switch (alt121) {
                case 1 :
                    // InternalErrorModelParser.g:3565:4: otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon
                    {
                    otherlv_3=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_3, grammarAccess.getTypeTransformationSetAccess().getUseKeyword_3_0());
                    			
                    otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getTypeTransformationSetAccess().getTypesKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:3573:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:3574:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:3574:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:3575:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getTypeTransformationSetRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getTypeTransformationSetAccess().getUseTypesErrorModelLibraryCrossReference_3_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_6);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:3589:4: (otherlv_6= Comma ( ( ruleQEMREF ) ) )*
                    loop120:
                    do {
                        int alt120=2;
                        int LA120_0 = input.LA(1);

                        if ( (LA120_0==Comma) ) {
                            alt120=1;
                        }


                        switch (alt120) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:3590:5: otherlv_6= Comma ( ( ruleQEMREF ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getTypeTransformationSetAccess().getCommaKeyword_3_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:3594:5: ( ( ruleQEMREF ) )
                    	    // InternalErrorModelParser.g:3595:6: ( ruleQEMREF )
                    	    {
                    	    // InternalErrorModelParser.g:3595:6: ( ruleQEMREF )
                    	    // InternalErrorModelParser.g:3596:7: ruleQEMREF
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getTypeTransformationSetRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getTypeTransformationSetAccess().getUseTypesErrorModelLibraryCrossReference_3_3_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    ruleQEMREF();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_75); 

                    				newLeafNode(otherlv_8, grammarAccess.getTypeTransformationSetAccess().getSemicolonKeyword_3_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:3616:3: ( (lv_transformation_9_0= ruleTypeTransformation ) )+
            int cnt122=0;
            loop122:
            do {
                int alt122=2;
                int LA122_0 = input.LA(1);

                if ( (LA122_0==All||LA122_0==LeftCurlyBracket) ) {
                    alt122=1;
                }


                switch (alt122) {
            	case 1 :
            	    // InternalErrorModelParser.g:3617:4: (lv_transformation_9_0= ruleTypeTransformation )
            	    {
            	    // InternalErrorModelParser.g:3617:4: (lv_transformation_9_0= ruleTypeTransformation )
            	    // InternalErrorModelParser.g:3618:5: lv_transformation_9_0= ruleTypeTransformation
            	    {

            	    					newCompositeNode(grammarAccess.getTypeTransformationSetAccess().getTransformationTypeTransformationParserRuleCall_4_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_76);
            	    lv_transformation_9_0=ruleTypeTransformation();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getTypeTransformationSetRule());
            	    					}
            	    					add(
            	    						current,
            	    						"transformation",
            	    						lv_transformation_9_0,
            	    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTransformation");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt122 >= 1 ) break loop122;
                        EarlyExitException eee =
                            new EarlyExitException(122, input);
                        throw eee;
                }
                cnt122++;
            } while (true);

            otherlv_10=(Token)match(input,End,FollowSets000.FOLLOW_20); 

            			newLeafNode(otherlv_10, grammarAccess.getTypeTransformationSetAccess().getEndKeyword_5());
            		
            otherlv_11=(Token)match(input,Transformations,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_11, grammarAccess.getTypeTransformationSetAccess().getTransformationsKeyword_6());
            		
            otherlv_12=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_12, grammarAccess.getTypeTransformationSetAccess().getSemicolonKeyword_7());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeTransformation"
    // InternalErrorModelParser.g:3651:1: entryRuleTypeTransformation returns [EObject current=null] : iv_ruleTypeTransformation= ruleTypeTransformation EOF ;
    public final EObject entryRuleTypeTransformation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeTransformation = null;


        try {
            // InternalErrorModelParser.g:3651:59: (iv_ruleTypeTransformation= ruleTypeTransformation EOF )
            // InternalErrorModelParser.g:3652:2: iv_ruleTypeTransformation= ruleTypeTransformation EOF
            {
             newCompositeNode(grammarAccess.getTypeTransformationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeTransformation=ruleTypeTransformation();

            state._fsp--;

             current =iv_ruleTypeTransformation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeTransformation"
    // InternalErrorModelParser.g:3658:1: ruleTypeTransformation returns [EObject current=null] : ( ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) ) otherlv_2= HyphenMinusLeftSquareBracket ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )? otherlv_4= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_target_5_0= ruleTypeToken ) ) otherlv_6= Semicolon ) ;
    public final EObject ruleTypeTransformation() throws RecognitionException {
        EObject current = null;

        Token lv_allSources_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_source_0_0 = null;

        EObject lv_contributor_3_0 = null;

        EObject lv_target_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3664:2: ( ( ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) ) otherlv_2= HyphenMinusLeftSquareBracket ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )? otherlv_4= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_target_5_0= ruleTypeToken ) ) otherlv_6= Semicolon ) )
            // InternalErrorModelParser.g:3665:2: ( ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) ) otherlv_2= HyphenMinusLeftSquareBracket ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )? otherlv_4= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_target_5_0= ruleTypeToken ) ) otherlv_6= Semicolon )
            {
            // InternalErrorModelParser.g:3665:2: ( ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) ) otherlv_2= HyphenMinusLeftSquareBracket ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )? otherlv_4= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_target_5_0= ruleTypeToken ) ) otherlv_6= Semicolon )
            // InternalErrorModelParser.g:3666:3: ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) ) otherlv_2= HyphenMinusLeftSquareBracket ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )? otherlv_4= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_target_5_0= ruleTypeToken ) ) otherlv_6= Semicolon
            {
            // InternalErrorModelParser.g:3666:3: ( ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) ) | ( (lv_allSources_1_0= All ) ) )
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==LeftCurlyBracket) ) {
                alt123=1;
            }
            else if ( (LA123_0==All) ) {
                alt123=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;
            }
            switch (alt123) {
                case 1 :
                    // InternalErrorModelParser.g:3667:4: ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) )
                    {
                    // InternalErrorModelParser.g:3667:4: ( (lv_source_0_0= ruleTypeTokenConstraintNoError ) )
                    // InternalErrorModelParser.g:3668:5: (lv_source_0_0= ruleTypeTokenConstraintNoError )
                    {
                    // InternalErrorModelParser.g:3668:5: (lv_source_0_0= ruleTypeTokenConstraintNoError )
                    // InternalErrorModelParser.g:3669:6: lv_source_0_0= ruleTypeTokenConstraintNoError
                    {

                    						newCompositeNode(grammarAccess.getTypeTransformationAccess().getSourceTypeTokenConstraintNoErrorParserRuleCall_0_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_77);
                    lv_source_0_0=ruleTypeTokenConstraintNoError();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getTypeTransformationRule());
                    						}
                    						set(
                    							current,
                    							"source",
                    							lv_source_0_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraintNoError");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:3687:4: ( (lv_allSources_1_0= All ) )
                    {
                    // InternalErrorModelParser.g:3687:4: ( (lv_allSources_1_0= All ) )
                    // InternalErrorModelParser.g:3688:5: (lv_allSources_1_0= All )
                    {
                    // InternalErrorModelParser.g:3688:5: (lv_allSources_1_0= All )
                    // InternalErrorModelParser.g:3689:6: lv_allSources_1_0= All
                    {
                    lv_allSources_1_0=(Token)match(input,All,FollowSets000.FOLLOW_77); 

                    						newLeafNode(lv_allSources_1_0, grammarAccess.getTypeTransformationAccess().getAllSourcesAllKeyword_0_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getTypeTransformationRule());
                    						}
                    						setWithLastConsumed(current, "allSources", lv_allSources_1_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,HyphenMinusLeftSquareBracket,FollowSets000.FOLLOW_78); 

            			newLeafNode(otherlv_2, grammarAccess.getTypeTransformationAccess().getHyphenMinusLeftSquareBracketKeyword_1());
            		
            // InternalErrorModelParser.g:3706:3: ( (lv_contributor_3_0= ruleTypeTokenConstraintNoError ) )?
            int alt124=2;
            int LA124_0 = input.LA(1);

            if ( (LA124_0==LeftCurlyBracket) ) {
                alt124=1;
            }
            switch (alt124) {
                case 1 :
                    // InternalErrorModelParser.g:3707:4: (lv_contributor_3_0= ruleTypeTokenConstraintNoError )
                    {
                    // InternalErrorModelParser.g:3707:4: (lv_contributor_3_0= ruleTypeTokenConstraintNoError )
                    // InternalErrorModelParser.g:3708:5: lv_contributor_3_0= ruleTypeTokenConstraintNoError
                    {

                    					newCompositeNode(grammarAccess.getTypeTransformationAccess().getContributorTypeTokenConstraintNoErrorParserRuleCall_2_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_79);
                    lv_contributor_3_0=ruleTypeTokenConstraintNoError();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getTypeTransformationRule());
                    					}
                    					set(
                    						current,
                    						"contributor",
                    						lv_contributor_3_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraintNoError");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,RightSquareBracketHyphenMinusGreaterThanSign,FollowSets000.FOLLOW_70); 

            			newLeafNode(otherlv_4, grammarAccess.getTypeTransformationAccess().getRightSquareBracketHyphenMinusGreaterThanSignKeyword_3());
            		
            // InternalErrorModelParser.g:3729:3: ( (lv_target_5_0= ruleTypeToken ) )
            // InternalErrorModelParser.g:3730:4: (lv_target_5_0= ruleTypeToken )
            {
            // InternalErrorModelParser.g:3730:4: (lv_target_5_0= ruleTypeToken )
            // InternalErrorModelParser.g:3731:5: lv_target_5_0= ruleTypeToken
            {

            					newCompositeNode(grammarAccess.getTypeTransformationAccess().getTargetTypeTokenParserRuleCall_4_0());
            				
            pushFollow(FollowSets000.FOLLOW_10);
            lv_target_5_0=ruleTypeToken();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getTypeTransformationRule());
            					}
            					set(
            						current,
            						"target",
            						lv_target_5_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_6=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getTypeTransformationAccess().getSemicolonKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeMappingSet"
    // InternalErrorModelParser.g:3756:1: entryRuleTypeMappingSet returns [EObject current=null] : iv_ruleTypeMappingSet= ruleTypeMappingSet EOF ;
    public final EObject entryRuleTypeMappingSet() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeMappingSet = null;


        try {
            // InternalErrorModelParser.g:3756:55: (iv_ruleTypeMappingSet= ruleTypeMappingSet EOF )
            // InternalErrorModelParser.g:3757:2: iv_ruleTypeMappingSet= ruleTypeMappingSet EOF
            {
             newCompositeNode(grammarAccess.getTypeMappingSetRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeMappingSet=ruleTypeMappingSet();

            state._fsp--;

             current =iv_ruleTypeMappingSet; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeMappingSet"
    // InternalErrorModelParser.g:3763:1: ruleTypeMappingSet returns [EObject current=null] : (otherlv_0= Type otherlv_1= Mappings ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_mapping_9_0= ruleTypeMapping ) )+ otherlv_10= End otherlv_11= Mappings otherlv_12= Semicolon ) ;
    public final EObject ruleTypeMappingSet() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        EObject lv_mapping_9_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3769:2: ( (otherlv_0= Type otherlv_1= Mappings ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_mapping_9_0= ruleTypeMapping ) )+ otherlv_10= End otherlv_11= Mappings otherlv_12= Semicolon ) )
            // InternalErrorModelParser.g:3770:2: (otherlv_0= Type otherlv_1= Mappings ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_mapping_9_0= ruleTypeMapping ) )+ otherlv_10= End otherlv_11= Mappings otherlv_12= Semicolon )
            {
            // InternalErrorModelParser.g:3770:2: (otherlv_0= Type otherlv_1= Mappings ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_mapping_9_0= ruleTypeMapping ) )+ otherlv_10= End otherlv_11= Mappings otherlv_12= Semicolon )
            // InternalErrorModelParser.g:3771:3: otherlv_0= Type otherlv_1= Mappings ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? ( (lv_mapping_9_0= ruleTypeMapping ) )+ otherlv_10= End otherlv_11= Mappings otherlv_12= Semicolon
            {
            otherlv_0=(Token)match(input,Type,FollowSets000.FOLLOW_11); 

            			newLeafNode(otherlv_0, grammarAccess.getTypeMappingSetAccess().getTypeKeyword_0());
            		
            otherlv_1=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getTypeMappingSetAccess().getMappingsKeyword_1());
            		
            // InternalErrorModelParser.g:3779:3: ( (lv_name_2_0= RULE_ID ) )
            // InternalErrorModelParser.g:3780:4: (lv_name_2_0= RULE_ID )
            {
            // InternalErrorModelParser.g:3780:4: (lv_name_2_0= RULE_ID )
            // InternalErrorModelParser.g:3781:5: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_80); 

            					newLeafNode(lv_name_2_0, grammarAccess.getTypeMappingSetAccess().getNameIDTerminalRuleCall_2_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getTypeMappingSetRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            // InternalErrorModelParser.g:3797:3: (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )?
            int alt126=2;
            int LA126_0 = input.LA(1);

            if ( (LA126_0==Use) ) {
                alt126=1;
            }
            switch (alt126) {
                case 1 :
                    // InternalErrorModelParser.g:3798:4: otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon
                    {
                    otherlv_3=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_3, grammarAccess.getTypeMappingSetAccess().getUseKeyword_3_0());
                    			
                    otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getTypeMappingSetAccess().getTypesKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:3806:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:3807:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:3807:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:3808:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getTypeMappingSetRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getTypeMappingSetAccess().getUseTypesErrorModelLibraryCrossReference_3_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_6);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:3822:4: (otherlv_6= Comma ( ( ruleQEMREF ) ) )*
                    loop125:
                    do {
                        int alt125=2;
                        int LA125_0 = input.LA(1);

                        if ( (LA125_0==Comma) ) {
                            alt125=1;
                        }


                        switch (alt125) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:3823:5: otherlv_6= Comma ( ( ruleQEMREF ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getTypeMappingSetAccess().getCommaKeyword_3_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:3827:5: ( ( ruleQEMREF ) )
                    	    // InternalErrorModelParser.g:3828:6: ( ruleQEMREF )
                    	    {
                    	    // InternalErrorModelParser.g:3828:6: ( ruleQEMREF )
                    	    // InternalErrorModelParser.g:3829:7: ruleQEMREF
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getTypeMappingSetRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getTypeMappingSetAccess().getUseTypesErrorModelLibraryCrossReference_3_3_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    ruleQEMREF();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_80); 

                    				newLeafNode(otherlv_8, grammarAccess.getTypeMappingSetAccess().getSemicolonKeyword_3_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:3849:3: ( (lv_mapping_9_0= ruleTypeMapping ) )+
            int cnt127=0;
            loop127:
            do {
                int alt127=2;
                int LA127_0 = input.LA(1);

                if ( (LA127_0==LeftCurlyBracket) ) {
                    alt127=1;
                }


                switch (alt127) {
            	case 1 :
            	    // InternalErrorModelParser.g:3850:4: (lv_mapping_9_0= ruleTypeMapping )
            	    {
            	    // InternalErrorModelParser.g:3850:4: (lv_mapping_9_0= ruleTypeMapping )
            	    // InternalErrorModelParser.g:3851:5: lv_mapping_9_0= ruleTypeMapping
            	    {

            	    					newCompositeNode(grammarAccess.getTypeMappingSetAccess().getMappingTypeMappingParserRuleCall_4_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_81);
            	    lv_mapping_9_0=ruleTypeMapping();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getTypeMappingSetRule());
            	    					}
            	    					add(
            	    						current,
            	    						"mapping",
            	    						lv_mapping_9_0,
            	    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeMapping");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt127 >= 1 ) break loop127;
                        EarlyExitException eee =
                            new EarlyExitException(127, input);
                        throw eee;
                }
                cnt127++;
            } while (true);

            otherlv_10=(Token)match(input,End,FollowSets000.FOLLOW_11); 

            			newLeafNode(otherlv_10, grammarAccess.getTypeMappingSetAccess().getEndKeyword_5());
            		
            otherlv_11=(Token)match(input,Mappings,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_11, grammarAccess.getTypeMappingSetAccess().getMappingsKeyword_6());
            		
            otherlv_12=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_12, grammarAccess.getTypeMappingSetAccess().getSemicolonKeyword_7());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTypeMapping"
    // InternalErrorModelParser.g:3884:1: entryRuleTypeMapping returns [EObject current=null] : iv_ruleTypeMapping= ruleTypeMapping EOF ;
    public final EObject entryRuleTypeMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeMapping = null;


        try {
            // InternalErrorModelParser.g:3884:52: (iv_ruleTypeMapping= ruleTypeMapping EOF )
            // InternalErrorModelParser.g:3885:2: iv_ruleTypeMapping= ruleTypeMapping EOF
            {
             newCompositeNode(grammarAccess.getTypeMappingRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTypeMapping=ruleTypeMapping();

            state._fsp--;

             current =iv_ruleTypeMapping; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTypeMapping"
    // InternalErrorModelParser.g:3891:1: ruleTypeMapping returns [EObject current=null] : ( ( (lv_source_0_0= ruleTypeTokenConstraint ) ) otherlv_1= HyphenMinusGreaterThanSign ( (lv_target_2_0= ruleTypeToken ) ) otherlv_3= Semicolon ) ;
    public final EObject ruleTypeMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_source_0_0 = null;

        EObject lv_target_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3897:2: ( ( ( (lv_source_0_0= ruleTypeTokenConstraint ) ) otherlv_1= HyphenMinusGreaterThanSign ( (lv_target_2_0= ruleTypeToken ) ) otherlv_3= Semicolon ) )
            // InternalErrorModelParser.g:3898:2: ( ( (lv_source_0_0= ruleTypeTokenConstraint ) ) otherlv_1= HyphenMinusGreaterThanSign ( (lv_target_2_0= ruleTypeToken ) ) otherlv_3= Semicolon )
            {
            // InternalErrorModelParser.g:3898:2: ( ( (lv_source_0_0= ruleTypeTokenConstraint ) ) otherlv_1= HyphenMinusGreaterThanSign ( (lv_target_2_0= ruleTypeToken ) ) otherlv_3= Semicolon )
            // InternalErrorModelParser.g:3899:3: ( (lv_source_0_0= ruleTypeTokenConstraint ) ) otherlv_1= HyphenMinusGreaterThanSign ( (lv_target_2_0= ruleTypeToken ) ) otherlv_3= Semicolon
            {
            // InternalErrorModelParser.g:3899:3: ( (lv_source_0_0= ruleTypeTokenConstraint ) )
            // InternalErrorModelParser.g:3900:4: (lv_source_0_0= ruleTypeTokenConstraint )
            {
            // InternalErrorModelParser.g:3900:4: (lv_source_0_0= ruleTypeTokenConstraint )
            // InternalErrorModelParser.g:3901:5: lv_source_0_0= ruleTypeTokenConstraint
            {

            					newCompositeNode(grammarAccess.getTypeMappingAccess().getSourceTypeTokenConstraintParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_82);
            lv_source_0_0=ruleTypeTokenConstraint();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getTypeMappingRule());
            					}
            					set(
            						current,
            						"source",
            						lv_source_0_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,HyphenMinusGreaterThanSign,FollowSets000.FOLLOW_70); 

            			newLeafNode(otherlv_1, grammarAccess.getTypeMappingAccess().getHyphenMinusGreaterThanSignKeyword_1());
            		
            // InternalErrorModelParser.g:3922:3: ( (lv_target_2_0= ruleTypeToken ) )
            // InternalErrorModelParser.g:3923:4: (lv_target_2_0= ruleTypeToken )
            {
            // InternalErrorModelParser.g:3923:4: (lv_target_2_0= ruleTypeToken )
            // InternalErrorModelParser.g:3924:5: lv_target_2_0= ruleTypeToken
            {

            					newCompositeNode(grammarAccess.getTypeMappingAccess().getTargetTypeTokenParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_10);
            lv_target_2_0=ruleTypeToken();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getTypeMappingRule());
            					}
            					set(
            						current,
            						"target",
            						lv_target_2_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getTypeMappingAccess().getSemicolonKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorPropagation"
    // InternalErrorModelParser.g:3949:1: entryRuleErrorPropagation returns [EObject current=null] : iv_ruleErrorPropagation= ruleErrorPropagation EOF ;
    public final EObject entryRuleErrorPropagation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorPropagation = null;


        try {
            // InternalErrorModelParser.g:3949:57: (iv_ruleErrorPropagation= ruleErrorPropagation EOF )
            // InternalErrorModelParser.g:3950:2: iv_ruleErrorPropagation= ruleErrorPropagation EOF
            {
             newCompositeNode(grammarAccess.getErrorPropagationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorPropagation=ruleErrorPropagation();

            state._fsp--;

             current =iv_ruleErrorPropagation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorPropagation"
    // InternalErrorModelParser.g:3956:1: ruleErrorPropagation returns [EObject current=null] : ( () ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) ) otherlv_3= Colon ( (lv_not_4_0= Not ) )? ( (lv_direction_5_0= rulePropagationDirection ) ) otherlv_6= Propagation ( (lv_typeSet_7_0= ruleTypeSetReference ) ) otherlv_8= Semicolon ) ;
    public final EObject ruleErrorPropagation() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        Token lv_not_4_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_kind_1_0 = null;

        EObject lv_featureorPPRef_2_0 = null;

        AntlrDatatypeRuleToken lv_direction_5_0 = null;

        EObject lv_typeSet_7_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:3962:2: ( ( () ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) ) otherlv_3= Colon ( (lv_not_4_0= Not ) )? ( (lv_direction_5_0= rulePropagationDirection ) ) otherlv_6= Propagation ( (lv_typeSet_7_0= ruleTypeSetReference ) ) otherlv_8= Semicolon ) )
            // InternalErrorModelParser.g:3963:2: ( () ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) ) otherlv_3= Colon ( (lv_not_4_0= Not ) )? ( (lv_direction_5_0= rulePropagationDirection ) ) otherlv_6= Propagation ( (lv_typeSet_7_0= ruleTypeSetReference ) ) otherlv_8= Semicolon )
            {
            // InternalErrorModelParser.g:3963:2: ( () ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) ) otherlv_3= Colon ( (lv_not_4_0= Not ) )? ( (lv_direction_5_0= rulePropagationDirection ) ) otherlv_6= Propagation ( (lv_typeSet_7_0= ruleTypeSetReference ) ) otherlv_8= Semicolon )
            // InternalErrorModelParser.g:3964:3: () ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) ) otherlv_3= Colon ( (lv_not_4_0= Not ) )? ( (lv_direction_5_0= rulePropagationDirection ) ) otherlv_6= Propagation ( (lv_typeSet_7_0= ruleTypeSetReference ) ) otherlv_8= Semicolon
            {
            // InternalErrorModelParser.g:3964:3: ()
            // InternalErrorModelParser.g:3965:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getErrorPropagationAccess().getErrorPropagationAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:3971:3: ( ( (lv_kind_1_0= rulePropagationKind ) ) | ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) ) )
            int alt128=2;
            int LA128_0 = input.LA(1);

            if ( (LA128_0==Connection||LA128_0==Processor||LA128_0==Bindings||LA128_0==Binding||LA128_0==Access||LA128_0==Memory) ) {
                alt128=1;
            }
            else if ( (LA128_0==RULE_ID) ) {
                alt128=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 128, 0, input);

                throw nvae;
            }
            switch (alt128) {
                case 1 :
                    // InternalErrorModelParser.g:3972:4: ( (lv_kind_1_0= rulePropagationKind ) )
                    {
                    // InternalErrorModelParser.g:3972:4: ( (lv_kind_1_0= rulePropagationKind ) )
                    // InternalErrorModelParser.g:3973:5: (lv_kind_1_0= rulePropagationKind )
                    {
                    // InternalErrorModelParser.g:3973:5: (lv_kind_1_0= rulePropagationKind )
                    // InternalErrorModelParser.g:3974:6: lv_kind_1_0= rulePropagationKind
                    {

                    						newCompositeNode(grammarAccess.getErrorPropagationAccess().getKindPropagationKindParserRuleCall_1_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_83);
                    lv_kind_1_0=rulePropagationKind();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorPropagationRule());
                    						}
                    						set(
                    							current,
                    							"kind",
                    							lv_kind_1_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationKind");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:3992:4: ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) )
                    {
                    // InternalErrorModelParser.g:3992:4: ( (lv_featureorPPRef_2_0= ruleFeatureorPPReference ) )
                    // InternalErrorModelParser.g:3993:5: (lv_featureorPPRef_2_0= ruleFeatureorPPReference )
                    {
                    // InternalErrorModelParser.g:3993:5: (lv_featureorPPRef_2_0= ruleFeatureorPPReference )
                    // InternalErrorModelParser.g:3994:6: lv_featureorPPRef_2_0= ruleFeatureorPPReference
                    {

                    						newCompositeNode(grammarAccess.getErrorPropagationAccess().getFeatureorPPRefFeatureorPPReferenceParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_83);
                    lv_featureorPPRef_2_0=ruleFeatureorPPReference();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorPropagationRule());
                    						}
                    						set(
                    							current,
                    							"featureorPPRef",
                    							lv_featureorPPRef_2_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.FeatureorPPReference");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,Colon,FollowSets000.FOLLOW_84); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorPropagationAccess().getColonKeyword_2());
            		
            // InternalErrorModelParser.g:4016:3: ( (lv_not_4_0= Not ) )?
            int alt129=2;
            int LA129_0 = input.LA(1);

            if ( (LA129_0==Not) ) {
                alt129=1;
            }
            switch (alt129) {
                case 1 :
                    // InternalErrorModelParser.g:4017:4: (lv_not_4_0= Not )
                    {
                    // InternalErrorModelParser.g:4017:4: (lv_not_4_0= Not )
                    // InternalErrorModelParser.g:4018:5: lv_not_4_0= Not
                    {
                    lv_not_4_0=(Token)match(input,Not,FollowSets000.FOLLOW_84); 

                    					newLeafNode(lv_not_4_0, grammarAccess.getErrorPropagationAccess().getNotNotKeyword_3_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getErrorPropagationRule());
                    					}
                    					setWithLastConsumed(current, "not", lv_not_4_0 != null, "not");
                    				

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4030:3: ( (lv_direction_5_0= rulePropagationDirection ) )
            // InternalErrorModelParser.g:4031:4: (lv_direction_5_0= rulePropagationDirection )
            {
            // InternalErrorModelParser.g:4031:4: (lv_direction_5_0= rulePropagationDirection )
            // InternalErrorModelParser.g:4032:5: lv_direction_5_0= rulePropagationDirection
            {

            					newCompositeNode(grammarAccess.getErrorPropagationAccess().getDirectionPropagationDirectionParserRuleCall_4_0());
            				
            pushFollow(FollowSets000.FOLLOW_85);
            lv_direction_5_0=rulePropagationDirection();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getErrorPropagationRule());
            					}
            					set(
            						current,
            						"direction",
            						lv_direction_5_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationDirection");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_6=(Token)match(input,Propagation,FollowSets000.FOLLOW_70); 

            			newLeafNode(otherlv_6, grammarAccess.getErrorPropagationAccess().getPropagationKeyword_5());
            		
            // InternalErrorModelParser.g:4053:3: ( (lv_typeSet_7_0= ruleTypeSetReference ) )
            // InternalErrorModelParser.g:4054:4: (lv_typeSet_7_0= ruleTypeSetReference )
            {
            // InternalErrorModelParser.g:4054:4: (lv_typeSet_7_0= ruleTypeSetReference )
            // InternalErrorModelParser.g:4055:5: lv_typeSet_7_0= ruleTypeSetReference
            {

            					newCompositeNode(grammarAccess.getErrorPropagationAccess().getTypeSetTypeSetReferenceParserRuleCall_6_0());
            				
            pushFollow(FollowSets000.FOLLOW_10);
            lv_typeSet_7_0=ruleTypeSetReference();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getErrorPropagationRule());
            					}
            					set(
            						current,
            						"typeSet",
            						lv_typeSet_7_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetReference");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getErrorPropagationAccess().getSemicolonKeyword_7());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleFeatureorPPReference"
    // InternalErrorModelParser.g:4080:1: entryRuleFeatureorPPReference returns [EObject current=null] : iv_ruleFeatureorPPReference= ruleFeatureorPPReference EOF ;
    public final EObject entryRuleFeatureorPPReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFeatureorPPReference = null;


        try {
            // InternalErrorModelParser.g:4080:61: (iv_ruleFeatureorPPReference= ruleFeatureorPPReference EOF )
            // InternalErrorModelParser.g:4081:2: iv_ruleFeatureorPPReference= ruleFeatureorPPReference EOF
            {
             newCompositeNode(grammarAccess.getFeatureorPPReferenceRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleFeatureorPPReference=ruleFeatureorPPReference();

            state._fsp--;

             current =iv_ruleFeatureorPPReference; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleFeatureorPPReference"
    // InternalErrorModelParser.g:4087:1: ruleFeatureorPPReference returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )? ) ;
    public final EObject ruleFeatureorPPReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_next_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4093:2: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )? ) )
            // InternalErrorModelParser.g:4094:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )? )
            {
            // InternalErrorModelParser.g:4094:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )? )
            // InternalErrorModelParser.g:4095:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )?
            {
            // InternalErrorModelParser.g:4095:3: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:4096:4: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:4096:4: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:4097:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getFeatureorPPReferenceRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            					newLeafNode(otherlv_0, grammarAccess.getFeatureorPPReferenceAccess().getFeatureorPPNamedElementCrossReference_0_0());
            				

            }


            }

            // InternalErrorModelParser.g:4108:3: (otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) ) )?
            int alt130=2;
            int LA130_0 = input.LA(1);

            if ( (LA130_0==FullStop) ) {
                alt130=1;
            }
            switch (alt130) {
                case 1 :
                    // InternalErrorModelParser.g:4109:4: otherlv_1= FullStop ( (lv_next_2_0= ruleFeatureorPPReference ) )
                    {
                    otherlv_1=(Token)match(input,FullStop,FollowSets000.FOLLOW_86); 

                    				newLeafNode(otherlv_1, grammarAccess.getFeatureorPPReferenceAccess().getFullStopKeyword_1_0());
                    			
                    // InternalErrorModelParser.g:4113:4: ( (lv_next_2_0= ruleFeatureorPPReference ) )
                    // InternalErrorModelParser.g:4114:5: (lv_next_2_0= ruleFeatureorPPReference )
                    {
                    // InternalErrorModelParser.g:4114:5: (lv_next_2_0= ruleFeatureorPPReference )
                    // InternalErrorModelParser.g:4115:6: lv_next_2_0= ruleFeatureorPPReference
                    {

                    						newCompositeNode(grammarAccess.getFeatureorPPReferenceAccess().getNextFeatureorPPReferenceParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_next_2_0=ruleFeatureorPPReference();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getFeatureorPPReferenceRule());
                    						}
                    						set(
                    							current,
                    							"next",
                    							lv_next_2_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.FeatureorPPReference");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropagationDirection"
    // InternalErrorModelParser.g:4137:1: entryRulePropagationDirection returns [String current=null] : iv_rulePropagationDirection= rulePropagationDirection EOF ;
    public final String entryRulePropagationDirection() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePropagationDirection = null;


        try {
            // InternalErrorModelParser.g:4137:60: (iv_rulePropagationDirection= rulePropagationDirection EOF )
            // InternalErrorModelParser.g:4138:2: iv_rulePropagationDirection= rulePropagationDirection EOF
            {
             newCompositeNode(grammarAccess.getPropagationDirectionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropagationDirection=rulePropagationDirection();

            state._fsp--;

             current =iv_rulePropagationDirection.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropagationDirection"
    // InternalErrorModelParser.g:4144:1: rulePropagationDirection returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= In | kw= Out ) ;
    public final AntlrDatatypeRuleToken rulePropagationDirection() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:4150:2: ( (kw= In | kw= Out ) )
            // InternalErrorModelParser.g:4151:2: (kw= In | kw= Out )
            {
            // InternalErrorModelParser.g:4151:2: (kw= In | kw= Out )
            int alt131=2;
            int LA131_0 = input.LA(1);

            if ( (LA131_0==In) ) {
                alt131=1;
            }
            else if ( (LA131_0==Out) ) {
                alt131=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 131, 0, input);

                throw nvae;
            }
            switch (alt131) {
                case 1 :
                    // InternalErrorModelParser.g:4152:3: kw= In
                    {
                    kw=(Token)match(input,In,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationDirectionAccess().getInKeyword_0());
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4158:3: kw= Out
                    {
                    kw=(Token)match(input,Out,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationDirectionAccess().getOutKeyword_1());
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropagationKind"
    // InternalErrorModelParser.g:4167:1: entryRulePropagationKind returns [String current=null] : iv_rulePropagationKind= rulePropagationKind EOF ;
    public final String entryRulePropagationKind() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePropagationKind = null;


        try {
            // InternalErrorModelParser.g:4167:55: (iv_rulePropagationKind= rulePropagationKind EOF )
            // InternalErrorModelParser.g:4168:2: iv_rulePropagationKind= rulePropagationKind EOF
            {
             newCompositeNode(grammarAccess.getPropagationKindRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropagationKind=rulePropagationKind();

            state._fsp--;

             current =iv_rulePropagationKind.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropagationKind"
    // InternalErrorModelParser.g:4174:1: rulePropagationKind returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= Processor | kw= Memory | kw= Connection | kw= Binding | kw= Bindings | kw= Access ) ;
    public final AntlrDatatypeRuleToken rulePropagationKind() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:4180:2: ( (kw= Processor | kw= Memory | kw= Connection | kw= Binding | kw= Bindings | kw= Access ) )
            // InternalErrorModelParser.g:4181:2: (kw= Processor | kw= Memory | kw= Connection | kw= Binding | kw= Bindings | kw= Access )
            {
            // InternalErrorModelParser.g:4181:2: (kw= Processor | kw= Memory | kw= Connection | kw= Binding | kw= Bindings | kw= Access )
            int alt132=6;
            switch ( input.LA(1) ) {
            case Processor:
                {
                alt132=1;
                }
                break;
            case Memory:
                {
                alt132=2;
                }
                break;
            case Connection:
                {
                alt132=3;
                }
                break;
            case Binding:
                {
                alt132=4;
                }
                break;
            case Bindings:
                {
                alt132=5;
                }
                break;
            case Access:
                {
                alt132=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 132, 0, input);

                throw nvae;
            }

            switch (alt132) {
                case 1 :
                    // InternalErrorModelParser.g:4182:3: kw= Processor
                    {
                    kw=(Token)match(input,Processor,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getProcessorKeyword_0());
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4188:3: kw= Memory
                    {
                    kw=(Token)match(input,Memory,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getMemoryKeyword_1());
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:4194:3: kw= Connection
                    {
                    kw=(Token)match(input,Connection,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getConnectionKeyword_2());
                    		

                    }
                    break;
                case 4 :
                    // InternalErrorModelParser.g:4200:3: kw= Binding
                    {
                    kw=(Token)match(input,Binding,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getBindingKeyword_3());
                    		

                    }
                    break;
                case 5 :
                    // InternalErrorModelParser.g:4206:3: kw= Bindings
                    {
                    kw=(Token)match(input,Bindings,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getBindingsKeyword_4());
                    		

                    }
                    break;
                case 6 :
                    // InternalErrorModelParser.g:4212:3: kw= Access
                    {
                    kw=(Token)match(input,Access,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPropagationKindAccess().getAccessKeyword_5());
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorFlow"
    // InternalErrorModelParser.g:4221:1: entryRuleErrorFlow returns [EObject current=null] : iv_ruleErrorFlow= ruleErrorFlow EOF ;
    public final EObject entryRuleErrorFlow() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorFlow = null;


        try {
            // InternalErrorModelParser.g:4221:50: (iv_ruleErrorFlow= ruleErrorFlow EOF )
            // InternalErrorModelParser.g:4222:2: iv_ruleErrorFlow= ruleErrorFlow EOF
            {
             newCompositeNode(grammarAccess.getErrorFlowRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorFlow=ruleErrorFlow();

            state._fsp--;

             current =iv_ruleErrorFlow; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorFlow"
    // InternalErrorModelParser.g:4228:1: ruleErrorFlow returns [EObject current=null] : (this_ErrorSource_0= ruleErrorSource | this_ErrorSink_1= ruleErrorSink | this_ErrorPath_2= ruleErrorPath ) ;
    public final EObject ruleErrorFlow() throws RecognitionException {
        EObject current = null;

        EObject this_ErrorSource_0 = null;

        EObject this_ErrorSink_1 = null;

        EObject this_ErrorPath_2 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4234:2: ( (this_ErrorSource_0= ruleErrorSource | this_ErrorSink_1= ruleErrorSink | this_ErrorPath_2= ruleErrorPath ) )
            // InternalErrorModelParser.g:4235:2: (this_ErrorSource_0= ruleErrorSource | this_ErrorSink_1= ruleErrorSink | this_ErrorPath_2= ruleErrorPath )
            {
            // InternalErrorModelParser.g:4235:2: (this_ErrorSource_0= ruleErrorSource | this_ErrorSink_1= ruleErrorSink | this_ErrorPath_2= ruleErrorPath )
            int alt133=3;
            int LA133_0 = input.LA(1);

            if ( (LA133_0==RULE_ID) ) {
                int LA133_1 = input.LA(2);

                if ( (LA133_1==Colon) ) {
                    int LA133_2 = input.LA(3);

                    if ( (LA133_2==Error) ) {
                        switch ( input.LA(4) ) {
                        case Path:
                            {
                            alt133=3;
                            }
                            break;
                        case Sink:
                            {
                            alt133=2;
                            }
                            break;
                        case Source:
                            {
                            alt133=1;
                            }
                            break;
                        default:
                            NoViableAltException nvae =
                                new NoViableAltException("", 133, 3, input);

                            throw nvae;
                        }

                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 133, 2, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 133, 1, input);

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

                throw nvae;
            }
            switch (alt133) {
                case 1 :
                    // InternalErrorModelParser.g:4236:3: this_ErrorSource_0= ruleErrorSource
                    {

                    			newCompositeNode(grammarAccess.getErrorFlowAccess().getErrorSourceParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorSource_0=ruleErrorSource();

                    state._fsp--;


                    			current = this_ErrorSource_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4245:3: this_ErrorSink_1= ruleErrorSink
                    {

                    			newCompositeNode(grammarAccess.getErrorFlowAccess().getErrorSinkParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorSink_1=ruleErrorSink();

                    state._fsp--;


                    			current = this_ErrorSink_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:4254:3: this_ErrorPath_2= ruleErrorPath
                    {

                    			newCompositeNode(grammarAccess.getErrorFlowAccess().getErrorPathParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorPath_2=ruleErrorPath();

                    state._fsp--;


                    			current = this_ErrorPath_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorSource"
    // InternalErrorModelParser.g:4266:1: entryRuleErrorSource returns [EObject current=null] : iv_ruleErrorSource= ruleErrorSource EOF ;
    public final EObject entryRuleErrorSource() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorSource = null;


        try {
            // InternalErrorModelParser.g:4266:52: (iv_ruleErrorSource= ruleErrorSource EOF )
            // InternalErrorModelParser.g:4267:2: iv_ruleErrorSource= ruleErrorSource EOF
            {
             newCompositeNode(grammarAccess.getErrorSourceRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorSource=ruleErrorSource();

            state._fsp--;

             current =iv_ruleErrorSource; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorSource"
    // InternalErrorModelParser.g:4273:1: ruleErrorSource returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Source ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )? (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )? otherlv_14= Semicolon ) ;
    public final EObject ruleErrorSource() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_all_5_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token lv_failureModeDescription_11_0=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        EObject lv_typeTokenConstraint_6_0 = null;

        EObject lv_failureModeType_9_0 = null;

        EObject lv_failureModeType_10_0 = null;

        EObject lv_flowcondition_13_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4279:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Source ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )? (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )? otherlv_14= Semicolon ) )
            // InternalErrorModelParser.g:4280:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Source ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )? (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )? otherlv_14= Semicolon )
            {
            // InternalErrorModelParser.g:4280:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Source ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )? (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )? otherlv_14= Semicolon )
            // InternalErrorModelParser.g:4281:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Source ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )? (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )? otherlv_14= Semicolon
            {
            // InternalErrorModelParser.g:4281:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:4282:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:4282:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:4283:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getErrorSourceAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorSourceRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_18); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorSourceAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Error,FollowSets000.FOLLOW_87); 

            			newLeafNode(otherlv_2, grammarAccess.getErrorSourceAccess().getErrorKeyword_2());
            		
            otherlv_3=(Token)match(input,Source,FollowSets000.FOLLOW_88); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorSourceAccess().getSourceKeyword_3());
            		
            // InternalErrorModelParser.g:4311:3: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_all_5_0= All ) ) )
            int alt134=2;
            int LA134_0 = input.LA(1);

            if ( (LA134_0==Connection||LA134_0==Processor||LA134_0==Bindings||LA134_0==Binding||LA134_0==Access||LA134_0==Memory||LA134_0==RULE_ID) ) {
                alt134=1;
            }
            else if ( (LA134_0==All) ) {
                alt134=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 134, 0, input);

                throw nvae;
            }
            switch (alt134) {
                case 1 :
                    // InternalErrorModelParser.g:4312:4: ( ( ruleErrorPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:4312:4: ( ( ruleErrorPropagationPoint ) )
                    // InternalErrorModelParser.g:4313:5: ( ruleErrorPropagationPoint )
                    {
                    // InternalErrorModelParser.g:4313:5: ( ruleErrorPropagationPoint )
                    // InternalErrorModelParser.g:4314:6: ruleErrorPropagationPoint
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorSourceRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorSourceAccess().getSourceModelElementNamedElementCrossReference_4_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_89);
                    ruleErrorPropagationPoint();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4329:4: ( (lv_all_5_0= All ) )
                    {
                    // InternalErrorModelParser.g:4329:4: ( (lv_all_5_0= All ) )
                    // InternalErrorModelParser.g:4330:5: (lv_all_5_0= All )
                    {
                    // InternalErrorModelParser.g:4330:5: (lv_all_5_0= All )
                    // InternalErrorModelParser.g:4331:6: lv_all_5_0= All
                    {
                    lv_all_5_0=(Token)match(input,All,FollowSets000.FOLLOW_89); 

                    						newLeafNode(lv_all_5_0, grammarAccess.getErrorSourceAccess().getAllAllKeyword_4_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorSourceRule());
                    						}
                    						setWithLastConsumed(current, "all", lv_all_5_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4344:3: ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )?
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( (LA135_0==LeftCurlyBracket) ) {
                alt135=1;
            }
            switch (alt135) {
                case 1 :
                    // InternalErrorModelParser.g:4345:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    {
                    // InternalErrorModelParser.g:4345:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    // InternalErrorModelParser.g:4346:5: lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint
                    {

                    					newCompositeNode(grammarAccess.getErrorSourceAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_5_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_90);
                    lv_typeTokenConstraint_6_0=ruleTypeTokenConstraint();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorSourceRule());
                    					}
                    					set(
                    						current,
                    						"typeTokenConstraint",
                    						lv_typeTokenConstraint_6_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4363:3: (otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) ) )?
            int alt138=2;
            int LA138_0 = input.LA(1);

            if ( (LA138_0==When) ) {
                alt138=1;
            }
            switch (alt138) {
                case 1 :
                    // InternalErrorModelParser.g:4364:4: otherlv_7= When ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) )
                    {
                    otherlv_7=(Token)match(input,When,FollowSets000.FOLLOW_91); 

                    				newLeafNode(otherlv_7, grammarAccess.getErrorSourceAccess().getWhenKeyword_6_0());
                    			
                    // InternalErrorModelParser.g:4368:4: ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? ) | ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) ) | ( (lv_failureModeDescription_11_0= RULE_STRING ) ) )
                    int alt137=3;
                    switch ( input.LA(1) ) {
                    case RULE_ID:
                        {
                        alt137=1;
                        }
                        break;
                    case LeftCurlyBracket:
                        {
                        alt137=2;
                        }
                        break;
                    case RULE_STRING:
                        {
                        alt137=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 137, 0, input);

                        throw nvae;
                    }

                    switch (alt137) {
                        case 1 :
                            // InternalErrorModelParser.g:4369:5: ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? )
                            {
                            // InternalErrorModelParser.g:4369:5: ( ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )? )
                            // InternalErrorModelParser.g:4370:6: ( (otherlv_8= RULE_ID ) ) ( (lv_failureModeType_9_0= ruleTypeSetReference ) )?
                            {
                            // InternalErrorModelParser.g:4370:6: ( (otherlv_8= RULE_ID ) )
                            // InternalErrorModelParser.g:4371:7: (otherlv_8= RULE_ID )
                            {
                            // InternalErrorModelParser.g:4371:7: (otherlv_8= RULE_ID )
                            // InternalErrorModelParser.g:4372:8: otherlv_8= RULE_ID
                            {

                            								if (current==null) {
                            									current = createModelElement(grammarAccess.getErrorSourceRule());
                            								}
                            							
                            otherlv_8=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_92); 

                            								newLeafNode(otherlv_8, grammarAccess.getErrorSourceAccess().getFailureModeReferenceErrorBehaviorStateCrossReference_6_1_0_0_0());
                            							

                            }


                            }

                            // InternalErrorModelParser.g:4383:6: ( (lv_failureModeType_9_0= ruleTypeSetReference ) )?
                            int alt136=2;
                            int LA136_0 = input.LA(1);

                            if ( (LA136_0==LeftCurlyBracket) ) {
                                alt136=1;
                            }
                            switch (alt136) {
                                case 1 :
                                    // InternalErrorModelParser.g:4384:7: (lv_failureModeType_9_0= ruleTypeSetReference )
                                    {
                                    // InternalErrorModelParser.g:4384:7: (lv_failureModeType_9_0= ruleTypeSetReference )
                                    // InternalErrorModelParser.g:4385:8: lv_failureModeType_9_0= ruleTypeSetReference
                                    {

                                    								newCompositeNode(grammarAccess.getErrorSourceAccess().getFailureModeTypeTypeSetReferenceParserRuleCall_6_1_0_1_0());
                                    							
                                    pushFollow(FollowSets000.FOLLOW_93);
                                    lv_failureModeType_9_0=ruleTypeSetReference();

                                    state._fsp--;


                                    								if (current==null) {
                                    									current = createModelElementForParent(grammarAccess.getErrorSourceRule());
                                    								}
                                    								set(
                                    									current,
                                    									"failureModeType",
                                    									lv_failureModeType_9_0,
                                    									"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetReference");
                                    								afterParserOrEnumRuleCall();
                                    							

                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalErrorModelParser.g:4404:5: ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) )
                            {
                            // InternalErrorModelParser.g:4404:5: ( (lv_failureModeType_10_0= ruleTypeSetConstructor ) )
                            // InternalErrorModelParser.g:4405:6: (lv_failureModeType_10_0= ruleTypeSetConstructor )
                            {
                            // InternalErrorModelParser.g:4405:6: (lv_failureModeType_10_0= ruleTypeSetConstructor )
                            // InternalErrorModelParser.g:4406:7: lv_failureModeType_10_0= ruleTypeSetConstructor
                            {

                            							newCompositeNode(grammarAccess.getErrorSourceAccess().getFailureModeTypeTypeSetConstructorParserRuleCall_6_1_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_93);
                            lv_failureModeType_10_0=ruleTypeSetConstructor();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getErrorSourceRule());
                            							}
                            							set(
                            								current,
                            								"failureModeType",
                            								lv_failureModeType_10_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetConstructor");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }


                            }
                            break;
                        case 3 :
                            // InternalErrorModelParser.g:4424:5: ( (lv_failureModeDescription_11_0= RULE_STRING ) )
                            {
                            // InternalErrorModelParser.g:4424:5: ( (lv_failureModeDescription_11_0= RULE_STRING ) )
                            // InternalErrorModelParser.g:4425:6: (lv_failureModeDescription_11_0= RULE_STRING )
                            {
                            // InternalErrorModelParser.g:4425:6: (lv_failureModeDescription_11_0= RULE_STRING )
                            // InternalErrorModelParser.g:4426:7: lv_failureModeDescription_11_0= RULE_STRING
                            {
                            lv_failureModeDescription_11_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_93); 

                            							newLeafNode(lv_failureModeDescription_11_0, grammarAccess.getErrorSourceAccess().getFailureModeDescriptionSTRINGTerminalRuleCall_6_1_2_0());
                            						

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getErrorSourceRule());
                            							}
                            							setWithLastConsumed(
                            								current,
                            								"failureModeDescription",
                            								lv_failureModeDescription_11_0,
                            								"org.osate.xtext.aadl2.properties.Properties.STRING");
                            						

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4444:3: (otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) ) )?
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==If) ) {
                alt139=1;
            }
            switch (alt139) {
                case 1 :
                    // InternalErrorModelParser.g:4445:4: otherlv_12= If ( (lv_flowcondition_13_0= ruleIfCondition ) )
                    {
                    otherlv_12=(Token)match(input,If,FollowSets000.FOLLOW_94); 

                    				newLeafNode(otherlv_12, grammarAccess.getErrorSourceAccess().getIfKeyword_7_0());
                    			
                    // InternalErrorModelParser.g:4449:4: ( (lv_flowcondition_13_0= ruleIfCondition ) )
                    // InternalErrorModelParser.g:4450:5: (lv_flowcondition_13_0= ruleIfCondition )
                    {
                    // InternalErrorModelParser.g:4450:5: (lv_flowcondition_13_0= ruleIfCondition )
                    // InternalErrorModelParser.g:4451:6: lv_flowcondition_13_0= ruleIfCondition
                    {

                    						newCompositeNode(grammarAccess.getErrorSourceAccess().getFlowconditionIfConditionParserRuleCall_7_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_flowcondition_13_0=ruleIfCondition();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorSourceRule());
                    						}
                    						set(
                    							current,
                    							"flowcondition",
                    							lv_flowcondition_13_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.IfCondition");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_14=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_14, grammarAccess.getErrorSourceAccess().getSemicolonKeyword_8());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorSink"
    // InternalErrorModelParser.g:4477:1: entryRuleErrorSink returns [EObject current=null] : iv_ruleErrorSink= ruleErrorSink EOF ;
    public final EObject entryRuleErrorSink() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorSink = null;


        try {
            // InternalErrorModelParser.g:4477:50: (iv_ruleErrorSink= ruleErrorSink EOF )
            // InternalErrorModelParser.g:4478:2: iv_ruleErrorSink= ruleErrorSink EOF
            {
             newCompositeNode(grammarAccess.getErrorSinkRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorSink=ruleErrorSink();

            state._fsp--;

             current =iv_ruleErrorSink; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorSink"
    // InternalErrorModelParser.g:4484:1: ruleErrorSink returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Sink ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )? otherlv_9= Semicolon ) ;
    public final EObject ruleErrorSink() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_allIncoming_5_0=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_typeTokenConstraint_6_0 = null;

        EObject lv_flowcondition_8_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4490:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Sink ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )? otherlv_9= Semicolon ) )
            // InternalErrorModelParser.g:4491:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Sink ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )? otherlv_9= Semicolon )
            {
            // InternalErrorModelParser.g:4491:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Sink ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )? otherlv_9= Semicolon )
            // InternalErrorModelParser.g:4492:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Sink ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )? otherlv_9= Semicolon
            {
            // InternalErrorModelParser.g:4492:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:4493:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:4493:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:4494:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getErrorSinkAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorSinkRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_18); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorSinkAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Error,FollowSets000.FOLLOW_95); 

            			newLeafNode(otherlv_2, grammarAccess.getErrorSinkAccess().getErrorKeyword_2());
            		
            otherlv_3=(Token)match(input,Sink,FollowSets000.FOLLOW_88); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorSinkAccess().getSinkKeyword_3());
            		
            // InternalErrorModelParser.g:4522:3: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==Connection||LA140_0==Processor||LA140_0==Bindings||LA140_0==Binding||LA140_0==Access||LA140_0==Memory||LA140_0==RULE_ID) ) {
                alt140=1;
            }
            else if ( (LA140_0==All) ) {
                alt140=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;
            }
            switch (alt140) {
                case 1 :
                    // InternalErrorModelParser.g:4523:4: ( ( ruleErrorPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:4523:4: ( ( ruleErrorPropagationPoint ) )
                    // InternalErrorModelParser.g:4524:5: ( ruleErrorPropagationPoint )
                    {
                    // InternalErrorModelParser.g:4524:5: ( ruleErrorPropagationPoint )
                    // InternalErrorModelParser.g:4525:6: ruleErrorPropagationPoint
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorSinkRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorSinkAccess().getIncomingErrorPropagationCrossReference_4_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_96);
                    ruleErrorPropagationPoint();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4540:4: ( (lv_allIncoming_5_0= All ) )
                    {
                    // InternalErrorModelParser.g:4540:4: ( (lv_allIncoming_5_0= All ) )
                    // InternalErrorModelParser.g:4541:5: (lv_allIncoming_5_0= All )
                    {
                    // InternalErrorModelParser.g:4541:5: (lv_allIncoming_5_0= All )
                    // InternalErrorModelParser.g:4542:6: lv_allIncoming_5_0= All
                    {
                    lv_allIncoming_5_0=(Token)match(input,All,FollowSets000.FOLLOW_96); 

                    						newLeafNode(lv_allIncoming_5_0, grammarAccess.getErrorSinkAccess().getAllIncomingAllKeyword_4_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorSinkRule());
                    						}
                    						setWithLastConsumed(current, "allIncoming", lv_allIncoming_5_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4555:3: ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )?
            int alt141=2;
            int LA141_0 = input.LA(1);

            if ( (LA141_0==LeftCurlyBracket) ) {
                alt141=1;
            }
            switch (alt141) {
                case 1 :
                    // InternalErrorModelParser.g:4556:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    {
                    // InternalErrorModelParser.g:4556:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    // InternalErrorModelParser.g:4557:5: lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint
                    {

                    					newCompositeNode(grammarAccess.getErrorSinkAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_5_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_93);
                    lv_typeTokenConstraint_6_0=ruleTypeTokenConstraint();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorSinkRule());
                    					}
                    					set(
                    						current,
                    						"typeTokenConstraint",
                    						lv_typeTokenConstraint_6_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4574:3: (otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) ) )?
            int alt142=2;
            int LA142_0 = input.LA(1);

            if ( (LA142_0==If) ) {
                alt142=1;
            }
            switch (alt142) {
                case 1 :
                    // InternalErrorModelParser.g:4575:4: otherlv_7= If ( (lv_flowcondition_8_0= ruleIfCondition ) )
                    {
                    otherlv_7=(Token)match(input,If,FollowSets000.FOLLOW_94); 

                    				newLeafNode(otherlv_7, grammarAccess.getErrorSinkAccess().getIfKeyword_6_0());
                    			
                    // InternalErrorModelParser.g:4579:4: ( (lv_flowcondition_8_0= ruleIfCondition ) )
                    // InternalErrorModelParser.g:4580:5: (lv_flowcondition_8_0= ruleIfCondition )
                    {
                    // InternalErrorModelParser.g:4580:5: (lv_flowcondition_8_0= ruleIfCondition )
                    // InternalErrorModelParser.g:4581:6: lv_flowcondition_8_0= ruleIfCondition
                    {

                    						newCompositeNode(grammarAccess.getErrorSinkAccess().getFlowconditionIfConditionParserRuleCall_6_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_flowcondition_8_0=ruleIfCondition();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorSinkRule());
                    						}
                    						set(
                    							current,
                    							"flowcondition",
                    							lv_flowcondition_8_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.IfCondition");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_9=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_9, grammarAccess.getErrorSinkAccess().getSemicolonKeyword_7());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorPath"
    // InternalErrorModelParser.g:4607:1: entryRuleErrorPath returns [EObject current=null] : iv_ruleErrorPath= ruleErrorPath EOF ;
    public final EObject entryRuleErrorPath() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorPath = null;


        try {
            // InternalErrorModelParser.g:4607:50: (iv_ruleErrorPath= ruleErrorPath EOF )
            // InternalErrorModelParser.g:4608:2: iv_ruleErrorPath= ruleErrorPath EOF
            {
             newCompositeNode(grammarAccess.getErrorPathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorPath=ruleErrorPath();

            state._fsp--;

             current =iv_ruleErrorPath; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorPath"
    // InternalErrorModelParser.g:4614:1: ruleErrorPath returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Path ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? otherlv_7= HyphenMinusGreaterThanSign ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) ) ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )? (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )? otherlv_16= Semicolon ) ;
    public final EObject ruleErrorPath() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_allIncoming_5_0=null;
        Token otherlv_7=null;
        Token lv_allOutgoing_9_0=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        EObject lv_typeTokenConstraint_6_0 = null;

        EObject lv_targetToken_10_0 = null;

        EObject lv_flowcondition_15_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4620:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Path ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? otherlv_7= HyphenMinusGreaterThanSign ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) ) ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )? (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )? otherlv_16= Semicolon ) )
            // InternalErrorModelParser.g:4621:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Path ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? otherlv_7= HyphenMinusGreaterThanSign ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) ) ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )? (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )? otherlv_16= Semicolon )
            {
            // InternalErrorModelParser.g:4621:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Path ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? otherlv_7= HyphenMinusGreaterThanSign ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) ) ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )? (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )? otherlv_16= Semicolon )
            // InternalErrorModelParser.g:4622:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Path ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) ) ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )? otherlv_7= HyphenMinusGreaterThanSign ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) ) ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )? (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )? otherlv_16= Semicolon
            {
            // InternalErrorModelParser.g:4622:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:4623:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:4623:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:4624:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getErrorPathAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorPathRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_18); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorPathAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Error,FollowSets000.FOLLOW_97); 

            			newLeafNode(otherlv_2, grammarAccess.getErrorPathAccess().getErrorKeyword_2());
            		
            otherlv_3=(Token)match(input,Path,FollowSets000.FOLLOW_88); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorPathAccess().getPathKeyword_3());
            		
            // InternalErrorModelParser.g:4652:3: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allIncoming_5_0= All ) ) )
            int alt143=2;
            int LA143_0 = input.LA(1);

            if ( (LA143_0==Connection||LA143_0==Processor||LA143_0==Bindings||LA143_0==Binding||LA143_0==Access||LA143_0==Memory||LA143_0==RULE_ID) ) {
                alt143=1;
            }
            else if ( (LA143_0==All) ) {
                alt143=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 143, 0, input);

                throw nvae;
            }
            switch (alt143) {
                case 1 :
                    // InternalErrorModelParser.g:4653:4: ( ( ruleErrorPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:4653:4: ( ( ruleErrorPropagationPoint ) )
                    // InternalErrorModelParser.g:4654:5: ( ruleErrorPropagationPoint )
                    {
                    // InternalErrorModelParser.g:4654:5: ( ruleErrorPropagationPoint )
                    // InternalErrorModelParser.g:4655:6: ruleErrorPropagationPoint
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorPathRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorPathAccess().getIncomingErrorPropagationCrossReference_4_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_98);
                    ruleErrorPropagationPoint();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4670:4: ( (lv_allIncoming_5_0= All ) )
                    {
                    // InternalErrorModelParser.g:4670:4: ( (lv_allIncoming_5_0= All ) )
                    // InternalErrorModelParser.g:4671:5: (lv_allIncoming_5_0= All )
                    {
                    // InternalErrorModelParser.g:4671:5: (lv_allIncoming_5_0= All )
                    // InternalErrorModelParser.g:4672:6: lv_allIncoming_5_0= All
                    {
                    lv_allIncoming_5_0=(Token)match(input,All,FollowSets000.FOLLOW_98); 

                    						newLeafNode(lv_allIncoming_5_0, grammarAccess.getErrorPathAccess().getAllIncomingAllKeyword_4_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorPathRule());
                    						}
                    						setWithLastConsumed(current, "allIncoming", lv_allIncoming_5_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4685:3: ( (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint ) )?
            int alt144=2;
            int LA144_0 = input.LA(1);

            if ( (LA144_0==LeftCurlyBracket) ) {
                alt144=1;
            }
            switch (alt144) {
                case 1 :
                    // InternalErrorModelParser.g:4686:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    {
                    // InternalErrorModelParser.g:4686:4: (lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint )
                    // InternalErrorModelParser.g:4687:5: lv_typeTokenConstraint_6_0= ruleTypeTokenConstraint
                    {

                    					newCompositeNode(grammarAccess.getErrorPathAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_5_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_82);
                    lv_typeTokenConstraint_6_0=ruleTypeTokenConstraint();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorPathRule());
                    					}
                    					set(
                    						current,
                    						"typeTokenConstraint",
                    						lv_typeTokenConstraint_6_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,HyphenMinusGreaterThanSign,FollowSets000.FOLLOW_88); 

            			newLeafNode(otherlv_7, grammarAccess.getErrorPathAccess().getHyphenMinusGreaterThanSignKeyword_6());
            		
            // InternalErrorModelParser.g:4708:3: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allOutgoing_9_0= All ) ) )
            int alt145=2;
            int LA145_0 = input.LA(1);

            if ( (LA145_0==Connection||LA145_0==Processor||LA145_0==Bindings||LA145_0==Binding||LA145_0==Access||LA145_0==Memory||LA145_0==RULE_ID) ) {
                alt145=1;
            }
            else if ( (LA145_0==All) ) {
                alt145=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 145, 0, input);

                throw nvae;
            }
            switch (alt145) {
                case 1 :
                    // InternalErrorModelParser.g:4709:4: ( ( ruleErrorPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:4709:4: ( ( ruleErrorPropagationPoint ) )
                    // InternalErrorModelParser.g:4710:5: ( ruleErrorPropagationPoint )
                    {
                    // InternalErrorModelParser.g:4710:5: ( ruleErrorPropagationPoint )
                    // InternalErrorModelParser.g:4711:6: ruleErrorPropagationPoint
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorPathRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorPathAccess().getOutgoingErrorPropagationCrossReference_7_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_96);
                    ruleErrorPropagationPoint();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4726:4: ( (lv_allOutgoing_9_0= All ) )
                    {
                    // InternalErrorModelParser.g:4726:4: ( (lv_allOutgoing_9_0= All ) )
                    // InternalErrorModelParser.g:4727:5: (lv_allOutgoing_9_0= All )
                    {
                    // InternalErrorModelParser.g:4727:5: (lv_allOutgoing_9_0= All )
                    // InternalErrorModelParser.g:4728:6: lv_allOutgoing_9_0= All
                    {
                    lv_allOutgoing_9_0=(Token)match(input,All,FollowSets000.FOLLOW_96); 

                    						newLeafNode(lv_allOutgoing_9_0, grammarAccess.getErrorPathAccess().getAllOutgoingAllKeyword_7_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorPathRule());
                    						}
                    						setWithLastConsumed(current, "allOutgoing", lv_allOutgoing_9_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4741:3: ( ( (lv_targetToken_10_0= ruleTypeToken ) ) | (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) ) )?
            int alt146=3;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==LeftCurlyBracket) ) {
                alt146=1;
            }
            else if ( (LA146_0==Use) ) {
                alt146=2;
            }
            switch (alt146) {
                case 1 :
                    // InternalErrorModelParser.g:4742:4: ( (lv_targetToken_10_0= ruleTypeToken ) )
                    {
                    // InternalErrorModelParser.g:4742:4: ( (lv_targetToken_10_0= ruleTypeToken ) )
                    // InternalErrorModelParser.g:4743:5: (lv_targetToken_10_0= ruleTypeToken )
                    {
                    // InternalErrorModelParser.g:4743:5: (lv_targetToken_10_0= ruleTypeToken )
                    // InternalErrorModelParser.g:4744:6: lv_targetToken_10_0= ruleTypeToken
                    {

                    						newCompositeNode(grammarAccess.getErrorPathAccess().getTargetTokenTypeTokenParserRuleCall_8_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_93);
                    lv_targetToken_10_0=ruleTypeToken();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorPathRule());
                    						}
                    						set(
                    							current,
                    							"targetToken",
                    							lv_targetToken_10_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4762:4: (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) )
                    {
                    // InternalErrorModelParser.g:4762:4: (otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) ) )
                    // InternalErrorModelParser.g:4763:5: otherlv_11= Use otherlv_12= Mappings ( ( ruleQEMREF ) )
                    {
                    otherlv_11=(Token)match(input,Use,FollowSets000.FOLLOW_11); 

                    					newLeafNode(otherlv_11, grammarAccess.getErrorPathAccess().getUseKeyword_8_1_0());
                    				
                    otherlv_12=(Token)match(input,Mappings,FollowSets000.FOLLOW_5); 

                    					newLeafNode(otherlv_12, grammarAccess.getErrorPathAccess().getMappingsKeyword_8_1_1());
                    				
                    // InternalErrorModelParser.g:4771:5: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:4772:6: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:4772:6: ( ruleQEMREF )
                    // InternalErrorModelParser.g:4773:7: ruleQEMREF
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getErrorPathRule());
                    							}
                    						

                    							newCompositeNode(grammarAccess.getErrorPathAccess().getTypeMappingSetTypeMappingSetCrossReference_8_1_2_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_93);
                    ruleQEMREF();

                    state._fsp--;


                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:4789:3: (otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) ) )?
            int alt147=2;
            int LA147_0 = input.LA(1);

            if ( (LA147_0==If) ) {
                alt147=1;
            }
            switch (alt147) {
                case 1 :
                    // InternalErrorModelParser.g:4790:4: otherlv_14= If ( (lv_flowcondition_15_0= ruleIfCondition ) )
                    {
                    otherlv_14=(Token)match(input,If,FollowSets000.FOLLOW_94); 

                    				newLeafNode(otherlv_14, grammarAccess.getErrorPathAccess().getIfKeyword_9_0());
                    			
                    // InternalErrorModelParser.g:4794:4: ( (lv_flowcondition_15_0= ruleIfCondition ) )
                    // InternalErrorModelParser.g:4795:5: (lv_flowcondition_15_0= ruleIfCondition )
                    {
                    // InternalErrorModelParser.g:4795:5: (lv_flowcondition_15_0= ruleIfCondition )
                    // InternalErrorModelParser.g:4796:6: lv_flowcondition_15_0= ruleIfCondition
                    {

                    						newCompositeNode(grammarAccess.getErrorPathAccess().getFlowconditionIfConditionParserRuleCall_9_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_flowcondition_15_0=ruleIfCondition();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorPathRule());
                    						}
                    						set(
                    							current,
                    							"flowcondition",
                    							lv_flowcondition_15_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.IfCondition");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_16=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_16, grammarAccess.getErrorPathAccess().getSemicolonKeyword_10());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleIfCondition"
    // InternalErrorModelParser.g:4822:1: entryRuleIfCondition returns [EObject current=null] : iv_ruleIfCondition= ruleIfCondition EOF ;
    public final EObject entryRuleIfCondition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfCondition = null;


        try {
            // InternalErrorModelParser.g:4822:52: (iv_ruleIfCondition= ruleIfCondition EOF )
            // InternalErrorModelParser.g:4823:2: iv_ruleIfCondition= ruleIfCondition EOF
            {
             newCompositeNode(grammarAccess.getIfConditionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleIfCondition=ruleIfCondition();

            state._fsp--;

             current =iv_ruleIfCondition; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleIfCondition"
    // InternalErrorModelParser.g:4829:1: ruleIfCondition returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) ) | ( ( ruleQEMREF ) ) | ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) ) ) ;
    public final EObject ruleIfCondition() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        AntlrDatatypeRuleToken lv_javaMethod_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4835:2: ( ( ( (lv_description_0_0= RULE_STRING ) ) | ( ( ruleQEMREF ) ) | ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) ) ) )
            // InternalErrorModelParser.g:4836:2: ( ( (lv_description_0_0= RULE_STRING ) ) | ( ( ruleQEMREF ) ) | ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) ) )
            {
            // InternalErrorModelParser.g:4836:2: ( ( (lv_description_0_0= RULE_STRING ) ) | ( ( ruleQEMREF ) ) | ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) ) )
            int alt148=3;
            int LA148_0 = input.LA(1);

            if ( (LA148_0==RULE_STRING) ) {
                alt148=1;
            }
            else if ( (LA148_0==RULE_ID) ) {
                int LA148_2 = input.LA(2);

                if ( (LA148_2==FullStop) ) {
                    alt148=3;
                }
                else if ( (LA148_2==EOF||LA148_2==ColonColon||LA148_2==Semicolon) ) {
                    alt148=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 2, input);

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

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // InternalErrorModelParser.g:4837:3: ( (lv_description_0_0= RULE_STRING ) )
                    {
                    // InternalErrorModelParser.g:4837:3: ( (lv_description_0_0= RULE_STRING ) )
                    // InternalErrorModelParser.g:4838:4: (lv_description_0_0= RULE_STRING )
                    {
                    // InternalErrorModelParser.g:4838:4: (lv_description_0_0= RULE_STRING )
                    // InternalErrorModelParser.g:4839:5: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_2); 

                    					newLeafNode(lv_description_0_0, grammarAccess.getIfConditionAccess().getDescriptionSTRINGTerminalRuleCall_0_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getIfConditionRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"description",
                    						lv_description_0_0,
                    						"org.osate.xtext.aadl2.properties.Properties.STRING");
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4856:3: ( ( ruleQEMREF ) )
                    {
                    // InternalErrorModelParser.g:4856:3: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:4857:4: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:4857:4: ( ruleQEMREF )
                    // InternalErrorModelParser.g:4858:5: ruleQEMREF
                    {

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getIfConditionRule());
                    					}
                    				

                    					newCompositeNode(grammarAccess.getIfConditionAccess().getResoluteFunctionEObjectCrossReference_1_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleQEMREF();

                    state._fsp--;


                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:4873:3: ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) )
                    {
                    // InternalErrorModelParser.g:4873:3: ( (lv_javaMethod_2_0= ruleQUALIFIEDNAME ) )
                    // InternalErrorModelParser.g:4874:4: (lv_javaMethod_2_0= ruleQUALIFIEDNAME )
                    {
                    // InternalErrorModelParser.g:4874:4: (lv_javaMethod_2_0= ruleQUALIFIEDNAME )
                    // InternalErrorModelParser.g:4875:5: lv_javaMethod_2_0= ruleQUALIFIEDNAME
                    {

                    					newCompositeNode(grammarAccess.getIfConditionAccess().getJavaMethodQUALIFIEDNAMEParserRuleCall_2_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_javaMethod_2_0=ruleQUALIFIEDNAME();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getIfConditionRule());
                    					}
                    					set(
                    						current,
                    						"javaMethod",
                    						lv_javaMethod_2_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.QUALIFIEDNAME");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorPropagationPoint"
    // InternalErrorModelParser.g:4896:1: entryRuleErrorPropagationPoint returns [String current=null] : iv_ruleErrorPropagationPoint= ruleErrorPropagationPoint EOF ;
    public final String entryRuleErrorPropagationPoint() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleErrorPropagationPoint = null;


        try {
            // InternalErrorModelParser.g:4896:61: (iv_ruleErrorPropagationPoint= ruleErrorPropagationPoint EOF )
            // InternalErrorModelParser.g:4897:2: iv_ruleErrorPropagationPoint= ruleErrorPropagationPoint EOF
            {
             newCompositeNode(grammarAccess.getErrorPropagationPointRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorPropagationPoint=ruleErrorPropagationPoint();

            state._fsp--;

             current =iv_ruleErrorPropagationPoint.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorPropagationPoint"
    // InternalErrorModelParser.g:4903:1: ruleErrorPropagationPoint returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_ID_0= RULE_ID kw= FullStop )* (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID ) ) ;
    public final AntlrDatatypeRuleToken ruleErrorPropagationPoint() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_3=null;
        AntlrDatatypeRuleToken this_PropagationKind_2 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:4909:2: ( ( (this_ID_0= RULE_ID kw= FullStop )* (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID ) ) )
            // InternalErrorModelParser.g:4910:2: ( (this_ID_0= RULE_ID kw= FullStop )* (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID ) )
            {
            // InternalErrorModelParser.g:4910:2: ( (this_ID_0= RULE_ID kw= FullStop )* (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID ) )
            // InternalErrorModelParser.g:4911:3: (this_ID_0= RULE_ID kw= FullStop )* (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID )
            {
            // InternalErrorModelParser.g:4911:3: (this_ID_0= RULE_ID kw= FullStop )*
            loop149:
            do {
                int alt149=2;
                int LA149_0 = input.LA(1);

                if ( (LA149_0==RULE_ID) ) {
                    int LA149_2 = input.LA(2);

                    if ( (LA149_2==FullStop) ) {
                        alt149=1;
                    }


                }


                switch (alt149) {
            	case 1 :
            	    // InternalErrorModelParser.g:4912:4: this_ID_0= RULE_ID kw= FullStop
            	    {
            	    this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_99); 

            	    				current.merge(this_ID_0);
            	    			

            	    				newLeafNode(this_ID_0, grammarAccess.getErrorPropagationPointAccess().getIDTerminalRuleCall_0_0());
            	    			
            	    kw=(Token)match(input,FullStop,FollowSets000.FOLLOW_86); 

            	    				current.merge(kw);
            	    				newLeafNode(kw, grammarAccess.getErrorPropagationPointAccess().getFullStopKeyword_0_1());
            	    			

            	    }
            	    break;

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

            // InternalErrorModelParser.g:4925:3: (this_PropagationKind_2= rulePropagationKind | this_ID_3= RULE_ID )
            int alt150=2;
            int LA150_0 = input.LA(1);

            if ( (LA150_0==Connection||LA150_0==Processor||LA150_0==Bindings||LA150_0==Binding||LA150_0==Access||LA150_0==Memory) ) {
                alt150=1;
            }
            else if ( (LA150_0==RULE_ID) ) {
                alt150=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 150, 0, input);

                throw nvae;
            }
            switch (alt150) {
                case 1 :
                    // InternalErrorModelParser.g:4926:4: this_PropagationKind_2= rulePropagationKind
                    {

                    				newCompositeNode(grammarAccess.getErrorPropagationPointAccess().getPropagationKindParserRuleCall_1_0());
                    			
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_PropagationKind_2=rulePropagationKind();

                    state._fsp--;


                    				current.merge(this_PropagationKind_2);
                    			

                    				afterParserOrEnumRuleCall();
                    			

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:4937:4: this_ID_3= RULE_ID
                    {
                    this_ID_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    				current.merge(this_ID_3);
                    			

                    				newLeafNode(this_ID_3, grammarAccess.getErrorPropagationPointAccess().getIDTerminalRuleCall_1_1());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropagationPoint"
    // InternalErrorModelParser.g:4949:1: entryRulePropagationPoint returns [EObject current=null] : iv_rulePropagationPoint= rulePropagationPoint EOF ;
    public final EObject entryRulePropagationPoint() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropagationPoint = null;


        try {
            // InternalErrorModelParser.g:4949:57: (iv_rulePropagationPoint= rulePropagationPoint EOF )
            // InternalErrorModelParser.g:4950:2: iv_rulePropagationPoint= rulePropagationPoint EOF
            {
             newCompositeNode(grammarAccess.getPropagationPointRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropagationPoint=rulePropagationPoint();

            state._fsp--;

             current =iv_rulePropagationPoint; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropagationPoint"
    // InternalErrorModelParser.g:4956:1: rulePropagationPoint returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Propagation otherlv_3= Point otherlv_4= Semicolon ) ;
    public final EObject rulePropagationPoint() throws RecognitionException {
        EObject current = null;

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


        	enterRule();

        try {
            // InternalErrorModelParser.g:4962:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Propagation otherlv_3= Point otherlv_4= Semicolon ) )
            // InternalErrorModelParser.g:4963:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Propagation otherlv_3= Point otherlv_4= Semicolon )
            {
            // InternalErrorModelParser.g:4963:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Propagation otherlv_3= Point otherlv_4= Semicolon )
            // InternalErrorModelParser.g:4964:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Propagation otherlv_3= Point otherlv_4= Semicolon
            {
            // InternalErrorModelParser.g:4964:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:4965:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:4965:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:4966:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getPropagationPointAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getPropagationPointRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_85); 

            			newLeafNode(otherlv_1, grammarAccess.getPropagationPointAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Propagation,FollowSets000.FOLLOW_100); 

            			newLeafNode(otherlv_2, grammarAccess.getPropagationPointAccess().getPropagationKeyword_2());
            		
            otherlv_3=(Token)match(input,Point,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_3, grammarAccess.getPropagationPointAccess().getPointKeyword_3());
            		
            otherlv_4=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_4, grammarAccess.getPropagationPointAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropagationPath"
    // InternalErrorModelParser.g:5002:1: entryRulePropagationPath returns [EObject current=null] : iv_rulePropagationPath= rulePropagationPath EOF ;
    public final EObject entryRulePropagationPath() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropagationPath = null;


        try {
            // InternalErrorModelParser.g:5002:56: (iv_rulePropagationPath= rulePropagationPath EOF )
            // InternalErrorModelParser.g:5003:2: iv_rulePropagationPath= rulePropagationPath EOF
            {
             newCompositeNode(grammarAccess.getPropagationPathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropagationPath=rulePropagationPath();

            state._fsp--;

             current =iv_rulePropagationPath; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropagationPath"
    // InternalErrorModelParser.g:5009:1: rulePropagationPath returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( (lv_source_2_0= ruleQualifiedPropagationPoint ) ) otherlv_3= HyphenMinusGreaterThanSign ( (lv_target_4_0= ruleQualifiedPropagationPoint ) ) otherlv_5= Semicolon ) ;
    public final EObject rulePropagationPath() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_source_2_0 = null;

        EObject lv_target_4_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5015:2: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( (lv_source_2_0= ruleQualifiedPropagationPoint ) ) otherlv_3= HyphenMinusGreaterThanSign ( (lv_target_4_0= ruleQualifiedPropagationPoint ) ) otherlv_5= Semicolon ) )
            // InternalErrorModelParser.g:5016:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( (lv_source_2_0= ruleQualifiedPropagationPoint ) ) otherlv_3= HyphenMinusGreaterThanSign ( (lv_target_4_0= ruleQualifiedPropagationPoint ) ) otherlv_5= Semicolon )
            {
            // InternalErrorModelParser.g:5016:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( (lv_source_2_0= ruleQualifiedPropagationPoint ) ) otherlv_3= HyphenMinusGreaterThanSign ( (lv_target_4_0= ruleQualifiedPropagationPoint ) ) otherlv_5= Semicolon )
            // InternalErrorModelParser.g:5017:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( (lv_source_2_0= ruleQualifiedPropagationPoint ) ) otherlv_3= HyphenMinusGreaterThanSign ( (lv_target_4_0= ruleQualifiedPropagationPoint ) ) otherlv_5= Semicolon
            {
            // InternalErrorModelParser.g:5017:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )?
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==RULE_ID) ) {
                int LA151_1 = input.LA(2);

                if ( (LA151_1==Colon) ) {
                    alt151=1;
                }
            }
            switch (alt151) {
                case 1 :
                    // InternalErrorModelParser.g:5018:4: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon
                    {
                    // InternalErrorModelParser.g:5018:4: ( (lv_name_0_0= RULE_ID ) )
                    // InternalErrorModelParser.g:5019:5: (lv_name_0_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5019:5: (lv_name_0_0= RULE_ID )
                    // InternalErrorModelParser.g:5020:6: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

                    						newLeafNode(lv_name_0_0, grammarAccess.getPropagationPathAccess().getNameIDTerminalRuleCall_0_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropagationPathRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"name",
                    							lv_name_0_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ID");
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_1, grammarAccess.getPropagationPathAccess().getColonKeyword_0_1());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:5041:3: ( (lv_source_2_0= ruleQualifiedPropagationPoint ) )
            // InternalErrorModelParser.g:5042:4: (lv_source_2_0= ruleQualifiedPropagationPoint )
            {
            // InternalErrorModelParser.g:5042:4: (lv_source_2_0= ruleQualifiedPropagationPoint )
            // InternalErrorModelParser.g:5043:5: lv_source_2_0= ruleQualifiedPropagationPoint
            {

            					newCompositeNode(grammarAccess.getPropagationPathAccess().getSourceQualifiedPropagationPointParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_82);
            lv_source_2_0=ruleQualifiedPropagationPoint();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getPropagationPathRule());
            					}
            					set(
            						current,
            						"source",
            						lv_source_2_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedPropagationPoint");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,HyphenMinusGreaterThanSign,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_3, grammarAccess.getPropagationPathAccess().getHyphenMinusGreaterThanSignKeyword_2());
            		
            // InternalErrorModelParser.g:5064:3: ( (lv_target_4_0= ruleQualifiedPropagationPoint ) )
            // InternalErrorModelParser.g:5065:4: (lv_target_4_0= ruleQualifiedPropagationPoint )
            {
            // InternalErrorModelParser.g:5065:4: (lv_target_4_0= ruleQualifiedPropagationPoint )
            // InternalErrorModelParser.g:5066:5: lv_target_4_0= ruleQualifiedPropagationPoint
            {

            					newCompositeNode(grammarAccess.getPropagationPathAccess().getTargetQualifiedPropagationPointParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_10);
            lv_target_4_0=ruleQualifiedPropagationPoint();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getPropagationPathRule());
            					}
            					set(
            						current,
            						"target",
            						lv_target_4_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedPropagationPoint");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_5=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getPropagationPathAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQualifiedPropagationPoint"
    // InternalErrorModelParser.g:5091:1: entryRuleQualifiedPropagationPoint returns [EObject current=null] : iv_ruleQualifiedPropagationPoint= ruleQualifiedPropagationPoint EOF ;
    public final EObject entryRuleQualifiedPropagationPoint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedPropagationPoint = null;


        try {
            // InternalErrorModelParser.g:5091:66: (iv_ruleQualifiedPropagationPoint= ruleQualifiedPropagationPoint EOF )
            // InternalErrorModelParser.g:5092:2: iv_ruleQualifiedPropagationPoint= ruleQualifiedPropagationPoint EOF
            {
             newCompositeNode(grammarAccess.getQualifiedPropagationPointRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQualifiedPropagationPoint=ruleQualifiedPropagationPoint();

            state._fsp--;

             current =iv_ruleQualifiedPropagationPoint; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQualifiedPropagationPoint"
    // InternalErrorModelParser.g:5098:1: ruleQualifiedPropagationPoint returns [EObject current=null] : ( ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) ) | ( (otherlv_3= RULE_ID ) ) ) ;
    public final EObject ruleQualifiedPropagationPoint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_subcomponent_0_0 = null;

        EObject lv_next_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5104:2: ( ( ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) ) | ( (otherlv_3= RULE_ID ) ) ) )
            // InternalErrorModelParser.g:5105:2: ( ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) ) | ( (otherlv_3= RULE_ID ) ) )
            {
            // InternalErrorModelParser.g:5105:2: ( ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) ) | ( (otherlv_3= RULE_ID ) ) )
            int alt152=2;
            int LA152_0 = input.LA(1);

            if ( (LA152_0==RULE_ID) ) {
                int LA152_1 = input.LA(2);

                if ( (LA152_1==EOF||LA152_1==HyphenMinusGreaterThanSign||LA152_1==Semicolon) ) {
                    alt152=2;
                }
                else if ( (LA152_1==FullStop) ) {
                    alt152=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 152, 1, input);

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

                throw nvae;
            }
            switch (alt152) {
                case 1 :
                    // InternalErrorModelParser.g:5106:3: ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) )
                    {
                    // InternalErrorModelParser.g:5106:3: ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) ) )
                    // InternalErrorModelParser.g:5107:4: ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( (lv_next_2_0= ruleQualifiedPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:5107:4: ( (lv_subcomponent_0_0= ruleSubcomponentElement ) )
                    // InternalErrorModelParser.g:5108:5: (lv_subcomponent_0_0= ruleSubcomponentElement )
                    {
                    // InternalErrorModelParser.g:5108:5: (lv_subcomponent_0_0= ruleSubcomponentElement )
                    // InternalErrorModelParser.g:5109:6: lv_subcomponent_0_0= ruleSubcomponentElement
                    {

                    						newCompositeNode(grammarAccess.getQualifiedPropagationPointAccess().getSubcomponentSubcomponentElementParserRuleCall_0_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_99);
                    lv_subcomponent_0_0=ruleSubcomponentElement();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getQualifiedPropagationPointRule());
                    						}
                    						set(
                    							current,
                    							"subcomponent",
                    							lv_subcomponent_0_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SubcomponentElement");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_1, grammarAccess.getQualifiedPropagationPointAccess().getFullStopKeyword_0_1());
                    			
                    // InternalErrorModelParser.g:5130:4: ( (lv_next_2_0= ruleQualifiedPropagationPoint ) )
                    // InternalErrorModelParser.g:5131:5: (lv_next_2_0= ruleQualifiedPropagationPoint )
                    {
                    // InternalErrorModelParser.g:5131:5: (lv_next_2_0= ruleQualifiedPropagationPoint )
                    // InternalErrorModelParser.g:5132:6: lv_next_2_0= ruleQualifiedPropagationPoint
                    {

                    						newCompositeNode(grammarAccess.getQualifiedPropagationPointAccess().getNextQualifiedPropagationPointParserRuleCall_0_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_next_2_0=ruleQualifiedPropagationPoint();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getQualifiedPropagationPointRule());
                    						}
                    						set(
                    							current,
                    							"next",
                    							lv_next_2_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedPropagationPoint");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:5151:3: ( (otherlv_3= RULE_ID ) )
                    {
                    // InternalErrorModelParser.g:5151:3: ( (otherlv_3= RULE_ID ) )
                    // InternalErrorModelParser.g:5152:4: (otherlv_3= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5152:4: (otherlv_3= RULE_ID )
                    // InternalErrorModelParser.g:5153:5: otherlv_3= RULE_ID
                    {

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getQualifiedPropagationPointRule());
                    					}
                    				
                    otherlv_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    					newLeafNode(otherlv_3, grammarAccess.getQualifiedPropagationPointAccess().getPropagationPointNamedElementCrossReference_1_0());
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorBehaviorStateMachine"
    // InternalErrorModelParser.g:5168:1: entryRuleErrorBehaviorStateMachine returns [EObject current=null] : iv_ruleErrorBehaviorStateMachine= ruleErrorBehaviorStateMachine EOF ;
    public final EObject entryRuleErrorBehaviorStateMachine() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorBehaviorStateMachine = null;


        try {
            // InternalErrorModelParser.g:5168:66: (iv_ruleErrorBehaviorStateMachine= ruleErrorBehaviorStateMachine EOF )
            // InternalErrorModelParser.g:5169:2: iv_ruleErrorBehaviorStateMachine= ruleErrorBehaviorStateMachine EOF
            {
             newCompositeNode(grammarAccess.getErrorBehaviorStateMachineRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorBehaviorStateMachine=ruleErrorBehaviorStateMachine();

            state._fsp--;

             current =iv_ruleErrorBehaviorStateMachine; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorBehaviorStateMachine"
    // InternalErrorModelParser.g:5175:1: ruleErrorBehaviorStateMachine returns [EObject current=null] : (otherlv_0= Error otherlv_1= Behavior ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )? (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )? (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_21= End otherlv_22= Behavior otherlv_23= Semicolon ) ;
    public final EObject ruleErrorBehaviorStateMachine() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        EObject lv_events_14_0 = null;

        EObject lv_states_16_0 = null;

        EObject lv_transitions_18_0 = null;

        EObject lv_properties_20_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5181:2: ( (otherlv_0= Error otherlv_1= Behavior ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )? (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )? (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_21= End otherlv_22= Behavior otherlv_23= Semicolon ) )
            // InternalErrorModelParser.g:5182:2: (otherlv_0= Error otherlv_1= Behavior ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )? (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )? (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_21= End otherlv_22= Behavior otherlv_23= Semicolon )
            {
            // InternalErrorModelParser.g:5182:2: (otherlv_0= Error otherlv_1= Behavior ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )? (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )? (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_21= End otherlv_22= Behavior otherlv_23= Semicolon )
            // InternalErrorModelParser.g:5183:3: otherlv_0= Error otherlv_1= Behavior ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )? (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )? (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )? (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )? (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )? (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )? otherlv_21= End otherlv_22= Behavior otherlv_23= Semicolon
            {
            otherlv_0=(Token)match(input,Error,FollowSets000.FOLLOW_12); 

            			newLeafNode(otherlv_0, grammarAccess.getErrorBehaviorStateMachineAccess().getErrorKeyword_0());
            		
            otherlv_1=(Token)match(input,Behavior,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorBehaviorStateMachineAccess().getBehaviorKeyword_1());
            		
            // InternalErrorModelParser.g:5191:3: ( (lv_name_2_0= RULE_ID ) )
            // InternalErrorModelParser.g:5192:4: (lv_name_2_0= RULE_ID )
            {
            // InternalErrorModelParser.g:5192:4: (lv_name_2_0= RULE_ID )
            // InternalErrorModelParser.g:5193:5: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_101); 

            					newLeafNode(lv_name_2_0, grammarAccess.getErrorBehaviorStateMachineAccess().getNameIDTerminalRuleCall_2_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorBehaviorStateMachineRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            // InternalErrorModelParser.g:5209:3: (otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon )?
            int alt154=2;
            int LA154_0 = input.LA(1);

            if ( (LA154_0==Use) ) {
                int LA154_1 = input.LA(2);

                if ( (LA154_1==Types) ) {
                    alt154=1;
                }
            }
            switch (alt154) {
                case 1 :
                    // InternalErrorModelParser.g:5210:4: otherlv_3= Use otherlv_4= Types ( ( ruleQEMREF ) ) (otherlv_6= Comma ( ( ruleQEMREF ) ) )* otherlv_8= Semicolon
                    {
                    otherlv_3=(Token)match(input,Use,FollowSets000.FOLLOW_4); 

                    				newLeafNode(otherlv_3, grammarAccess.getErrorBehaviorStateMachineAccess().getUseKeyword_3_0());
                    			
                    otherlv_4=(Token)match(input,Types,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getErrorBehaviorStateMachineAccess().getTypesKeyword_3_1());
                    			
                    // InternalErrorModelParser.g:5218:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:5219:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:5219:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:5220:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorBehaviorStateMachineRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getUseTypesErrorModelLibraryCrossReference_3_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_6);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:5234:4: (otherlv_6= Comma ( ( ruleQEMREF ) ) )*
                    loop153:
                    do {
                        int alt153=2;
                        int LA153_0 = input.LA(1);

                        if ( (LA153_0==Comma) ) {
                            alt153=1;
                        }


                        switch (alt153) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5235:5: otherlv_6= Comma ( ( ruleQEMREF ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getErrorBehaviorStateMachineAccess().getCommaKeyword_3_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:5239:5: ( ( ruleQEMREF ) )
                    	    // InternalErrorModelParser.g:5240:6: ( ruleQEMREF )
                    	    {
                    	    // InternalErrorModelParser.g:5240:6: ( ruleQEMREF )
                    	    // InternalErrorModelParser.g:5241:7: ruleQEMREF
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getErrorBehaviorStateMachineRule());
                    	    							}
                    	    						

                    	    							newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getUseTypesErrorModelLibraryCrossReference_3_3_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_6);
                    	    ruleQEMREF();

                    	    state._fsp--;


                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_101); 

                    				newLeafNode(otherlv_8, grammarAccess.getErrorBehaviorStateMachineAccess().getSemicolonKeyword_3_4());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:5261:3: (otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon )?
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( (LA155_0==Use) ) {
                alt155=1;
            }
            switch (alt155) {
                case 1 :
                    // InternalErrorModelParser.g:5262:4: otherlv_9= Use otherlv_10= Transformations ( ( ruleQEMREF ) ) otherlv_12= Semicolon
                    {
                    otherlv_9=(Token)match(input,Use,FollowSets000.FOLLOW_20); 

                    				newLeafNode(otherlv_9, grammarAccess.getErrorBehaviorStateMachineAccess().getUseKeyword_4_0());
                    			
                    otherlv_10=(Token)match(input,Transformations,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_10, grammarAccess.getErrorBehaviorStateMachineAccess().getTransformationsKeyword_4_1());
                    			
                    // InternalErrorModelParser.g:5270:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:5271:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:5271:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:5272:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorBehaviorStateMachineRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getUseTransformationTypeTransformationSetCrossReference_4_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_12=(Token)match(input,Semicolon,FollowSets000.FOLLOW_102); 

                    				newLeafNode(otherlv_12, grammarAccess.getErrorBehaviorStateMachineAccess().getSemicolonKeyword_4_3());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:5291:3: (otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+ )?
            int alt157=2;
            int LA157_0 = input.LA(1);

            if ( (LA157_0==Events) ) {
                alt157=1;
            }
            switch (alt157) {
                case 1 :
                    // InternalErrorModelParser.g:5292:4: otherlv_13= Events ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+
                    {
                    otherlv_13=(Token)match(input,Events,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_13, grammarAccess.getErrorBehaviorStateMachineAccess().getEventsKeyword_5_0());
                    			
                    // InternalErrorModelParser.g:5296:4: ( (lv_events_14_0= ruleErrorBehaviorEvent ) )+
                    int cnt156=0;
                    loop156:
                    do {
                        int alt156=2;
                        int LA156_0 = input.LA(1);

                        if ( (LA156_0==RULE_ID) ) {
                            alt156=1;
                        }


                        switch (alt156) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5297:5: (lv_events_14_0= ruleErrorBehaviorEvent )
                    	    {
                    	    // InternalErrorModelParser.g:5297:5: (lv_events_14_0= ruleErrorBehaviorEvent )
                    	    // InternalErrorModelParser.g:5298:6: lv_events_14_0= ruleErrorBehaviorEvent
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getEventsErrorBehaviorEventParserRuleCall_5_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_103);
                    	    lv_events_14_0=ruleErrorBehaviorEvent();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorBehaviorStateMachineRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"events",
                    	    							lv_events_14_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorEvent");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt156 >= 1 ) break loop156;
                                EarlyExitException eee =
                                    new EarlyExitException(156, input);
                                throw eee;
                        }
                        cnt156++;
                    } while (true);


                    }
                    break;

            }

            // InternalErrorModelParser.g:5316:3: (otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+ )?
            int alt159=2;
            int LA159_0 = input.LA(1);

            if ( (LA159_0==States) ) {
                alt159=1;
            }
            switch (alt159) {
                case 1 :
                    // InternalErrorModelParser.g:5317:4: otherlv_15= States ( (lv_states_16_0= ruleErrorBehaviorState ) )+
                    {
                    otherlv_15=(Token)match(input,States,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_15, grammarAccess.getErrorBehaviorStateMachineAccess().getStatesKeyword_6_0());
                    			
                    // InternalErrorModelParser.g:5321:4: ( (lv_states_16_0= ruleErrorBehaviorState ) )+
                    int cnt158=0;
                    loop158:
                    do {
                        int alt158=2;
                        int LA158_0 = input.LA(1);

                        if ( (LA158_0==RULE_ID) ) {
                            alt158=1;
                        }


                        switch (alt158) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5322:5: (lv_states_16_0= ruleErrorBehaviorState )
                    	    {
                    	    // InternalErrorModelParser.g:5322:5: (lv_states_16_0= ruleErrorBehaviorState )
                    	    // InternalErrorModelParser.g:5323:6: lv_states_16_0= ruleErrorBehaviorState
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getStatesErrorBehaviorStateParserRuleCall_6_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_104);
                    	    lv_states_16_0=ruleErrorBehaviorState();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorBehaviorStateMachineRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"states",
                    	    							lv_states_16_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorState");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt158 >= 1 ) break loop158;
                                EarlyExitException eee =
                                    new EarlyExitException(158, input);
                                throw eee;
                        }
                        cnt158++;
                    } while (true);


                    }
                    break;

            }

            // InternalErrorModelParser.g:5341:3: (otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+ )?
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( (LA161_0==Transitions) ) {
                alt161=1;
            }
            switch (alt161) {
                case 1 :
                    // InternalErrorModelParser.g:5342:4: otherlv_17= Transitions ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+
                    {
                    otherlv_17=(Token)match(input,Transitions,FollowSets000.FOLLOW_23); 

                    				newLeafNode(otherlv_17, grammarAccess.getErrorBehaviorStateMachineAccess().getTransitionsKeyword_7_0());
                    			
                    // InternalErrorModelParser.g:5346:4: ( (lv_transitions_18_0= ruleErrorBehaviorTransition ) )+
                    int cnt160=0;
                    loop160:
                    do {
                        int alt160=2;
                        int LA160_0 = input.LA(1);

                        if ( (LA160_0==All||LA160_0==RULE_ID) ) {
                            alt160=1;
                        }


                        switch (alt160) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5347:5: (lv_transitions_18_0= ruleErrorBehaviorTransition )
                    	    {
                    	    // InternalErrorModelParser.g:5347:5: (lv_transitions_18_0= ruleErrorBehaviorTransition )
                    	    // InternalErrorModelParser.g:5348:6: lv_transitions_18_0= ruleErrorBehaviorTransition
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getTransitionsErrorBehaviorTransitionParserRuleCall_7_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_105);
                    	    lv_transitions_18_0=ruleErrorBehaviorTransition();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorBehaviorStateMachineRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"transitions",
                    	    							lv_transitions_18_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorBehaviorTransition");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt160 >= 1 ) break loop160;
                                EarlyExitException eee =
                                    new EarlyExitException(160, input);
                                throw eee;
                        }
                        cnt160++;
                    } while (true);


                    }
                    break;

            }

            // InternalErrorModelParser.g:5366:3: (otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+ )?
            int alt163=2;
            int LA163_0 = input.LA(1);

            if ( (LA163_0==Properties) ) {
                alt163=1;
            }
            switch (alt163) {
                case 1 :
                    // InternalErrorModelParser.g:5367:4: otherlv_19= Properties ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+
                    {
                    otherlv_19=(Token)match(input,Properties,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_19, grammarAccess.getErrorBehaviorStateMachineAccess().getPropertiesKeyword_8_0());
                    			
                    // InternalErrorModelParser.g:5371:4: ( (lv_properties_20_0= ruleBasicEMV2PropertyAssociation ) )+
                    int cnt162=0;
                    loop162:
                    do {
                        int alt162=2;
                        int LA162_0 = input.LA(1);

                        if ( (LA162_0==RULE_ID) ) {
                            alt162=1;
                        }


                        switch (alt162) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5372:5: (lv_properties_20_0= ruleBasicEMV2PropertyAssociation )
                    	    {
                    	    // InternalErrorModelParser.g:5372:5: (lv_properties_20_0= ruleBasicEMV2PropertyAssociation )
                    	    // InternalErrorModelParser.g:5373:6: lv_properties_20_0= ruleBasicEMV2PropertyAssociation
                    	    {

                    	    						newCompositeNode(grammarAccess.getErrorBehaviorStateMachineAccess().getPropertiesBasicEMV2PropertyAssociationParserRuleCall_8_1_0());
                    	    					
                    	    pushFollow(FollowSets000.FOLLOW_16);
                    	    lv_properties_20_0=ruleBasicEMV2PropertyAssociation();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getErrorBehaviorStateMachineRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"properties",
                    	    							lv_properties_20_0,
                    	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.BasicEMV2PropertyAssociation");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt162 >= 1 ) break loop162;
                                EarlyExitException eee =
                                    new EarlyExitException(162, input);
                                throw eee;
                        }
                        cnt162++;
                    } while (true);


                    }
                    break;

            }

            otherlv_21=(Token)match(input,End,FollowSets000.FOLLOW_12); 

            			newLeafNode(otherlv_21, grammarAccess.getErrorBehaviorStateMachineAccess().getEndKeyword_9());
            		
            otherlv_22=(Token)match(input,Behavior,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_22, grammarAccess.getErrorBehaviorStateMachineAccess().getBehaviorKeyword_10());
            		
            otherlv_23=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_23, grammarAccess.getErrorBehaviorStateMachineAccess().getSemicolonKeyword_11());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorBehaviorEvent"
    // InternalErrorModelParser.g:5407:1: entryRuleErrorBehaviorEvent returns [EObject current=null] : iv_ruleErrorBehaviorEvent= ruleErrorBehaviorEvent EOF ;
    public final EObject entryRuleErrorBehaviorEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorBehaviorEvent = null;


        try {
            // InternalErrorModelParser.g:5407:59: (iv_ruleErrorBehaviorEvent= ruleErrorBehaviorEvent EOF )
            // InternalErrorModelParser.g:5408:2: iv_ruleErrorBehaviorEvent= ruleErrorBehaviorEvent EOF
            {
             newCompositeNode(grammarAccess.getErrorBehaviorEventRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorBehaviorEvent=ruleErrorBehaviorEvent();

            state._fsp--;

             current =iv_ruleErrorBehaviorEvent; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorBehaviorEvent"
    // InternalErrorModelParser.g:5414:1: ruleErrorBehaviorEvent returns [EObject current=null] : (this_ErrorEvent_0= ruleErrorEvent | this_RepairEvent_1= ruleRepairEvent | this_RecoverEvent_2= ruleRecoverEvent ) ;
    public final EObject ruleErrorBehaviorEvent() throws RecognitionException {
        EObject current = null;

        EObject this_ErrorEvent_0 = null;

        EObject this_RepairEvent_1 = null;

        EObject this_RecoverEvent_2 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5420:2: ( (this_ErrorEvent_0= ruleErrorEvent | this_RepairEvent_1= ruleRepairEvent | this_RecoverEvent_2= ruleRecoverEvent ) )
            // InternalErrorModelParser.g:5421:2: (this_ErrorEvent_0= ruleErrorEvent | this_RepairEvent_1= ruleRepairEvent | this_RecoverEvent_2= ruleRecoverEvent )
            {
            // InternalErrorModelParser.g:5421:2: (this_ErrorEvent_0= ruleErrorEvent | this_RepairEvent_1= ruleRepairEvent | this_RecoverEvent_2= ruleRecoverEvent )
            int alt164=3;
            int LA164_0 = input.LA(1);

            if ( (LA164_0==RULE_ID) ) {
                int LA164_1 = input.LA(2);

                if ( (LA164_1==Colon) ) {
                    switch ( input.LA(3) ) {
                    case Repair:
                        {
                        alt164=2;
                        }
                        break;
                    case Error:
                        {
                        alt164=1;
                        }
                        break;
                    case Recover:
                        {
                        alt164=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 164, 2, input);

                        throw nvae;
                    }

                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 164, 1, input);

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

                throw nvae;
            }
            switch (alt164) {
                case 1 :
                    // InternalErrorModelParser.g:5422:3: this_ErrorEvent_0= ruleErrorEvent
                    {

                    			newCompositeNode(grammarAccess.getErrorBehaviorEventAccess().getErrorEventParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorEvent_0=ruleErrorEvent();

                    state._fsp--;


                    			current = this_ErrorEvent_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:5431:3: this_RepairEvent_1= ruleRepairEvent
                    {

                    			newCompositeNode(grammarAccess.getErrorBehaviorEventAccess().getRepairEventParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_RepairEvent_1=ruleRepairEvent();

                    state._fsp--;


                    			current = this_RepairEvent_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:5440:3: this_RecoverEvent_2= ruleRecoverEvent
                    {

                    			newCompositeNode(grammarAccess.getErrorBehaviorEventAccess().getRecoverEventParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_RecoverEvent_2=ruleRecoverEvent();

                    state._fsp--;


                    			current = this_RecoverEvent_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorEvent"
    // InternalErrorModelParser.g:5452:1: entryRuleErrorEvent returns [EObject current=null] : iv_ruleErrorEvent= ruleErrorEvent EOF ;
    public final EObject entryRuleErrorEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorEvent = null;


        try {
            // InternalErrorModelParser.g:5452:51: (iv_ruleErrorEvent= ruleErrorEvent EOF )
            // InternalErrorModelParser.g:5453:2: iv_ruleErrorEvent= ruleErrorEvent EOF
            {
             newCompositeNode(grammarAccess.getErrorEventRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorEvent=ruleErrorEvent();

            state._fsp--;

             current =iv_ruleErrorEvent; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorEvent"
    // InternalErrorModelParser.g:5459:1: ruleErrorEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Event ( (lv_typeSet_4_0= ruleTypeSetReference ) )? (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )? otherlv_7= Semicolon ) ;
    public final EObject ruleErrorEvent() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_typeSet_4_0 = null;

        EObject lv_eventcondition_6_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5465:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Event ( (lv_typeSet_4_0= ruleTypeSetReference ) )? (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )? otherlv_7= Semicolon ) )
            // InternalErrorModelParser.g:5466:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Event ( (lv_typeSet_4_0= ruleTypeSetReference ) )? (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )? otherlv_7= Semicolon )
            {
            // InternalErrorModelParser.g:5466:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Event ( (lv_typeSet_4_0= ruleTypeSetReference ) )? (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )? otherlv_7= Semicolon )
            // InternalErrorModelParser.g:5467:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Error otherlv_3= Event ( (lv_typeSet_4_0= ruleTypeSetReference ) )? (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )? otherlv_7= Semicolon
            {
            // InternalErrorModelParser.g:5467:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:5468:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:5468:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:5469:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getErrorEventAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorEventRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_18); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorEventAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Error,FollowSets000.FOLLOW_106); 

            			newLeafNode(otherlv_2, grammarAccess.getErrorEventAccess().getErrorKeyword_2());
            		
            otherlv_3=(Token)match(input,Event,FollowSets000.FOLLOW_92); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorEventAccess().getEventKeyword_3());
            		
            // InternalErrorModelParser.g:5497:3: ( (lv_typeSet_4_0= ruleTypeSetReference ) )?
            int alt165=2;
            int LA165_0 = input.LA(1);

            if ( (LA165_0==LeftCurlyBracket) ) {
                alt165=1;
            }
            switch (alt165) {
                case 1 :
                    // InternalErrorModelParser.g:5498:4: (lv_typeSet_4_0= ruleTypeSetReference )
                    {
                    // InternalErrorModelParser.g:5498:4: (lv_typeSet_4_0= ruleTypeSetReference )
                    // InternalErrorModelParser.g:5499:5: lv_typeSet_4_0= ruleTypeSetReference
                    {

                    					newCompositeNode(grammarAccess.getErrorEventAccess().getTypeSetTypeSetReferenceParserRuleCall_4_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_93);
                    lv_typeSet_4_0=ruleTypeSetReference();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorEventRule());
                    					}
                    					set(
                    						current,
                    						"typeSet",
                    						lv_typeSet_4_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetReference");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:5516:3: (otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) ) )?
            int alt166=2;
            int LA166_0 = input.LA(1);

            if ( (LA166_0==If) ) {
                alt166=1;
            }
            switch (alt166) {
                case 1 :
                    // InternalErrorModelParser.g:5517:4: otherlv_5= If ( (lv_eventcondition_6_0= ruleIfCondition ) )
                    {
                    otherlv_5=(Token)match(input,If,FollowSets000.FOLLOW_94); 

                    				newLeafNode(otherlv_5, grammarAccess.getErrorEventAccess().getIfKeyword_5_0());
                    			
                    // InternalErrorModelParser.g:5521:4: ( (lv_eventcondition_6_0= ruleIfCondition ) )
                    // InternalErrorModelParser.g:5522:5: (lv_eventcondition_6_0= ruleIfCondition )
                    {
                    // InternalErrorModelParser.g:5522:5: (lv_eventcondition_6_0= ruleIfCondition )
                    // InternalErrorModelParser.g:5523:6: lv_eventcondition_6_0= ruleIfCondition
                    {

                    						newCompositeNode(grammarAccess.getErrorEventAccess().getEventconditionIfConditionParserRuleCall_5_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_eventcondition_6_0=ruleIfCondition();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorEventRule());
                    						}
                    						set(
                    							current,
                    							"eventcondition",
                    							lv_eventcondition_6_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.IfCondition");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_7, grammarAccess.getErrorEventAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleRepairEvent"
    // InternalErrorModelParser.g:5549:1: entryRuleRepairEvent returns [EObject current=null] : iv_ruleRepairEvent= ruleRepairEvent EOF ;
    public final EObject entryRuleRepairEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRepairEvent = null;


        try {
            // InternalErrorModelParser.g:5549:52: (iv_ruleRepairEvent= ruleRepairEvent EOF )
            // InternalErrorModelParser.g:5550:2: iv_ruleRepairEvent= ruleRepairEvent EOF
            {
             newCompositeNode(grammarAccess.getRepairEventRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleRepairEvent=ruleRepairEvent();

            state._fsp--;

             current =iv_ruleRepairEvent; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleRepairEvent"
    // InternalErrorModelParser.g:5556:1: ruleRepairEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Repair otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? otherlv_8= Semicolon ) ;
    public final EObject ruleRepairEvent() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:5562:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Repair otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? otherlv_8= Semicolon ) )
            // InternalErrorModelParser.g:5563:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Repair otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? otherlv_8= Semicolon )
            {
            // InternalErrorModelParser.g:5563:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Repair otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? otherlv_8= Semicolon )
            // InternalErrorModelParser.g:5564:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Repair otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? otherlv_8= Semicolon
            {
            // InternalErrorModelParser.g:5564:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:5565:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:5565:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:5566:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getRepairEventAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getRepairEventRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_107); 

            			newLeafNode(otherlv_1, grammarAccess.getRepairEventAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Repair,FollowSets000.FOLLOW_106); 

            			newLeafNode(otherlv_2, grammarAccess.getRepairEventAccess().getRepairKeyword_2());
            		
            otherlv_3=(Token)match(input,Event,FollowSets000.FOLLOW_108); 

            			newLeafNode(otherlv_3, grammarAccess.getRepairEventAccess().getEventKeyword_3());
            		
            // InternalErrorModelParser.g:5594:3: (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )?
            int alt168=2;
            int LA168_0 = input.LA(1);

            if ( (LA168_0==When) ) {
                alt168=1;
            }
            switch (alt168) {
                case 1 :
                    // InternalErrorModelParser.g:5595:4: otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )*
                    {
                    otherlv_4=(Token)match(input,When,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getRepairEventAccess().getWhenKeyword_4_0());
                    			
                    // InternalErrorModelParser.g:5599:4: ( (otherlv_5= RULE_ID ) )
                    // InternalErrorModelParser.g:5600:5: (otherlv_5= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5600:5: (otherlv_5= RULE_ID )
                    // InternalErrorModelParser.g:5601:6: otherlv_5= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getRepairEventRule());
                    						}
                    					
                    otherlv_5=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_6); 

                    						newLeafNode(otherlv_5, grammarAccess.getRepairEventAccess().getEventInitiatorNamedElementCrossReference_4_1_0());
                    					

                    }


                    }

                    // InternalErrorModelParser.g:5612:4: (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )*
                    loop167:
                    do {
                        int alt167=2;
                        int LA167_0 = input.LA(1);

                        if ( (LA167_0==Comma) ) {
                            alt167=1;
                        }


                        switch (alt167) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5613:5: otherlv_6= Comma ( (otherlv_7= RULE_ID ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getRepairEventAccess().getCommaKeyword_4_2_0());
                    	    				
                    	    // InternalErrorModelParser.g:5617:5: ( (otherlv_7= RULE_ID ) )
                    	    // InternalErrorModelParser.g:5618:6: (otherlv_7= RULE_ID )
                    	    {
                    	    // InternalErrorModelParser.g:5618:6: (otherlv_7= RULE_ID )
                    	    // InternalErrorModelParser.g:5619:7: otherlv_7= RULE_ID
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getRepairEventRule());
                    	    							}
                    	    						
                    	    otherlv_7=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_6); 

                    	    							newLeafNode(otherlv_7, grammarAccess.getRepairEventAccess().getEventInitiatorNamedElementCrossReference_4_2_1_0());
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getRepairEventAccess().getSemicolonKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleRecoverEvent"
    // InternalErrorModelParser.g:5640:1: entryRuleRecoverEvent returns [EObject current=null] : iv_ruleRecoverEvent= ruleRecoverEvent EOF ;
    public final EObject entryRuleRecoverEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecoverEvent = null;


        try {
            // InternalErrorModelParser.g:5640:53: (iv_ruleRecoverEvent= ruleRecoverEvent EOF )
            // InternalErrorModelParser.g:5641:2: iv_ruleRecoverEvent= ruleRecoverEvent EOF
            {
             newCompositeNode(grammarAccess.getRecoverEventRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleRecoverEvent=ruleRecoverEvent();

            state._fsp--;

             current =iv_ruleRecoverEvent; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleRecoverEvent"
    // InternalErrorModelParser.g:5647:1: ruleRecoverEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Recover otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )? otherlv_10= Semicolon ) ;
    public final EObject ruleRecoverEvent() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_condition_9_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5653:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Recover otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )? otherlv_10= Semicolon ) )
            // InternalErrorModelParser.g:5654:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Recover otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )? otherlv_10= Semicolon )
            {
            // InternalErrorModelParser.g:5654:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Recover otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )? otherlv_10= Semicolon )
            // InternalErrorModelParser.g:5655:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon otherlv_2= Recover otherlv_3= Event (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )? (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )? otherlv_10= Semicolon
            {
            // InternalErrorModelParser.g:5655:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:5656:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:5656:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:5657:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getRecoverEventAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getRecoverEventRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_109); 

            			newLeafNode(otherlv_1, grammarAccess.getRecoverEventAccess().getColonKeyword_1());
            		
            otherlv_2=(Token)match(input,Recover,FollowSets000.FOLLOW_106); 

            			newLeafNode(otherlv_2, grammarAccess.getRecoverEventAccess().getRecoverKeyword_2());
            		
            otherlv_3=(Token)match(input,Event,FollowSets000.FOLLOW_90); 

            			newLeafNode(otherlv_3, grammarAccess.getRecoverEventAccess().getEventKeyword_3());
            		
            // InternalErrorModelParser.g:5685:3: (otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* )?
            int alt170=2;
            int LA170_0 = input.LA(1);

            if ( (LA170_0==When) ) {
                alt170=1;
            }
            switch (alt170) {
                case 1 :
                    // InternalErrorModelParser.g:5686:4: otherlv_4= When ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )*
                    {
                    otherlv_4=(Token)match(input,When,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_4, grammarAccess.getRecoverEventAccess().getWhenKeyword_4_0());
                    			
                    // InternalErrorModelParser.g:5690:4: ( (otherlv_5= RULE_ID ) )
                    // InternalErrorModelParser.g:5691:5: (otherlv_5= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5691:5: (otherlv_5= RULE_ID )
                    // InternalErrorModelParser.g:5692:6: otherlv_5= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getRecoverEventRule());
                    						}
                    					
                    otherlv_5=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_110); 

                    						newLeafNode(otherlv_5, grammarAccess.getRecoverEventAccess().getEventInitiatorNamedElementCrossReference_4_1_0());
                    					

                    }


                    }

                    // InternalErrorModelParser.g:5703:4: (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )*
                    loop169:
                    do {
                        int alt169=2;
                        int LA169_0 = input.LA(1);

                        if ( (LA169_0==Comma) ) {
                            alt169=1;
                        }


                        switch (alt169) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:5704:5: otherlv_6= Comma ( (otherlv_7= RULE_ID ) )
                    	    {
                    	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_6, grammarAccess.getRecoverEventAccess().getCommaKeyword_4_2_0());
                    	    				
                    	    // InternalErrorModelParser.g:5708:5: ( (otherlv_7= RULE_ID ) )
                    	    // InternalErrorModelParser.g:5709:6: (otherlv_7= RULE_ID )
                    	    {
                    	    // InternalErrorModelParser.g:5709:6: (otherlv_7= RULE_ID )
                    	    // InternalErrorModelParser.g:5710:7: otherlv_7= RULE_ID
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getRecoverEventRule());
                    	    							}
                    	    						
                    	    otherlv_7=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_110); 

                    	    							newLeafNode(otherlv_7, grammarAccess.getRecoverEventAccess().getEventInitiatorNamedElementCrossReference_4_2_1_0());
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            // InternalErrorModelParser.g:5723:3: (otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) ) )?
            int alt171=2;
            int LA171_0 = input.LA(1);

            if ( (LA171_0==If) ) {
                alt171=1;
            }
            switch (alt171) {
                case 1 :
                    // InternalErrorModelParser.g:5724:4: otherlv_8= If ( (lv_condition_9_0= ruleIfCondition ) )
                    {
                    otherlv_8=(Token)match(input,If,FollowSets000.FOLLOW_94); 

                    				newLeafNode(otherlv_8, grammarAccess.getRecoverEventAccess().getIfKeyword_5_0());
                    			
                    // InternalErrorModelParser.g:5728:4: ( (lv_condition_9_0= ruleIfCondition ) )
                    // InternalErrorModelParser.g:5729:5: (lv_condition_9_0= ruleIfCondition )
                    {
                    // InternalErrorModelParser.g:5729:5: (lv_condition_9_0= ruleIfCondition )
                    // InternalErrorModelParser.g:5730:6: lv_condition_9_0= ruleIfCondition
                    {

                    						newCompositeNode(grammarAccess.getRecoverEventAccess().getConditionIfConditionParserRuleCall_5_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_condition_9_0=ruleIfCondition();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getRecoverEventRule());
                    						}
                    						set(
                    							current,
                    							"condition",
                    							lv_condition_9_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.IfCondition");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_10, grammarAccess.getRecoverEventAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorBehaviorState"
    // InternalErrorModelParser.g:5756:1: entryRuleErrorBehaviorState returns [EObject current=null] : iv_ruleErrorBehaviorState= ruleErrorBehaviorState EOF ;
    public final EObject entryRuleErrorBehaviorState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorBehaviorState = null;


        try {
            // InternalErrorModelParser.g:5756:59: (iv_ruleErrorBehaviorState= ruleErrorBehaviorState EOF )
            // InternalErrorModelParser.g:5757:2: iv_ruleErrorBehaviorState= ruleErrorBehaviorState EOF
            {
             newCompositeNode(grammarAccess.getErrorBehaviorStateRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorBehaviorState=ruleErrorBehaviorState();

            state._fsp--;

             current =iv_ruleErrorBehaviorState; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorBehaviorState"
    // InternalErrorModelParser.g:5763:1: ruleErrorBehaviorState returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon ( (lv_intial_2_0= Initial ) )? otherlv_3= State ( (lv_typeSet_4_0= ruleTypeSetReference ) )? otherlv_5= Semicolon ) ;
    public final EObject ruleErrorBehaviorState() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_intial_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_typeSet_4_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5769:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon ( (lv_intial_2_0= Initial ) )? otherlv_3= State ( (lv_typeSet_4_0= ruleTypeSetReference ) )? otherlv_5= Semicolon ) )
            // InternalErrorModelParser.g:5770:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon ( (lv_intial_2_0= Initial ) )? otherlv_3= State ( (lv_typeSet_4_0= ruleTypeSetReference ) )? otherlv_5= Semicolon )
            {
            // InternalErrorModelParser.g:5770:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon ( (lv_intial_2_0= Initial ) )? otherlv_3= State ( (lv_typeSet_4_0= ruleTypeSetReference ) )? otherlv_5= Semicolon )
            // InternalErrorModelParser.g:5771:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon ( (lv_intial_2_0= Initial ) )? otherlv_3= State ( (lv_typeSet_4_0= ruleTypeSetReference ) )? otherlv_5= Semicolon
            {
            // InternalErrorModelParser.g:5771:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalErrorModelParser.g:5772:4: (lv_name_0_0= RULE_ID )
            {
            // InternalErrorModelParser.g:5772:4: (lv_name_0_0= RULE_ID )
            // InternalErrorModelParser.g:5773:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

            					newLeafNode(lv_name_0_0, grammarAccess.getErrorBehaviorStateAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorBehaviorStateRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_111); 

            			newLeafNode(otherlv_1, grammarAccess.getErrorBehaviorStateAccess().getColonKeyword_1());
            		
            // InternalErrorModelParser.g:5793:3: ( (lv_intial_2_0= Initial ) )?
            int alt172=2;
            int LA172_0 = input.LA(1);

            if ( (LA172_0==Initial) ) {
                alt172=1;
            }
            switch (alt172) {
                case 1 :
                    // InternalErrorModelParser.g:5794:4: (lv_intial_2_0= Initial )
                    {
                    // InternalErrorModelParser.g:5794:4: (lv_intial_2_0= Initial )
                    // InternalErrorModelParser.g:5795:5: lv_intial_2_0= Initial
                    {
                    lv_intial_2_0=(Token)match(input,Initial,FollowSets000.FOLLOW_112); 

                    					newLeafNode(lv_intial_2_0, grammarAccess.getErrorBehaviorStateAccess().getIntialInitialKeyword_2_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getErrorBehaviorStateRule());
                    					}
                    					setWithLastConsumed(current, "intial", lv_intial_2_0 != null, "initial");
                    				

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,State,FollowSets000.FOLLOW_113); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorBehaviorStateAccess().getStateKeyword_3());
            		
            // InternalErrorModelParser.g:5811:3: ( (lv_typeSet_4_0= ruleTypeSetReference ) )?
            int alt173=2;
            int LA173_0 = input.LA(1);

            if ( (LA173_0==LeftCurlyBracket) ) {
                alt173=1;
            }
            switch (alt173) {
                case 1 :
                    // InternalErrorModelParser.g:5812:4: (lv_typeSet_4_0= ruleTypeSetReference )
                    {
                    // InternalErrorModelParser.g:5812:4: (lv_typeSet_4_0= ruleTypeSetReference )
                    // InternalErrorModelParser.g:5813:5: lv_typeSet_4_0= ruleTypeSetReference
                    {

                    					newCompositeNode(grammarAccess.getErrorBehaviorStateAccess().getTypeSetTypeSetReferenceParserRuleCall_4_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_typeSet_4_0=ruleTypeSetReference();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorBehaviorStateRule());
                    					}
                    					set(
                    						current,
                    						"typeSet",
                    						lv_typeSet_4_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeSetReference");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getErrorBehaviorStateAccess().getSemicolonKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorBehaviorTransition"
    // InternalErrorModelParser.g:5838:1: entryRuleErrorBehaviorTransition returns [EObject current=null] : iv_ruleErrorBehaviorTransition= ruleErrorBehaviorTransition EOF ;
    public final EObject entryRuleErrorBehaviorTransition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorBehaviorTransition = null;


        try {
            // InternalErrorModelParser.g:5838:64: (iv_ruleErrorBehaviorTransition= ruleErrorBehaviorTransition EOF )
            // InternalErrorModelParser.g:5839:2: iv_ruleErrorBehaviorTransition= ruleErrorBehaviorTransition EOF
            {
             newCompositeNode(grammarAccess.getErrorBehaviorTransitionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorBehaviorTransition=ruleErrorBehaviorTransition();

            state._fsp--;

             current =iv_ruleErrorBehaviorTransition; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorBehaviorTransition"
    // InternalErrorModelParser.g:5845:1: ruleErrorBehaviorTransition returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) ) otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) ) otherlv_17= Semicolon ) ;
    public final EObject ruleErrorBehaviorTransition() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_allStates_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token lv_steadyState_10_0=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        EObject lv_typeTokenConstraint_3_0 = null;

        EObject lv_condition_6_0 = null;

        EObject lv_targetToken_9_0 = null;

        EObject lv_destinationBranches_13_0 = null;

        EObject lv_destinationBranches_15_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:5851:2: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) ) otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) ) otherlv_17= Semicolon ) )
            // InternalErrorModelParser.g:5852:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) ) otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) ) otherlv_17= Semicolon )
            {
            // InternalErrorModelParser.g:5852:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) ) otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) ) otherlv_17= Semicolon )
            // InternalErrorModelParser.g:5853:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) ) otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) ) otherlv_17= Semicolon
            {
            // InternalErrorModelParser.g:5853:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )?
            int alt174=2;
            int LA174_0 = input.LA(1);

            if ( (LA174_0==RULE_ID) ) {
                int LA174_1 = input.LA(2);

                if ( (LA174_1==Colon) ) {
                    alt174=1;
                }
            }
            switch (alt174) {
                case 1 :
                    // InternalErrorModelParser.g:5854:4: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon
                    {
                    // InternalErrorModelParser.g:5854:4: ( (lv_name_0_0= RULE_ID ) )
                    // InternalErrorModelParser.g:5855:5: (lv_name_0_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5855:5: (lv_name_0_0= RULE_ID )
                    // InternalErrorModelParser.g:5856:6: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

                    						newLeafNode(lv_name_0_0, grammarAccess.getErrorBehaviorTransitionAccess().getNameIDTerminalRuleCall_0_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorBehaviorTransitionRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"name",
                    							lv_name_0_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ID");
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_23); 

                    				newLeafNode(otherlv_1, grammarAccess.getErrorBehaviorTransitionAccess().getColonKeyword_0_1());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:5877:3: ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) )
            int alt176=2;
            int LA176_0 = input.LA(1);

            if ( (LA176_0==RULE_ID) ) {
                alt176=1;
            }
            else if ( (LA176_0==All) ) {
                alt176=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 176, 0, input);

                throw nvae;
            }
            switch (alt176) {
                case 1 :
                    // InternalErrorModelParser.g:5878:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    {
                    // InternalErrorModelParser.g:5878:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    // InternalErrorModelParser.g:5879:5: ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    {
                    // InternalErrorModelParser.g:5879:5: ( (otherlv_2= RULE_ID ) )
                    // InternalErrorModelParser.g:5880:6: (otherlv_2= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5880:6: (otherlv_2= RULE_ID )
                    // InternalErrorModelParser.g:5881:7: otherlv_2= RULE_ID
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getErrorBehaviorTransitionRule());
                    							}
                    						
                    otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_114); 

                    							newLeafNode(otherlv_2, grammarAccess.getErrorBehaviorTransitionAccess().getSourceErrorBehaviorStateCrossReference_1_0_0_0());
                    						

                    }


                    }

                    // InternalErrorModelParser.g:5892:5: ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    int alt175=2;
                    int LA175_0 = input.LA(1);

                    if ( (LA175_0==LeftCurlyBracket) ) {
                        alt175=1;
                    }
                    switch (alt175) {
                        case 1 :
                            // InternalErrorModelParser.g:5893:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            {
                            // InternalErrorModelParser.g:5893:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            // InternalErrorModelParser.g:5894:7: lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint
                            {

                            							newCompositeNode(grammarAccess.getErrorBehaviorTransitionAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_1_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_77);
                            lv_typeTokenConstraint_3_0=ruleTypeTokenConstraint();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getErrorBehaviorTransitionRule());
                            							}
                            							set(
                            								current,
                            								"typeTokenConstraint",
                            								lv_typeTokenConstraint_3_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:5913:4: ( (lv_allStates_4_0= All ) )
                    {
                    // InternalErrorModelParser.g:5913:4: ( (lv_allStates_4_0= All ) )
                    // InternalErrorModelParser.g:5914:5: (lv_allStates_4_0= All )
                    {
                    // InternalErrorModelParser.g:5914:5: (lv_allStates_4_0= All )
                    // InternalErrorModelParser.g:5915:6: lv_allStates_4_0= All
                    {
                    lv_allStates_4_0=(Token)match(input,All,FollowSets000.FOLLOW_77); 

                    						newLeafNode(lv_allStates_4_0, grammarAccess.getErrorBehaviorTransitionAccess().getAllStatesAllKeyword_1_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorBehaviorTransitionRule());
                    						}
                    						setWithLastConsumed(current, "allStates", lv_allStates_4_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,HyphenMinusLeftSquareBracket,FollowSets000.FOLLOW_115); 

            			newLeafNode(otherlv_5, grammarAccess.getErrorBehaviorTransitionAccess().getHyphenMinusLeftSquareBracketKeyword_2());
            		
            // InternalErrorModelParser.g:5932:3: ( (lv_condition_6_0= ruleConditionExpression ) )
            // InternalErrorModelParser.g:5933:4: (lv_condition_6_0= ruleConditionExpression )
            {
            // InternalErrorModelParser.g:5933:4: (lv_condition_6_0= ruleConditionExpression )
            // InternalErrorModelParser.g:5934:5: lv_condition_6_0= ruleConditionExpression
            {

            					newCompositeNode(grammarAccess.getErrorBehaviorTransitionAccess().getConditionConditionExpressionParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_79);
            lv_condition_6_0=ruleConditionExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getErrorBehaviorTransitionRule());
            					}
            					set(
            						current,
            						"condition",
            						lv_condition_6_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_7=(Token)match(input,RightSquareBracketHyphenMinusGreaterThanSign,FollowSets000.FOLLOW_116); 

            			newLeafNode(otherlv_7, grammarAccess.getErrorBehaviorTransitionAccess().getRightSquareBracketHyphenMinusGreaterThanSignKeyword_4());
            		
            // InternalErrorModelParser.g:5955:3: ( ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State ) | (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis ) )
            int alt179=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt179=1;
                }
                break;
            case Same:
                {
                alt179=2;
                }
                break;
            case LeftParenthesis:
                {
                alt179=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 179, 0, input);

                throw nvae;
            }

            switch (alt179) {
                case 1 :
                    // InternalErrorModelParser.g:5956:4: ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? )
                    {
                    // InternalErrorModelParser.g:5956:4: ( ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )? )
                    // InternalErrorModelParser.g:5957:5: ( (otherlv_8= RULE_ID ) ) ( (lv_targetToken_9_0= ruleTypeToken ) )?
                    {
                    // InternalErrorModelParser.g:5957:5: ( (otherlv_8= RULE_ID ) )
                    // InternalErrorModelParser.g:5958:6: (otherlv_8= RULE_ID )
                    {
                    // InternalErrorModelParser.g:5958:6: (otherlv_8= RULE_ID )
                    // InternalErrorModelParser.g:5959:7: otherlv_8= RULE_ID
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getErrorBehaviorTransitionRule());
                    							}
                    						
                    otherlv_8=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_113); 

                    							newLeafNode(otherlv_8, grammarAccess.getErrorBehaviorTransitionAccess().getTargetErrorBehaviorStateCrossReference_5_0_0_0());
                    						

                    }


                    }

                    // InternalErrorModelParser.g:5970:5: ( (lv_targetToken_9_0= ruleTypeToken ) )?
                    int alt177=2;
                    int LA177_0 = input.LA(1);

                    if ( (LA177_0==LeftCurlyBracket) ) {
                        alt177=1;
                    }
                    switch (alt177) {
                        case 1 :
                            // InternalErrorModelParser.g:5971:6: (lv_targetToken_9_0= ruleTypeToken )
                            {
                            // InternalErrorModelParser.g:5971:6: (lv_targetToken_9_0= ruleTypeToken )
                            // InternalErrorModelParser.g:5972:7: lv_targetToken_9_0= ruleTypeToken
                            {

                            							newCompositeNode(grammarAccess.getErrorBehaviorTransitionAccess().getTargetTokenTypeTokenParserRuleCall_5_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_10);
                            lv_targetToken_9_0=ruleTypeToken();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getErrorBehaviorTransitionRule());
                            							}
                            							set(
                            								current,
                            								"targetToken",
                            								lv_targetToken_9_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:5991:4: ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State )
                    {
                    // InternalErrorModelParser.g:5991:4: ( ( (lv_steadyState_10_0= Same ) ) otherlv_11= State )
                    // InternalErrorModelParser.g:5992:5: ( (lv_steadyState_10_0= Same ) ) otherlv_11= State
                    {
                    // InternalErrorModelParser.g:5992:5: ( (lv_steadyState_10_0= Same ) )
                    // InternalErrorModelParser.g:5993:6: (lv_steadyState_10_0= Same )
                    {
                    // InternalErrorModelParser.g:5993:6: (lv_steadyState_10_0= Same )
                    // InternalErrorModelParser.g:5994:7: lv_steadyState_10_0= Same
                    {
                    lv_steadyState_10_0=(Token)match(input,Same,FollowSets000.FOLLOW_112); 

                    							newLeafNode(lv_steadyState_10_0, grammarAccess.getErrorBehaviorTransitionAccess().getSteadyStateSameKeyword_5_1_0_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getErrorBehaviorTransitionRule());
                    							}
                    							setWithLastConsumed(current, "steadyState", lv_steadyState_10_0 != null, "same");
                    						

                    }


                    }

                    otherlv_11=(Token)match(input,State,FollowSets000.FOLLOW_10); 

                    					newLeafNode(otherlv_11, grammarAccess.getErrorBehaviorTransitionAccess().getStateKeyword_5_1_1());
                    				

                    }


                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:6012:4: (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis )
                    {
                    // InternalErrorModelParser.g:6012:4: (otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis )
                    // InternalErrorModelParser.g:6013:5: otherlv_12= LeftParenthesis ( (lv_destinationBranches_13_0= ruleTransitionBranch ) ) (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+ otherlv_16= RightParenthesis
                    {
                    otherlv_12=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_117); 

                    					newLeafNode(otherlv_12, grammarAccess.getErrorBehaviorTransitionAccess().getLeftParenthesisKeyword_5_2_0());
                    				
                    // InternalErrorModelParser.g:6017:5: ( (lv_destinationBranches_13_0= ruleTransitionBranch ) )
                    // InternalErrorModelParser.g:6018:6: (lv_destinationBranches_13_0= ruleTransitionBranch )
                    {
                    // InternalErrorModelParser.g:6018:6: (lv_destinationBranches_13_0= ruleTransitionBranch )
                    // InternalErrorModelParser.g:6019:7: lv_destinationBranches_13_0= ruleTransitionBranch
                    {

                    							newCompositeNode(grammarAccess.getErrorBehaviorTransitionAccess().getDestinationBranchesTransitionBranchParserRuleCall_5_2_1_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_118);
                    lv_destinationBranches_13_0=ruleTransitionBranch();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getErrorBehaviorTransitionRule());
                    							}
                    							add(
                    								current,
                    								"destinationBranches",
                    								lv_destinationBranches_13_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.TransitionBranch");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:6036:5: (otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) ) )+
                    int cnt178=0;
                    loop178:
                    do {
                        int alt178=2;
                        int LA178_0 = input.LA(1);

                        if ( (LA178_0==Comma) ) {
                            alt178=1;
                        }


                        switch (alt178) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:6037:6: otherlv_14= Comma ( (lv_destinationBranches_15_0= ruleTransitionBranch ) )
                    	    {
                    	    otherlv_14=(Token)match(input,Comma,FollowSets000.FOLLOW_117); 

                    	    						newLeafNode(otherlv_14, grammarAccess.getErrorBehaviorTransitionAccess().getCommaKeyword_5_2_2_0());
                    	    					
                    	    // InternalErrorModelParser.g:6041:6: ( (lv_destinationBranches_15_0= ruleTransitionBranch ) )
                    	    // InternalErrorModelParser.g:6042:7: (lv_destinationBranches_15_0= ruleTransitionBranch )
                    	    {
                    	    // InternalErrorModelParser.g:6042:7: (lv_destinationBranches_15_0= ruleTransitionBranch )
                    	    // InternalErrorModelParser.g:6043:8: lv_destinationBranches_15_0= ruleTransitionBranch
                    	    {

                    	    								newCompositeNode(grammarAccess.getErrorBehaviorTransitionAccess().getDestinationBranchesTransitionBranchParserRuleCall_5_2_2_1_0());
                    	    							
                    	    pushFollow(FollowSets000.FOLLOW_119);
                    	    lv_destinationBranches_15_0=ruleTransitionBranch();

                    	    state._fsp--;


                    	    								if (current==null) {
                    	    									current = createModelElementForParent(grammarAccess.getErrorBehaviorTransitionRule());
                    	    								}
                    	    								add(
                    	    									current,
                    	    									"destinationBranches",
                    	    									lv_destinationBranches_15_0,
                    	    									"org.osate.xtext.aadl2.errormodel.ErrorModel.TransitionBranch");
                    	    								afterParserOrEnumRuleCall();
                    	    							

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt178 >= 1 ) break loop178;
                                EarlyExitException eee =
                                    new EarlyExitException(178, input);
                                throw eee;
                        }
                        cnt178++;
                    } while (true);

                    otherlv_16=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_10); 

                    					newLeafNode(otherlv_16, grammarAccess.getErrorBehaviorTransitionAccess().getRightParenthesisKeyword_5_2_3());
                    				

                    }


                    }
                    break;

            }

            otherlv_17=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_17, grammarAccess.getErrorBehaviorTransitionAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleTransitionBranch"
    // InternalErrorModelParser.g:6075:1: entryRuleTransitionBranch returns [EObject current=null] : iv_ruleTransitionBranch= ruleTransitionBranch EOF ;
    public final EObject entryRuleTransitionBranch() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTransitionBranch = null;


        try {
            // InternalErrorModelParser.g:6075:57: (iv_ruleTransitionBranch= ruleTransitionBranch EOF )
            // InternalErrorModelParser.g:6076:2: iv_ruleTransitionBranch= ruleTransitionBranch EOF
            {
             newCompositeNode(grammarAccess.getTransitionBranchRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleTransitionBranch=ruleTransitionBranch();

            state._fsp--;

             current =iv_ruleTransitionBranch; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleTransitionBranch"
    // InternalErrorModelParser.g:6082:1: ruleTransitionBranch returns [EObject current=null] : ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) ) otherlv_4= With ( (lv_value_5_0= ruleBranchValue ) ) ) ;
    public final EObject ruleTransitionBranch() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_steadyState_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_targetToken_1_0 = null;

        EObject lv_value_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6088:2: ( ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) ) otherlv_4= With ( (lv_value_5_0= ruleBranchValue ) ) ) )
            // InternalErrorModelParser.g:6089:2: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) ) otherlv_4= With ( (lv_value_5_0= ruleBranchValue ) ) )
            {
            // InternalErrorModelParser.g:6089:2: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) ) otherlv_4= With ( (lv_value_5_0= ruleBranchValue ) ) )
            // InternalErrorModelParser.g:6090:3: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) ) otherlv_4= With ( (lv_value_5_0= ruleBranchValue ) )
            {
            // InternalErrorModelParser.g:6090:3: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? ) | ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State ) )
            int alt181=2;
            int LA181_0 = input.LA(1);

            if ( (LA181_0==RULE_ID) ) {
                alt181=1;
            }
            else if ( (LA181_0==Same) ) {
                alt181=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 181, 0, input);

                throw nvae;
            }
            switch (alt181) {
                case 1 :
                    // InternalErrorModelParser.g:6091:4: ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? )
                    {
                    // InternalErrorModelParser.g:6091:4: ( ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )? )
                    // InternalErrorModelParser.g:6092:5: ( (otherlv_0= RULE_ID ) ) ( (lv_targetToken_1_0= ruleTypeToken ) )?
                    {
                    // InternalErrorModelParser.g:6092:5: ( (otherlv_0= RULE_ID ) )
                    // InternalErrorModelParser.g:6093:6: (otherlv_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:6093:6: (otherlv_0= RULE_ID )
                    // InternalErrorModelParser.g:6094:7: otherlv_0= RULE_ID
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getTransitionBranchRule());
                    							}
                    						
                    otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_120); 

                    							newLeafNode(otherlv_0, grammarAccess.getTransitionBranchAccess().getTargetErrorBehaviorStateCrossReference_0_0_0_0());
                    						

                    }


                    }

                    // InternalErrorModelParser.g:6105:5: ( (lv_targetToken_1_0= ruleTypeToken ) )?
                    int alt180=2;
                    int LA180_0 = input.LA(1);

                    if ( (LA180_0==LeftCurlyBracket) ) {
                        alt180=1;
                    }
                    switch (alt180) {
                        case 1 :
                            // InternalErrorModelParser.g:6106:6: (lv_targetToken_1_0= ruleTypeToken )
                            {
                            // InternalErrorModelParser.g:6106:6: (lv_targetToken_1_0= ruleTypeToken )
                            // InternalErrorModelParser.g:6107:7: lv_targetToken_1_0= ruleTypeToken
                            {

                            							newCompositeNode(grammarAccess.getTransitionBranchAccess().getTargetTokenTypeTokenParserRuleCall_0_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_121);
                            lv_targetToken_1_0=ruleTypeToken();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getTransitionBranchRule());
                            							}
                            							set(
                            								current,
                            								"targetToken",
                            								lv_targetToken_1_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:6126:4: ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State )
                    {
                    // InternalErrorModelParser.g:6126:4: ( ( (lv_steadyState_2_0= Same ) ) otherlv_3= State )
                    // InternalErrorModelParser.g:6127:5: ( (lv_steadyState_2_0= Same ) ) otherlv_3= State
                    {
                    // InternalErrorModelParser.g:6127:5: ( (lv_steadyState_2_0= Same ) )
                    // InternalErrorModelParser.g:6128:6: (lv_steadyState_2_0= Same )
                    {
                    // InternalErrorModelParser.g:6128:6: (lv_steadyState_2_0= Same )
                    // InternalErrorModelParser.g:6129:7: lv_steadyState_2_0= Same
                    {
                    lv_steadyState_2_0=(Token)match(input,Same,FollowSets000.FOLLOW_112); 

                    							newLeafNode(lv_steadyState_2_0, grammarAccess.getTransitionBranchAccess().getSteadyStateSameKeyword_0_1_0_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getTransitionBranchRule());
                    							}
                    							setWithLastConsumed(current, "steadyState", lv_steadyState_2_0 != null, "same");
                    						

                    }


                    }

                    otherlv_3=(Token)match(input,State,FollowSets000.FOLLOW_121); 

                    					newLeafNode(otherlv_3, grammarAccess.getTransitionBranchAccess().getStateKeyword_0_1_1());
                    				

                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,With,FollowSets000.FOLLOW_122); 

            			newLeafNode(otherlv_4, grammarAccess.getTransitionBranchAccess().getWithKeyword_1());
            		
            // InternalErrorModelParser.g:6151:3: ( (lv_value_5_0= ruleBranchValue ) )
            // InternalErrorModelParser.g:6152:4: (lv_value_5_0= ruleBranchValue )
            {
            // InternalErrorModelParser.g:6152:4: (lv_value_5_0= ruleBranchValue )
            // InternalErrorModelParser.g:6153:5: lv_value_5_0= ruleBranchValue
            {

            					newCompositeNode(grammarAccess.getTransitionBranchAccess().getValueBranchValueParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_value_5_0=ruleBranchValue();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getTransitionBranchRule());
            					}
            					set(
            						current,
            						"value",
            						lv_value_5_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.BranchValue");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleBranchValue"
    // InternalErrorModelParser.g:6174:1: entryRuleBranchValue returns [EObject current=null] : iv_ruleBranchValue= ruleBranchValue EOF ;
    public final EObject entryRuleBranchValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBranchValue = null;


        try {
            // InternalErrorModelParser.g:6174:52: (iv_ruleBranchValue= ruleBranchValue EOF )
            // InternalErrorModelParser.g:6175:2: iv_ruleBranchValue= ruleBranchValue EOF
            {
             newCompositeNode(grammarAccess.getBranchValueRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleBranchValue=ruleBranchValue();

            state._fsp--;

             current =iv_ruleBranchValue; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleBranchValue"
    // InternalErrorModelParser.g:6181:1: ruleBranchValue returns [EObject current=null] : ( () ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) ) ) ;
    public final EObject ruleBranchValue() throws RecognitionException {
        EObject current = null;

        Token lv_realvalue_1_0=null;
        Token lv_others_3_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:6187:2: ( ( () ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) ) ) )
            // InternalErrorModelParser.g:6188:2: ( () ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) ) )
            {
            // InternalErrorModelParser.g:6188:2: ( () ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) ) )
            // InternalErrorModelParser.g:6189:3: () ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) )
            {
            // InternalErrorModelParser.g:6189:3: ()
            // InternalErrorModelParser.g:6190:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getBranchValueAccess().getBranchValueAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:6196:3: ( ( (lv_realvalue_1_0= RULE_REAL_LIT ) ) | ( ( ruleQEMREF ) ) | ( (lv_others_3_0= Others ) ) )
            int alt182=3;
            switch ( input.LA(1) ) {
            case RULE_REAL_LIT:
                {
                alt182=1;
                }
                break;
            case RULE_ID:
                {
                alt182=2;
                }
                break;
            case Others:
                {
                alt182=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 182, 0, input);

                throw nvae;
            }

            switch (alt182) {
                case 1 :
                    // InternalErrorModelParser.g:6197:4: ( (lv_realvalue_1_0= RULE_REAL_LIT ) )
                    {
                    // InternalErrorModelParser.g:6197:4: ( (lv_realvalue_1_0= RULE_REAL_LIT ) )
                    // InternalErrorModelParser.g:6198:5: (lv_realvalue_1_0= RULE_REAL_LIT )
                    {
                    // InternalErrorModelParser.g:6198:5: (lv_realvalue_1_0= RULE_REAL_LIT )
                    // InternalErrorModelParser.g:6199:6: lv_realvalue_1_0= RULE_REAL_LIT
                    {
                    lv_realvalue_1_0=(Token)match(input,RULE_REAL_LIT,FollowSets000.FOLLOW_2); 

                    						newLeafNode(lv_realvalue_1_0, grammarAccess.getBranchValueAccess().getRealvalueREAL_LITTerminalRuleCall_1_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getBranchValueRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"realvalue",
                    							lv_realvalue_1_0,
                    							"org.osate.xtext.aadl2.properties.Properties.REAL_LIT");
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:6216:4: ( ( ruleQEMREF ) )
                    {
                    // InternalErrorModelParser.g:6216:4: ( ( ruleQEMREF ) )
                    // InternalErrorModelParser.g:6217:5: ( ruleQEMREF )
                    {
                    // InternalErrorModelParser.g:6217:5: ( ruleQEMREF )
                    // InternalErrorModelParser.g:6218:6: ruleQEMREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getBranchValueRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getBranchValueAccess().getSymboliclabelPropertyCrossReference_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleQEMREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:6233:4: ( (lv_others_3_0= Others ) )
                    {
                    // InternalErrorModelParser.g:6233:4: ( (lv_others_3_0= Others ) )
                    // InternalErrorModelParser.g:6234:5: (lv_others_3_0= Others )
                    {
                    // InternalErrorModelParser.g:6234:5: (lv_others_3_0= Others )
                    // InternalErrorModelParser.g:6235:6: lv_others_3_0= Others
                    {
                    lv_others_3_0=(Token)match(input,Others,FollowSets000.FOLLOW_2); 

                    						newLeafNode(lv_others_3_0, grammarAccess.getBranchValueAccess().getOthersOthersKeyword_1_2_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getBranchValueRule());
                    						}
                    						setWithLastConsumed(current, "others", lv_others_3_0 != null, "others");
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleConditionExpression"
    // InternalErrorModelParser.g:6252:1: entryRuleConditionExpression returns [EObject current=null] : iv_ruleConditionExpression= ruleConditionExpression EOF ;
    public final EObject entryRuleConditionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionExpression = null;


        try {
            // InternalErrorModelParser.g:6252:60: (iv_ruleConditionExpression= ruleConditionExpression EOF )
            // InternalErrorModelParser.g:6253:2: iv_ruleConditionExpression= ruleConditionExpression EOF
            {
             newCompositeNode(grammarAccess.getConditionExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleConditionExpression=ruleConditionExpression();

            state._fsp--;

             current =iv_ruleConditionExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleConditionExpression"
    // InternalErrorModelParser.g:6259:1: ruleConditionExpression returns [EObject current=null] : (this_AndExpression_0= ruleAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )* ) ;
    public final EObject ruleConditionExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_AndExpression_0 = null;

        EObject lv_operands_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6265:2: ( (this_AndExpression_0= ruleAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )* ) )
            // InternalErrorModelParser.g:6266:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )* )
            {
            // InternalErrorModelParser.g:6266:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )* )
            // InternalErrorModelParser.g:6267:3: this_AndExpression_0= ruleAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )*
            {

            			newCompositeNode(grammarAccess.getConditionExpressionAccess().getAndExpressionParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_123);
            this_AndExpression_0=ruleAndExpression();

            state._fsp--;


            			current = this_AndExpression_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalErrorModelParser.g:6275:3: ( () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) ) )*
            loop183:
            do {
                int alt183=2;
                int LA183_0 = input.LA(1);

                if ( (LA183_0==Or) ) {
                    alt183=1;
                }


                switch (alt183) {
            	case 1 :
            	    // InternalErrorModelParser.g:6276:4: () otherlv_2= Or ( (lv_operands_3_0= ruleAndExpression ) )
            	    {
            	    // InternalErrorModelParser.g:6276:4: ()
            	    // InternalErrorModelParser.g:6277:5: 
            	    {

            	    					current = forceCreateModelElementAndAdd(
            	    						grammarAccess.getConditionExpressionAccess().getOrExpressionOperandsAction_1_0(),
            	    						current);
            	    				

            	    }

            	    otherlv_2=(Token)match(input,Or,FollowSets000.FOLLOW_115); 

            	    				newLeafNode(otherlv_2, grammarAccess.getConditionExpressionAccess().getOrKeyword_1_1());
            	    			
            	    // InternalErrorModelParser.g:6287:4: ( (lv_operands_3_0= ruleAndExpression ) )
            	    // InternalErrorModelParser.g:6288:5: (lv_operands_3_0= ruleAndExpression )
            	    {
            	    // InternalErrorModelParser.g:6288:5: (lv_operands_3_0= ruleAndExpression )
            	    // InternalErrorModelParser.g:6289:6: lv_operands_3_0= ruleAndExpression
            	    {

            	    						newCompositeNode(grammarAccess.getConditionExpressionAccess().getOperandsAndExpressionParserRuleCall_1_2_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_123);
            	    lv_operands_3_0=ruleAndExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getConditionExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_3_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.AndExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleAndExpression"
    // InternalErrorModelParser.g:6311:1: entryRuleAndExpression returns [EObject current=null] : iv_ruleAndExpression= ruleAndExpression EOF ;
    public final EObject entryRuleAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAndExpression = null;


        try {
            // InternalErrorModelParser.g:6311:54: (iv_ruleAndExpression= ruleAndExpression EOF )
            // InternalErrorModelParser.g:6312:2: iv_ruleAndExpression= ruleAndExpression EOF
            {
             newCompositeNode(grammarAccess.getAndExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleAndExpression=ruleAndExpression();

            state._fsp--;

             current =iv_ruleAndExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleAndExpression"
    // InternalErrorModelParser.g:6318:1: ruleAndExpression returns [EObject current=null] : (this_ConditionTerm_0= ruleConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )* ) ;
    public final EObject ruleAndExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_ConditionTerm_0 = null;

        EObject lv_operands_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6324:2: ( (this_ConditionTerm_0= ruleConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )* ) )
            // InternalErrorModelParser.g:6325:2: (this_ConditionTerm_0= ruleConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )* )
            {
            // InternalErrorModelParser.g:6325:2: (this_ConditionTerm_0= ruleConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )* )
            // InternalErrorModelParser.g:6326:3: this_ConditionTerm_0= ruleConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )*
            {

            			newCompositeNode(grammarAccess.getAndExpressionAccess().getConditionTermParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_124);
            this_ConditionTerm_0=ruleConditionTerm();

            state._fsp--;


            			current = this_ConditionTerm_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalErrorModelParser.g:6334:3: ( () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) ) )*
            loop184:
            do {
                int alt184=2;
                int LA184_0 = input.LA(1);

                if ( (LA184_0==And) ) {
                    alt184=1;
                }


                switch (alt184) {
            	case 1 :
            	    // InternalErrorModelParser.g:6335:4: () otherlv_2= And ( (lv_operands_3_0= ruleConditionTerm ) )
            	    {
            	    // InternalErrorModelParser.g:6335:4: ()
            	    // InternalErrorModelParser.g:6336:5: 
            	    {

            	    					current = forceCreateModelElementAndAdd(
            	    						grammarAccess.getAndExpressionAccess().getAndExpressionOperandsAction_1_0(),
            	    						current);
            	    				

            	    }

            	    otherlv_2=(Token)match(input,And,FollowSets000.FOLLOW_115); 

            	    				newLeafNode(otherlv_2, grammarAccess.getAndExpressionAccess().getAndKeyword_1_1());
            	    			
            	    // InternalErrorModelParser.g:6346:4: ( (lv_operands_3_0= ruleConditionTerm ) )
            	    // InternalErrorModelParser.g:6347:5: (lv_operands_3_0= ruleConditionTerm )
            	    {
            	    // InternalErrorModelParser.g:6347:5: (lv_operands_3_0= ruleConditionTerm )
            	    // InternalErrorModelParser.g:6348:6: lv_operands_3_0= ruleConditionTerm
            	    {

            	    						newCompositeNode(grammarAccess.getAndExpressionAccess().getOperandsConditionTermParserRuleCall_1_2_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_124);
            	    lv_operands_3_0=ruleConditionTerm();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getAndExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_3_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionTerm");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleAllExpression"
    // InternalErrorModelParser.g:6370:1: entryRuleAllExpression returns [EObject current=null] : iv_ruleAllExpression= ruleAllExpression EOF ;
    public final EObject entryRuleAllExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAllExpression = null;


        try {
            // InternalErrorModelParser.g:6370:54: (iv_ruleAllExpression= ruleAllExpression EOF )
            // InternalErrorModelParser.g:6371:2: iv_ruleAllExpression= ruleAllExpression EOF
            {
             newCompositeNode(grammarAccess.getAllExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleAllExpression=ruleAllExpression();

            state._fsp--;

             current =iv_ruleAllExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleAllExpression"
    // InternalErrorModelParser.g:6377:1: ruleAllExpression returns [EObject current=null] : ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )* otherlv_8= RightParenthesis ) ;
    public final EObject ruleAllExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_count_3_0 = null;

        EObject lv_operands_5_0 = null;

        EObject lv_operands_7_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6383:2: ( ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )* otherlv_8= RightParenthesis ) )
            // InternalErrorModelParser.g:6384:2: ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )* otherlv_8= RightParenthesis )
            {
            // InternalErrorModelParser.g:6384:2: ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )* otherlv_8= RightParenthesis )
            // InternalErrorModelParser.g:6385:3: () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )* otherlv_8= RightParenthesis
            {
            // InternalErrorModelParser.g:6385:3: ()
            // InternalErrorModelParser.g:6386:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getAllExpressionAccess().getAllExpressionAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,All,FollowSets000.FOLLOW_125); 

            			newLeafNode(otherlv_1, grammarAccess.getAllExpressionAccess().getAllKeyword_1());
            		
            // InternalErrorModelParser.g:6396:3: (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )?
            int alt185=2;
            int LA185_0 = input.LA(1);

            if ( (LA185_0==HyphenMinus) ) {
                alt185=1;
            }
            switch (alt185) {
                case 1 :
                    // InternalErrorModelParser.g:6397:4: otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) )
                    {
                    otherlv_2=(Token)match(input,HyphenMinus,FollowSets000.FOLLOW_126); 

                    				newLeafNode(otherlv_2, grammarAccess.getAllExpressionAccess().getHyphenMinusKeyword_2_0());
                    			
                    // InternalErrorModelParser.g:6401:4: ( (lv_count_3_0= ruleINTVALUE ) )
                    // InternalErrorModelParser.g:6402:5: (lv_count_3_0= ruleINTVALUE )
                    {
                    // InternalErrorModelParser.g:6402:5: (lv_count_3_0= ruleINTVALUE )
                    // InternalErrorModelParser.g:6403:6: lv_count_3_0= ruleINTVALUE
                    {

                    						newCompositeNode(grammarAccess.getAllExpressionAccess().getCountINTVALUEParserRuleCall_2_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_127);
                    lv_count_3_0=ruleINTVALUE();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getAllExpressionRule());
                    						}
                    						set(
                    							current,
                    							"count",
                    							lv_count_3_0,
                    							"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_86); 

            			newLeafNode(otherlv_4, grammarAccess.getAllExpressionAccess().getLeftParenthesisKeyword_3());
            		
            // InternalErrorModelParser.g:6425:3: ( (lv_operands_5_0= ruleConditionElement ) )
            // InternalErrorModelParser.g:6426:4: (lv_operands_5_0= ruleConditionElement )
            {
            // InternalErrorModelParser.g:6426:4: (lv_operands_5_0= ruleConditionElement )
            // InternalErrorModelParser.g:6427:5: lv_operands_5_0= ruleConditionElement
            {

            					newCompositeNode(grammarAccess.getAllExpressionAccess().getOperandsConditionElementParserRuleCall_4_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_5_0=ruleConditionElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getAllExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_5_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:6444:3: (otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) ) )*
            loop186:
            do {
                int alt186=2;
                int LA186_0 = input.LA(1);

                if ( (LA186_0==Comma) ) {
                    alt186=1;
                }


                switch (alt186) {
            	case 1 :
            	    // InternalErrorModelParser.g:6445:4: otherlv_6= Comma ( (lv_operands_7_0= ruleConditionElement ) )
            	    {
            	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_86); 

            	    				newLeafNode(otherlv_6, grammarAccess.getAllExpressionAccess().getCommaKeyword_5_0());
            	    			
            	    // InternalErrorModelParser.g:6449:4: ( (lv_operands_7_0= ruleConditionElement ) )
            	    // InternalErrorModelParser.g:6450:5: (lv_operands_7_0= ruleConditionElement )
            	    {
            	    // InternalErrorModelParser.g:6450:5: (lv_operands_7_0= ruleConditionElement )
            	    // InternalErrorModelParser.g:6451:6: lv_operands_7_0= ruleConditionElement
            	    {

            	    						newCompositeNode(grammarAccess.getAllExpressionAccess().getOperandsConditionElementParserRuleCall_5_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_7_0=ruleConditionElement();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getAllExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_7_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionElement");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_8=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getAllExpressionAccess().getRightParenthesisKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleOrmoreExpression"
    // InternalErrorModelParser.g:6477:1: entryRuleOrmoreExpression returns [EObject current=null] : iv_ruleOrmoreExpression= ruleOrmoreExpression EOF ;
    public final EObject entryRuleOrmoreExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOrmoreExpression = null;


        try {
            // InternalErrorModelParser.g:6477:57: (iv_ruleOrmoreExpression= ruleOrmoreExpression EOF )
            // InternalErrorModelParser.g:6478:2: iv_ruleOrmoreExpression= ruleOrmoreExpression EOF
            {
             newCompositeNode(grammarAccess.getOrmoreExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleOrmoreExpression=ruleOrmoreExpression();

            state._fsp--;

             current =iv_ruleOrmoreExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleOrmoreExpression"
    // InternalErrorModelParser.g:6484:1: ruleOrmoreExpression returns [EObject current=null] : ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis ) ;
    public final EObject ruleOrmoreExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_count_0_0 = null;

        EObject lv_operands_3_0 = null;

        EObject lv_operands_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6490:2: ( ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis ) )
            // InternalErrorModelParser.g:6491:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis )
            {
            // InternalErrorModelParser.g:6491:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis )
            // InternalErrorModelParser.g:6492:3: ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis
            {
            // InternalErrorModelParser.g:6492:3: ( (lv_count_0_0= ruleINTVALUE ) )
            // InternalErrorModelParser.g:6493:4: (lv_count_0_0= ruleINTVALUE )
            {
            // InternalErrorModelParser.g:6493:4: (lv_count_0_0= ruleINTVALUE )
            // InternalErrorModelParser.g:6494:5: lv_count_0_0= ruleINTVALUE
            {

            					newCompositeNode(grammarAccess.getOrmoreExpressionAccess().getCountINTVALUEParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_128);
            lv_count_0_0=ruleINTVALUE();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getOrmoreExpressionRule());
            					}
            					set(
            						current,
            						"count",
            						lv_count_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,Ormore,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_1, grammarAccess.getOrmoreExpressionAccess().getOrmoreKeyword_1());
            		
            otherlv_2=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_115); 

            			newLeafNode(otherlv_2, grammarAccess.getOrmoreExpressionAccess().getLeftParenthesisKeyword_2());
            		
            // InternalErrorModelParser.g:6519:3: ( (lv_operands_3_0= ruleConditionExpression ) )
            // InternalErrorModelParser.g:6520:4: (lv_operands_3_0= ruleConditionExpression )
            {
            // InternalErrorModelParser.g:6520:4: (lv_operands_3_0= ruleConditionExpression )
            // InternalErrorModelParser.g:6521:5: lv_operands_3_0= ruleConditionExpression
            {

            					newCompositeNode(grammarAccess.getOrmoreExpressionAccess().getOperandsConditionExpressionParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_3_0=ruleConditionExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getOrmoreExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_3_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:6538:3: (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )*
            loop187:
            do {
                int alt187=2;
                int LA187_0 = input.LA(1);

                if ( (LA187_0==Comma) ) {
                    alt187=1;
                }


                switch (alt187) {
            	case 1 :
            	    // InternalErrorModelParser.g:6539:4: otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_115); 

            	    				newLeafNode(otherlv_4, grammarAccess.getOrmoreExpressionAccess().getCommaKeyword_4_0());
            	    			
            	    // InternalErrorModelParser.g:6543:4: ( (lv_operands_5_0= ruleConditionExpression ) )
            	    // InternalErrorModelParser.g:6544:5: (lv_operands_5_0= ruleConditionExpression )
            	    {
            	    // InternalErrorModelParser.g:6544:5: (lv_operands_5_0= ruleConditionExpression )
            	    // InternalErrorModelParser.g:6545:6: lv_operands_5_0= ruleConditionExpression
            	    {

            	    						newCompositeNode(grammarAccess.getOrmoreExpressionAccess().getOperandsConditionExpressionParserRuleCall_4_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_5_0=ruleConditionExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getOrmoreExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_5_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getOrmoreExpressionAccess().getRightParenthesisKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleOrlessExpression"
    // InternalErrorModelParser.g:6571:1: entryRuleOrlessExpression returns [EObject current=null] : iv_ruleOrlessExpression= ruleOrlessExpression EOF ;
    public final EObject entryRuleOrlessExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOrlessExpression = null;


        try {
            // InternalErrorModelParser.g:6571:57: (iv_ruleOrlessExpression= ruleOrlessExpression EOF )
            // InternalErrorModelParser.g:6572:2: iv_ruleOrlessExpression= ruleOrlessExpression EOF
            {
             newCompositeNode(grammarAccess.getOrlessExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleOrlessExpression=ruleOrlessExpression();

            state._fsp--;

             current =iv_ruleOrlessExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleOrlessExpression"
    // InternalErrorModelParser.g:6578:1: ruleOrlessExpression returns [EObject current=null] : ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis ) ;
    public final EObject ruleOrlessExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_count_0_0 = null;

        EObject lv_operands_3_0 = null;

        EObject lv_operands_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6584:2: ( ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis ) )
            // InternalErrorModelParser.g:6585:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis )
            {
            // InternalErrorModelParser.g:6585:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis )
            // InternalErrorModelParser.g:6586:3: ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )* otherlv_6= RightParenthesis
            {
            // InternalErrorModelParser.g:6586:3: ( (lv_count_0_0= ruleINTVALUE ) )
            // InternalErrorModelParser.g:6587:4: (lv_count_0_0= ruleINTVALUE )
            {
            // InternalErrorModelParser.g:6587:4: (lv_count_0_0= ruleINTVALUE )
            // InternalErrorModelParser.g:6588:5: lv_count_0_0= ruleINTVALUE
            {

            					newCompositeNode(grammarAccess.getOrlessExpressionAccess().getCountINTVALUEParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_129);
            lv_count_0_0=ruleINTVALUE();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getOrlessExpressionRule());
            					}
            					set(
            						current,
            						"count",
            						lv_count_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,Orless,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_1, grammarAccess.getOrlessExpressionAccess().getOrlessKeyword_1());
            		
            otherlv_2=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_115); 

            			newLeafNode(otherlv_2, grammarAccess.getOrlessExpressionAccess().getLeftParenthesisKeyword_2());
            		
            // InternalErrorModelParser.g:6613:3: ( (lv_operands_3_0= ruleConditionExpression ) )
            // InternalErrorModelParser.g:6614:4: (lv_operands_3_0= ruleConditionExpression )
            {
            // InternalErrorModelParser.g:6614:4: (lv_operands_3_0= ruleConditionExpression )
            // InternalErrorModelParser.g:6615:5: lv_operands_3_0= ruleConditionExpression
            {

            					newCompositeNode(grammarAccess.getOrlessExpressionAccess().getOperandsConditionExpressionParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_3_0=ruleConditionExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getOrlessExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_3_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:6632:3: (otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) ) )*
            loop188:
            do {
                int alt188=2;
                int LA188_0 = input.LA(1);

                if ( (LA188_0==Comma) ) {
                    alt188=1;
                }


                switch (alt188) {
            	case 1 :
            	    // InternalErrorModelParser.g:6633:4: otherlv_4= Comma ( (lv_operands_5_0= ruleConditionExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_115); 

            	    				newLeafNode(otherlv_4, grammarAccess.getOrlessExpressionAccess().getCommaKeyword_4_0());
            	    			
            	    // InternalErrorModelParser.g:6637:4: ( (lv_operands_5_0= ruleConditionExpression ) )
            	    // InternalErrorModelParser.g:6638:5: (lv_operands_5_0= ruleConditionExpression )
            	    {
            	    // InternalErrorModelParser.g:6638:5: (lv_operands_5_0= ruleConditionExpression )
            	    // InternalErrorModelParser.g:6639:6: lv_operands_5_0= ruleConditionExpression
            	    {

            	    						newCompositeNode(grammarAccess.getOrlessExpressionAccess().getOperandsConditionExpressionParserRuleCall_4_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_5_0=ruleConditionExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getOrlessExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_5_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getOrlessExpressionAccess().getRightParenthesisKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleConditionTerm"
    // InternalErrorModelParser.g:6665:1: entryRuleConditionTerm returns [EObject current=null] : iv_ruleConditionTerm= ruleConditionTerm EOF ;
    public final EObject entryRuleConditionTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionTerm = null;


        try {
            // InternalErrorModelParser.g:6665:54: (iv_ruleConditionTerm= ruleConditionTerm EOF )
            // InternalErrorModelParser.g:6666:2: iv_ruleConditionTerm= ruleConditionTerm EOF
            {
             newCompositeNode(grammarAccess.getConditionTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleConditionTerm=ruleConditionTerm();

            state._fsp--;

             current =iv_ruleConditionTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleConditionTerm"
    // InternalErrorModelParser.g:6672:1: ruleConditionTerm returns [EObject current=null] : (this_ConditionElement_0= ruleConditionElement | this_OrmoreExpression_1= ruleOrmoreExpression | this_OrlessExpression_2= ruleOrlessExpression | this_AllExpression_3= ruleAllExpression | (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis ) ) ;
    public final EObject ruleConditionTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject this_ConditionElement_0 = null;

        EObject this_OrmoreExpression_1 = null;

        EObject this_OrlessExpression_2 = null;

        EObject this_AllExpression_3 = null;

        EObject this_ConditionExpression_5 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6678:2: ( (this_ConditionElement_0= ruleConditionElement | this_OrmoreExpression_1= ruleOrmoreExpression | this_OrlessExpression_2= ruleOrlessExpression | this_AllExpression_3= ruleAllExpression | (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis ) ) )
            // InternalErrorModelParser.g:6679:2: (this_ConditionElement_0= ruleConditionElement | this_OrmoreExpression_1= ruleOrmoreExpression | this_OrlessExpression_2= ruleOrlessExpression | this_AllExpression_3= ruleAllExpression | (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis ) )
            {
            // InternalErrorModelParser.g:6679:2: (this_ConditionElement_0= ruleConditionElement | this_OrmoreExpression_1= ruleOrmoreExpression | this_OrlessExpression_2= ruleOrlessExpression | this_AllExpression_3= ruleAllExpression | (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis ) )
            int alt189=5;
            switch ( input.LA(1) ) {
            case Connection:
            case Processor:
            case Bindings:
            case Binding:
            case Access:
            case Memory:
            case RULE_ID:
                {
                alt189=1;
                }
                break;
            case RULE_INTEGER_LIT:
                {
                int LA189_2 = input.LA(2);

                if ( (LA189_2==Ormore) ) {
                    alt189=2;
                }
                else if ( (LA189_2==Orless) ) {
                    alt189=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 189, 2, input);

                    throw nvae;
                }
                }
                break;
            case All:
                {
                alt189=4;
                }
                break;
            case LeftParenthesis:
                {
                alt189=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 189, 0, input);

                throw nvae;
            }

            switch (alt189) {
                case 1 :
                    // InternalErrorModelParser.g:6680:3: this_ConditionElement_0= ruleConditionElement
                    {

                    			newCompositeNode(grammarAccess.getConditionTermAccess().getConditionElementParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ConditionElement_0=ruleConditionElement();

                    state._fsp--;


                    			current = this_ConditionElement_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:6689:3: this_OrmoreExpression_1= ruleOrmoreExpression
                    {

                    			newCompositeNode(grammarAccess.getConditionTermAccess().getOrmoreExpressionParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_OrmoreExpression_1=ruleOrmoreExpression();

                    state._fsp--;


                    			current = this_OrmoreExpression_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:6698:3: this_OrlessExpression_2= ruleOrlessExpression
                    {

                    			newCompositeNode(grammarAccess.getConditionTermAccess().getOrlessExpressionParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_OrlessExpression_2=ruleOrlessExpression();

                    state._fsp--;


                    			current = this_OrlessExpression_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 4 :
                    // InternalErrorModelParser.g:6707:3: this_AllExpression_3= ruleAllExpression
                    {

                    			newCompositeNode(grammarAccess.getConditionTermAccess().getAllExpressionParserRuleCall_3());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_AllExpression_3=ruleAllExpression();

                    state._fsp--;


                    			current = this_AllExpression_3;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 5 :
                    // InternalErrorModelParser.g:6716:3: (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis )
                    {
                    // InternalErrorModelParser.g:6716:3: (otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis )
                    // InternalErrorModelParser.g:6717:4: otherlv_4= LeftParenthesis this_ConditionExpression_5= ruleConditionExpression otherlv_6= RightParenthesis
                    {
                    otherlv_4=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_115); 

                    				newLeafNode(otherlv_4, grammarAccess.getConditionTermAccess().getLeftParenthesisKeyword_4_0());
                    			

                    				newCompositeNode(grammarAccess.getConditionTermAccess().getConditionExpressionParserRuleCall_4_1());
                    			
                    pushFollow(FollowSets000.FOLLOW_130);
                    this_ConditionExpression_5=ruleConditionExpression();

                    state._fsp--;


                    				current = this_ConditionExpression_5;
                    				afterParserOrEnumRuleCall();
                    			
                    otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_6, grammarAccess.getConditionTermAccess().getRightParenthesisKeyword_4_2());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleConditionElement"
    // InternalErrorModelParser.g:6738:1: entryRuleConditionElement returns [EObject current=null] : iv_ruleConditionElement= ruleConditionElement EOF ;
    public final EObject entryRuleConditionElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionElement = null;


        try {
            // InternalErrorModelParser.g:6738:57: (iv_ruleConditionElement= ruleConditionElement EOF )
            // InternalErrorModelParser.g:6739:2: iv_ruleConditionElement= ruleConditionElement EOF
            {
             newCompositeNode(grammarAccess.getConditionElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleConditionElement=ruleConditionElement();

            state._fsp--;

             current =iv_ruleConditionElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleConditionElement"
    // InternalErrorModelParser.g:6745:1: ruleConditionElement returns [EObject current=null] : ( ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) ) ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )? ) ;
    public final EObject ruleConditionElement() throws RecognitionException {
        EObject current = null;

        EObject lv_qualifiedErrorPropagationReference_0_0 = null;

        EObject lv_constraint_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6751:2: ( ( ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) ) ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )? ) )
            // InternalErrorModelParser.g:6752:2: ( ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) ) ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )? )
            {
            // InternalErrorModelParser.g:6752:2: ( ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) ) ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )? )
            // InternalErrorModelParser.g:6753:3: ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) ) ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )?
            {
            // InternalErrorModelParser.g:6753:3: ( (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation ) )
            // InternalErrorModelParser.g:6754:4: (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation )
            {
            // InternalErrorModelParser.g:6754:4: (lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation )
            // InternalErrorModelParser.g:6755:5: lv_qualifiedErrorPropagationReference_0_0= ruleQualifiedErrorEventOrPropagation
            {

            					newCompositeNode(grammarAccess.getConditionElementAccess().getQualifiedErrorPropagationReferenceQualifiedErrorEventOrPropagationParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_131);
            lv_qualifiedErrorPropagationReference_0_0=ruleQualifiedErrorEventOrPropagation();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getConditionElementRule());
            					}
            					set(
            						current,
            						"qualifiedErrorPropagationReference",
            						lv_qualifiedErrorPropagationReference_0_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedErrorEventOrPropagation");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:6772:3: ( (lv_constraint_1_0= ruleTypeTokenConstraintNoError ) )?
            int alt190=2;
            int LA190_0 = input.LA(1);

            if ( (LA190_0==LeftCurlyBracket) ) {
                alt190=1;
            }
            switch (alt190) {
                case 1 :
                    // InternalErrorModelParser.g:6773:4: (lv_constraint_1_0= ruleTypeTokenConstraintNoError )
                    {
                    // InternalErrorModelParser.g:6773:4: (lv_constraint_1_0= ruleTypeTokenConstraintNoError )
                    // InternalErrorModelParser.g:6774:5: lv_constraint_1_0= ruleTypeTokenConstraintNoError
                    {

                    					newCompositeNode(grammarAccess.getConditionElementAccess().getConstraintTypeTokenConstraintNoErrorParserRuleCall_1_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_constraint_1_0=ruleTypeTokenConstraintNoError();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getConditionElementRule());
                    					}
                    					set(
                    						current,
                    						"constraint",
                    						lv_constraint_1_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraintNoError");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQualifiedErrorEventOrPropagation"
    // InternalErrorModelParser.g:6795:1: entryRuleQualifiedErrorEventOrPropagation returns [EObject current=null] : iv_ruleQualifiedErrorEventOrPropagation= ruleQualifiedErrorEventOrPropagation EOF ;
    public final EObject entryRuleQualifiedErrorEventOrPropagation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedErrorEventOrPropagation = null;


        try {
            // InternalErrorModelParser.g:6795:73: (iv_ruleQualifiedErrorEventOrPropagation= ruleQualifiedErrorEventOrPropagation EOF )
            // InternalErrorModelParser.g:6796:2: iv_ruleQualifiedErrorEventOrPropagation= ruleQualifiedErrorEventOrPropagation EOF
            {
             newCompositeNode(grammarAccess.getQualifiedErrorEventOrPropagationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQualifiedErrorEventOrPropagation=ruleQualifiedErrorEventOrPropagation();

            state._fsp--;

             current =iv_ruleQualifiedErrorEventOrPropagation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQualifiedErrorEventOrPropagation"
    // InternalErrorModelParser.g:6802:1: ruleQualifiedErrorEventOrPropagation returns [EObject current=null] : ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) ) ;
    public final EObject ruleQualifiedErrorEventOrPropagation() throws RecognitionException {
        EObject current = null;

        EObject lv_emv2Target_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6808:2: ( ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) ) )
            // InternalErrorModelParser.g:6809:2: ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) )
            {
            // InternalErrorModelParser.g:6809:2: ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) )
            // InternalErrorModelParser.g:6810:3: () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) )
            {
            // InternalErrorModelParser.g:6810:3: ()
            // InternalErrorModelParser.g:6811:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getQualifiedErrorEventOrPropagationAccess().getQualifiedErrorEventOrPropagationAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:6817:3: ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) )
            // InternalErrorModelParser.g:6818:4: (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath )
            {
            // InternalErrorModelParser.g:6818:4: (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath )
            // InternalErrorModelParser.g:6819:5: lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath
            {

            					newCompositeNode(grammarAccess.getQualifiedErrorEventOrPropagationAccess().getEmv2TargetEMV2ErrorPropagationPathParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_emv2Target_1_0=ruleEMV2ErrorPropagationPath();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getQualifiedErrorEventOrPropagationRule());
            					}
            					set(
            						current,
            						"emv2Target",
            						lv_emv2Target_1_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2ErrorPropagationPath");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEMV2ErrorPropagationPath"
    // InternalErrorModelParser.g:6840:1: entryRuleEMV2ErrorPropagationPath returns [EObject current=null] : iv_ruleEMV2ErrorPropagationPath= ruleEMV2ErrorPropagationPath EOF ;
    public final EObject entryRuleEMV2ErrorPropagationPath() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEMV2ErrorPropagationPath = null;


        try {
            // InternalErrorModelParser.g:6840:65: (iv_ruleEMV2ErrorPropagationPath= ruleEMV2ErrorPropagationPath EOF )
            // InternalErrorModelParser.g:6841:2: iv_ruleEMV2ErrorPropagationPath= ruleEMV2ErrorPropagationPath EOF
            {
             newCompositeNode(grammarAccess.getEMV2ErrorPropagationPathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEMV2ErrorPropagationPath=ruleEMV2ErrorPropagationPath();

            state._fsp--;

             current =iv_ruleEMV2ErrorPropagationPath; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEMV2ErrorPropagationPath"
    // InternalErrorModelParser.g:6847:1: ruleEMV2ErrorPropagationPath returns [EObject current=null] : ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? ) ) ;
    public final EObject ruleEMV2ErrorPropagationPath() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_emv2PropagationKind_0_0 = null;

        EObject lv_path_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6853:2: ( ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? ) ) )
            // InternalErrorModelParser.g:6854:2: ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? ) )
            {
            // InternalErrorModelParser.g:6854:2: ( ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? ) )
            int alt192=2;
            int LA192_0 = input.LA(1);

            if ( (LA192_0==Connection||LA192_0==Processor||LA192_0==Bindings||LA192_0==Binding||LA192_0==Access||LA192_0==Memory) ) {
                alt192=1;
            }
            else if ( (LA192_0==RULE_ID) ) {
                alt192=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 192, 0, input);

                throw nvae;
            }
            switch (alt192) {
                case 1 :
                    // InternalErrorModelParser.g:6855:3: ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) )
                    {
                    // InternalErrorModelParser.g:6855:3: ( (lv_emv2PropagationKind_0_0= rulePropagationKind ) )
                    // InternalErrorModelParser.g:6856:4: (lv_emv2PropagationKind_0_0= rulePropagationKind )
                    {
                    // InternalErrorModelParser.g:6856:4: (lv_emv2PropagationKind_0_0= rulePropagationKind )
                    // InternalErrorModelParser.g:6857:5: lv_emv2PropagationKind_0_0= rulePropagationKind
                    {

                    					newCompositeNode(grammarAccess.getEMV2ErrorPropagationPathAccess().getEmv2PropagationKindPropagationKindParserRuleCall_0_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_emv2PropagationKind_0_0=rulePropagationKind();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getEMV2ErrorPropagationPathRule());
                    					}
                    					set(
                    						current,
                    						"emv2PropagationKind",
                    						lv_emv2PropagationKind_0_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.PropagationKind");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:6875:3: ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? )
                    {
                    // InternalErrorModelParser.g:6875:3: ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )? )
                    // InternalErrorModelParser.g:6876:4: ( (otherlv_1= RULE_ID ) ) (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )?
                    {
                    // InternalErrorModelParser.g:6876:4: ( (otherlv_1= RULE_ID ) )
                    // InternalErrorModelParser.g:6877:5: (otherlv_1= RULE_ID )
                    {
                    // InternalErrorModelParser.g:6877:5: (otherlv_1= RULE_ID )
                    // InternalErrorModelParser.g:6878:6: otherlv_1= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getEMV2ErrorPropagationPathRule());
                    						}
                    					
                    otherlv_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

                    						newLeafNode(otherlv_1, grammarAccess.getEMV2ErrorPropagationPathAccess().getNamedElementNamedElementCrossReference_1_0_0());
                    					

                    }


                    }

                    // InternalErrorModelParser.g:6889:4: (otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) ) )?
                    int alt191=2;
                    int LA191_0 = input.LA(1);

                    if ( (LA191_0==FullStop) ) {
                        alt191=1;
                    }
                    switch (alt191) {
                        case 1 :
                            // InternalErrorModelParser.g:6890:5: otherlv_2= FullStop ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) )
                            {
                            otherlv_2=(Token)match(input,FullStop,FollowSets000.FOLLOW_86); 

                            					newLeafNode(otherlv_2, grammarAccess.getEMV2ErrorPropagationPathAccess().getFullStopKeyword_1_1_0());
                            				
                            // InternalErrorModelParser.g:6894:5: ( (lv_path_3_0= ruleEMV2ErrorPropagationPath ) )
                            // InternalErrorModelParser.g:6895:6: (lv_path_3_0= ruleEMV2ErrorPropagationPath )
                            {
                            // InternalErrorModelParser.g:6895:6: (lv_path_3_0= ruleEMV2ErrorPropagationPath )
                            // InternalErrorModelParser.g:6896:7: lv_path_3_0= ruleEMV2ErrorPropagationPath
                            {

                            							newCompositeNode(grammarAccess.getEMV2ErrorPropagationPathAccess().getPathEMV2ErrorPropagationPathParserRuleCall_1_1_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_2);
                            lv_path_3_0=ruleEMV2ErrorPropagationPath();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getEMV2ErrorPropagationPathRule());
                            							}
                            							set(
                            								current,
                            								"path",
                            								lv_path_3_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2ErrorPropagationPath");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleEventOrPropagation"
    // InternalErrorModelParser.g:6919:1: entryRuleEventOrPropagation returns [EObject current=null] : iv_ruleEventOrPropagation= ruleEventOrPropagation EOF ;
    public final EObject entryRuleEventOrPropagation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEventOrPropagation = null;


        try {
            // InternalErrorModelParser.g:6919:59: (iv_ruleEventOrPropagation= ruleEventOrPropagation EOF )
            // InternalErrorModelParser.g:6920:2: iv_ruleEventOrPropagation= ruleEventOrPropagation EOF
            {
             newCompositeNode(grammarAccess.getEventOrPropagationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleEventOrPropagation=ruleEventOrPropagation();

            state._fsp--;

             current =iv_ruleEventOrPropagation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleEventOrPropagation"
    // InternalErrorModelParser.g:6926:1: ruleEventOrPropagation returns [EObject current=null] : (this_ErrorBehaviorEvent_0= ruleErrorBehaviorEvent | this_ErrorPropagation_1= ruleErrorPropagation ) ;
    public final EObject ruleEventOrPropagation() throws RecognitionException {
        EObject current = null;

        EObject this_ErrorBehaviorEvent_0 = null;

        EObject this_ErrorPropagation_1 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6932:2: ( (this_ErrorBehaviorEvent_0= ruleErrorBehaviorEvent | this_ErrorPropagation_1= ruleErrorPropagation ) )
            // InternalErrorModelParser.g:6933:2: (this_ErrorBehaviorEvent_0= ruleErrorBehaviorEvent | this_ErrorPropagation_1= ruleErrorPropagation )
            {
            // InternalErrorModelParser.g:6933:2: (this_ErrorBehaviorEvent_0= ruleErrorBehaviorEvent | this_ErrorPropagation_1= ruleErrorPropagation )
            int alt193=2;
            int LA193_0 = input.LA(1);

            if ( (LA193_0==RULE_ID) ) {
                int LA193_1 = input.LA(2);

                if ( (LA193_1==Colon) ) {
                    int LA193_3 = input.LA(3);

                    if ( (LA193_3==Recover||LA193_3==Repair||LA193_3==Error) ) {
                        alt193=1;
                    }
                    else if ( ((LA193_3>=Not && LA193_3<=Out)||LA193_3==In) ) {
                        alt193=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 193, 3, input);

                        throw nvae;
                    }
                }
                else if ( (LA193_1==FullStop) ) {
                    alt193=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 193, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA193_0==Connection||LA193_0==Processor||LA193_0==Bindings||LA193_0==Binding||LA193_0==Access||LA193_0==Memory) ) {
                alt193=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 193, 0, input);

                throw nvae;
            }
            switch (alt193) {
                case 1 :
                    // InternalErrorModelParser.g:6934:3: this_ErrorBehaviorEvent_0= ruleErrorBehaviorEvent
                    {

                    			newCompositeNode(grammarAccess.getEventOrPropagationAccess().getErrorBehaviorEventParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorBehaviorEvent_0=ruleErrorBehaviorEvent();

                    state._fsp--;


                    			current = this_ErrorBehaviorEvent_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:6943:3: this_ErrorPropagation_1= ruleErrorPropagation
                    {

                    			newCompositeNode(grammarAccess.getEventOrPropagationAccess().getErrorPropagationParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ErrorPropagation_1=ruleErrorPropagation();

                    state._fsp--;


                    			current = this_ErrorPropagation_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleOutgoingPropagationCondition"
    // InternalErrorModelParser.g:6955:1: entryRuleOutgoingPropagationCondition returns [EObject current=null] : iv_ruleOutgoingPropagationCondition= ruleOutgoingPropagationCondition EOF ;
    public final EObject entryRuleOutgoingPropagationCondition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOutgoingPropagationCondition = null;


        try {
            // InternalErrorModelParser.g:6955:69: (iv_ruleOutgoingPropagationCondition= ruleOutgoingPropagationCondition EOF )
            // InternalErrorModelParser.g:6956:2: iv_ruleOutgoingPropagationCondition= ruleOutgoingPropagationCondition EOF
            {
             newCompositeNode(grammarAccess.getOutgoingPropagationConditionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleOutgoingPropagationCondition=ruleOutgoingPropagationCondition();

            state._fsp--;

             current =iv_ruleOutgoingPropagationCondition; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleOutgoingPropagationCondition"
    // InternalErrorModelParser.g:6962:1: ruleOutgoingPropagationCondition returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? ) otherlv_11= Semicolon ) ;
    public final EObject ruleOutgoingPropagationCondition() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_allStates_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token lv_allPropagations_9_0=null;
        Token otherlv_11=null;
        EObject lv_typeTokenConstraint_3_0 = null;

        EObject lv_condition_6_0 = null;

        EObject lv_typeToken_10_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:6968:2: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? ) otherlv_11= Semicolon ) )
            // InternalErrorModelParser.g:6969:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? ) otherlv_11= Semicolon )
            {
            // InternalErrorModelParser.g:6969:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? ) otherlv_11= Semicolon )
            // InternalErrorModelParser.g:6970:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? ) otherlv_11= Semicolon
            {
            // InternalErrorModelParser.g:6970:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )?
            int alt194=2;
            int LA194_0 = input.LA(1);

            if ( (LA194_0==RULE_ID) ) {
                int LA194_1 = input.LA(2);

                if ( (LA194_1==Colon) ) {
                    alt194=1;
                }
            }
            switch (alt194) {
                case 1 :
                    // InternalErrorModelParser.g:6971:4: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon
                    {
                    // InternalErrorModelParser.g:6971:4: ( (lv_name_0_0= RULE_ID ) )
                    // InternalErrorModelParser.g:6972:5: (lv_name_0_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:6972:5: (lv_name_0_0= RULE_ID )
                    // InternalErrorModelParser.g:6973:6: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

                    						newLeafNode(lv_name_0_0, grammarAccess.getOutgoingPropagationConditionAccess().getNameIDTerminalRuleCall_0_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getOutgoingPropagationConditionRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"name",
                    							lv_name_0_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ID");
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_23); 

                    				newLeafNode(otherlv_1, grammarAccess.getOutgoingPropagationConditionAccess().getColonKeyword_0_1());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:6994:3: ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) )
            int alt196=2;
            int LA196_0 = input.LA(1);

            if ( (LA196_0==RULE_ID) ) {
                alt196=1;
            }
            else if ( (LA196_0==All) ) {
                alt196=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 196, 0, input);

                throw nvae;
            }
            switch (alt196) {
                case 1 :
                    // InternalErrorModelParser.g:6995:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    {
                    // InternalErrorModelParser.g:6995:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    // InternalErrorModelParser.g:6996:5: ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    {
                    // InternalErrorModelParser.g:6996:5: ( (otherlv_2= RULE_ID ) )
                    // InternalErrorModelParser.g:6997:6: (otherlv_2= RULE_ID )
                    {
                    // InternalErrorModelParser.g:6997:6: (otherlv_2= RULE_ID )
                    // InternalErrorModelParser.g:6998:7: otherlv_2= RULE_ID
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getOutgoingPropagationConditionRule());
                    							}
                    						
                    otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_114); 

                    							newLeafNode(otherlv_2, grammarAccess.getOutgoingPropagationConditionAccess().getStateErrorBehaviorStateCrossReference_1_0_0_0());
                    						

                    }


                    }

                    // InternalErrorModelParser.g:7009:5: ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    int alt195=2;
                    int LA195_0 = input.LA(1);

                    if ( (LA195_0==LeftCurlyBracket) ) {
                        alt195=1;
                    }
                    switch (alt195) {
                        case 1 :
                            // InternalErrorModelParser.g:7010:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            {
                            // InternalErrorModelParser.g:7010:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            // InternalErrorModelParser.g:7011:7: lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint
                            {

                            							newCompositeNode(grammarAccess.getOutgoingPropagationConditionAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_1_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_77);
                            lv_typeTokenConstraint_3_0=ruleTypeTokenConstraint();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getOutgoingPropagationConditionRule());
                            							}
                            							set(
                            								current,
                            								"typeTokenConstraint",
                            								lv_typeTokenConstraint_3_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:7030:4: ( (lv_allStates_4_0= All ) )
                    {
                    // InternalErrorModelParser.g:7030:4: ( (lv_allStates_4_0= All ) )
                    // InternalErrorModelParser.g:7031:5: (lv_allStates_4_0= All )
                    {
                    // InternalErrorModelParser.g:7031:5: (lv_allStates_4_0= All )
                    // InternalErrorModelParser.g:7032:6: lv_allStates_4_0= All
                    {
                    lv_allStates_4_0=(Token)match(input,All,FollowSets000.FOLLOW_77); 

                    						newLeafNode(lv_allStates_4_0, grammarAccess.getOutgoingPropagationConditionAccess().getAllStatesAllKeyword_1_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getOutgoingPropagationConditionRule());
                    						}
                    						setWithLastConsumed(current, "allStates", lv_allStates_4_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,HyphenMinusLeftSquareBracket,FollowSets000.FOLLOW_132); 

            			newLeafNode(otherlv_5, grammarAccess.getOutgoingPropagationConditionAccess().getHyphenMinusLeftSquareBracketKeyword_2());
            		
            // InternalErrorModelParser.g:7049:3: ( (lv_condition_6_0= ruleConditionExpression ) )?
            int alt197=2;
            int LA197_0 = input.LA(1);

            if ( (LA197_0==Connection||LA197_0==Processor||LA197_0==Bindings||LA197_0==Binding||LA197_0==Access||LA197_0==Memory||LA197_0==All||LA197_0==LeftParenthesis||LA197_0==RULE_INTEGER_LIT||LA197_0==RULE_ID) ) {
                alt197=1;
            }
            switch (alt197) {
                case 1 :
                    // InternalErrorModelParser.g:7050:4: (lv_condition_6_0= ruleConditionExpression )
                    {
                    // InternalErrorModelParser.g:7050:4: (lv_condition_6_0= ruleConditionExpression )
                    // InternalErrorModelParser.g:7051:5: lv_condition_6_0= ruleConditionExpression
                    {

                    					newCompositeNode(grammarAccess.getOutgoingPropagationConditionAccess().getConditionConditionExpressionParserRuleCall_3_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_79);
                    lv_condition_6_0=ruleConditionExpression();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getOutgoingPropagationConditionRule());
                    					}
                    					set(
                    						current,
                    						"condition",
                    						lv_condition_6_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,RightSquareBracketHyphenMinusGreaterThanSign,FollowSets000.FOLLOW_88); 

            			newLeafNode(otherlv_7, grammarAccess.getOutgoingPropagationConditionAccess().getRightSquareBracketHyphenMinusGreaterThanSignKeyword_4());
            		
            // InternalErrorModelParser.g:7072:3: ( ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )? )
            // InternalErrorModelParser.g:7073:4: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) ) ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )?
            {
            // InternalErrorModelParser.g:7073:4: ( ( ( ruleErrorPropagationPoint ) ) | ( (lv_allPropagations_9_0= All ) ) )
            int alt198=2;
            int LA198_0 = input.LA(1);

            if ( (LA198_0==Connection||LA198_0==Processor||LA198_0==Bindings||LA198_0==Binding||LA198_0==Access||LA198_0==Memory||LA198_0==RULE_ID) ) {
                alt198=1;
            }
            else if ( (LA198_0==All) ) {
                alt198=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 198, 0, input);

                throw nvae;
            }
            switch (alt198) {
                case 1 :
                    // InternalErrorModelParser.g:7074:5: ( ( ruleErrorPropagationPoint ) )
                    {
                    // InternalErrorModelParser.g:7074:5: ( ( ruleErrorPropagationPoint ) )
                    // InternalErrorModelParser.g:7075:6: ( ruleErrorPropagationPoint )
                    {
                    // InternalErrorModelParser.g:7075:6: ( ruleErrorPropagationPoint )
                    // InternalErrorModelParser.g:7076:7: ruleErrorPropagationPoint
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getOutgoingPropagationConditionRule());
                    							}
                    						

                    							newCompositeNode(grammarAccess.getOutgoingPropagationConditionAccess().getOutgoingErrorPropagationCrossReference_5_0_0_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_113);
                    ruleErrorPropagationPoint();

                    state._fsp--;


                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:7091:5: ( (lv_allPropagations_9_0= All ) )
                    {
                    // InternalErrorModelParser.g:7091:5: ( (lv_allPropagations_9_0= All ) )
                    // InternalErrorModelParser.g:7092:6: (lv_allPropagations_9_0= All )
                    {
                    // InternalErrorModelParser.g:7092:6: (lv_allPropagations_9_0= All )
                    // InternalErrorModelParser.g:7093:7: lv_allPropagations_9_0= All
                    {
                    lv_allPropagations_9_0=(Token)match(input,All,FollowSets000.FOLLOW_113); 

                    							newLeafNode(lv_allPropagations_9_0, grammarAccess.getOutgoingPropagationConditionAccess().getAllPropagationsAllKeyword_5_0_1_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getOutgoingPropagationConditionRule());
                    							}
                    							setWithLastConsumed(current, "allPropagations", lv_allPropagations_9_0 != null, "all");
                    						

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:7106:4: ( (lv_typeToken_10_0= ruleTypeTokenOrNoError ) )?
            int alt199=2;
            int LA199_0 = input.LA(1);

            if ( (LA199_0==LeftCurlyBracket) ) {
                alt199=1;
            }
            switch (alt199) {
                case 1 :
                    // InternalErrorModelParser.g:7107:5: (lv_typeToken_10_0= ruleTypeTokenOrNoError )
                    {
                    // InternalErrorModelParser.g:7107:5: (lv_typeToken_10_0= ruleTypeTokenOrNoError )
                    // InternalErrorModelParser.g:7108:6: lv_typeToken_10_0= ruleTypeTokenOrNoError
                    {

                    						newCompositeNode(grammarAccess.getOutgoingPropagationConditionAccess().getTypeTokenTypeTokenOrNoErrorParserRuleCall_5_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_typeToken_10_0=ruleTypeTokenOrNoError();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getOutgoingPropagationConditionRule());
                    						}
                    						set(
                    							current,
                    							"typeToken",
                    							lv_typeToken_10_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenOrNoError");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }
                    break;

            }


            }

            otherlv_11=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_11, grammarAccess.getOutgoingPropagationConditionAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorDetection"
    // InternalErrorModelParser.g:7134:1: entryRuleErrorDetection returns [EObject current=null] : iv_ruleErrorDetection= ruleErrorDetection EOF ;
    public final EObject entryRuleErrorDetection() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorDetection = null;


        try {
            // InternalErrorModelParser.g:7134:55: (iv_ruleErrorDetection= ruleErrorDetection EOF )
            // InternalErrorModelParser.g:7135:2: iv_ruleErrorDetection= ruleErrorDetection EOF
            {
             newCompositeNode(grammarAccess.getErrorDetectionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorDetection=ruleErrorDetection();

            state._fsp--;

             current =iv_ruleErrorDetection; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorDetection"
    // InternalErrorModelParser.g:7141:1: ruleErrorDetection returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) ) otherlv_9= ExclamationMark (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )? otherlv_13= Semicolon ) ;
    public final EObject ruleErrorDetection() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_allStates_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        EObject lv_typeTokenConstraint_3_0 = null;

        EObject lv_condition_6_0 = null;

        EObject lv_detectionReportingPort_8_0 = null;

        EObject lv_errorCode_11_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7147:2: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) ) otherlv_9= ExclamationMark (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )? otherlv_13= Semicolon ) )
            // InternalErrorModelParser.g:7148:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) ) otherlv_9= ExclamationMark (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )? otherlv_13= Semicolon )
            {
            // InternalErrorModelParser.g:7148:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) ) otherlv_9= ExclamationMark (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )? otherlv_13= Semicolon )
            // InternalErrorModelParser.g:7149:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) ) otherlv_5= HyphenMinusLeftSquareBracket ( (lv_condition_6_0= ruleConditionExpression ) )? otherlv_7= RightSquareBracketHyphenMinusGreaterThanSign ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) ) otherlv_9= ExclamationMark (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )? otherlv_13= Semicolon
            {
            // InternalErrorModelParser.g:7149:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )?
            int alt200=2;
            int LA200_0 = input.LA(1);

            if ( (LA200_0==RULE_ID) ) {
                int LA200_1 = input.LA(2);

                if ( (LA200_1==Colon) ) {
                    alt200=1;
                }
            }
            switch (alt200) {
                case 1 :
                    // InternalErrorModelParser.g:7150:4: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon
                    {
                    // InternalErrorModelParser.g:7150:4: ( (lv_name_0_0= RULE_ID ) )
                    // InternalErrorModelParser.g:7151:5: (lv_name_0_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:7151:5: (lv_name_0_0= RULE_ID )
                    // InternalErrorModelParser.g:7152:6: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

                    						newLeafNode(lv_name_0_0, grammarAccess.getErrorDetectionAccess().getNameIDTerminalRuleCall_0_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorDetectionRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"name",
                    							lv_name_0_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ID");
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_23); 

                    				newLeafNode(otherlv_1, grammarAccess.getErrorDetectionAccess().getColonKeyword_0_1());
                    			

                    }
                    break;

            }

            // InternalErrorModelParser.g:7173:3: ( ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? ) | ( (lv_allStates_4_0= All ) ) )
            int alt202=2;
            int LA202_0 = input.LA(1);

            if ( (LA202_0==RULE_ID) ) {
                alt202=1;
            }
            else if ( (LA202_0==All) ) {
                alt202=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 202, 0, input);

                throw nvae;
            }
            switch (alt202) {
                case 1 :
                    // InternalErrorModelParser.g:7174:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    {
                    // InternalErrorModelParser.g:7174:4: ( ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )? )
                    // InternalErrorModelParser.g:7175:5: ( (otherlv_2= RULE_ID ) ) ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    {
                    // InternalErrorModelParser.g:7175:5: ( (otherlv_2= RULE_ID ) )
                    // InternalErrorModelParser.g:7176:6: (otherlv_2= RULE_ID )
                    {
                    // InternalErrorModelParser.g:7176:6: (otherlv_2= RULE_ID )
                    // InternalErrorModelParser.g:7177:7: otherlv_2= RULE_ID
                    {

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getErrorDetectionRule());
                    							}
                    						
                    otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_114); 

                    							newLeafNode(otherlv_2, grammarAccess.getErrorDetectionAccess().getStateErrorBehaviorStateCrossReference_1_0_0_0());
                    						

                    }


                    }

                    // InternalErrorModelParser.g:7188:5: ( (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint ) )?
                    int alt201=2;
                    int LA201_0 = input.LA(1);

                    if ( (LA201_0==LeftCurlyBracket) ) {
                        alt201=1;
                    }
                    switch (alt201) {
                        case 1 :
                            // InternalErrorModelParser.g:7189:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            {
                            // InternalErrorModelParser.g:7189:6: (lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint )
                            // InternalErrorModelParser.g:7190:7: lv_typeTokenConstraint_3_0= ruleTypeTokenConstraint
                            {

                            							newCompositeNode(grammarAccess.getErrorDetectionAccess().getTypeTokenConstraintTypeTokenConstraintParserRuleCall_1_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_77);
                            lv_typeTokenConstraint_3_0=ruleTypeTokenConstraint();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getErrorDetectionRule());
                            							}
                            							set(
                            								current,
                            								"typeTokenConstraint",
                            								lv_typeTokenConstraint_3_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:7209:4: ( (lv_allStates_4_0= All ) )
                    {
                    // InternalErrorModelParser.g:7209:4: ( (lv_allStates_4_0= All ) )
                    // InternalErrorModelParser.g:7210:5: (lv_allStates_4_0= All )
                    {
                    // InternalErrorModelParser.g:7210:5: (lv_allStates_4_0= All )
                    // InternalErrorModelParser.g:7211:6: lv_allStates_4_0= All
                    {
                    lv_allStates_4_0=(Token)match(input,All,FollowSets000.FOLLOW_77); 

                    						newLeafNode(lv_allStates_4_0, grammarAccess.getErrorDetectionAccess().getAllStatesAllKeyword_1_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getErrorDetectionRule());
                    						}
                    						setWithLastConsumed(current, "allStates", lv_allStates_4_0 != null, "all");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,HyphenMinusLeftSquareBracket,FollowSets000.FOLLOW_132); 

            			newLeafNode(otherlv_5, grammarAccess.getErrorDetectionAccess().getHyphenMinusLeftSquareBracketKeyword_2());
            		
            // InternalErrorModelParser.g:7228:3: ( (lv_condition_6_0= ruleConditionExpression ) )?
            int alt203=2;
            int LA203_0 = input.LA(1);

            if ( (LA203_0==Connection||LA203_0==Processor||LA203_0==Bindings||LA203_0==Binding||LA203_0==Access||LA203_0==Memory||LA203_0==All||LA203_0==LeftParenthesis||LA203_0==RULE_INTEGER_LIT||LA203_0==RULE_ID) ) {
                alt203=1;
            }
            switch (alt203) {
                case 1 :
                    // InternalErrorModelParser.g:7229:4: (lv_condition_6_0= ruleConditionExpression )
                    {
                    // InternalErrorModelParser.g:7229:4: (lv_condition_6_0= ruleConditionExpression )
                    // InternalErrorModelParser.g:7230:5: lv_condition_6_0= ruleConditionExpression
                    {

                    					newCompositeNode(grammarAccess.getErrorDetectionAccess().getConditionConditionExpressionParserRuleCall_3_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_79);
                    lv_condition_6_0=ruleConditionExpression();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorDetectionRule());
                    					}
                    					set(
                    						current,
                    						"condition",
                    						lv_condition_6_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.ConditionExpression");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,RightSquareBracketHyphenMinusGreaterThanSign,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_7, grammarAccess.getErrorDetectionAccess().getRightSquareBracketHyphenMinusGreaterThanSignKeyword_4());
            		
            // InternalErrorModelParser.g:7251:3: ( (lv_detectionReportingPort_8_0= ruleReportingPortReference ) )
            // InternalErrorModelParser.g:7252:4: (lv_detectionReportingPort_8_0= ruleReportingPortReference )
            {
            // InternalErrorModelParser.g:7252:4: (lv_detectionReportingPort_8_0= ruleReportingPortReference )
            // InternalErrorModelParser.g:7253:5: lv_detectionReportingPort_8_0= ruleReportingPortReference
            {

            					newCompositeNode(grammarAccess.getErrorDetectionAccess().getDetectionReportingPortReportingPortReferenceParserRuleCall_5_0());
            				
            pushFollow(FollowSets000.FOLLOW_133);
            lv_detectionReportingPort_8_0=ruleReportingPortReference();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getErrorDetectionRule());
            					}
            					set(
            						current,
            						"detectionReportingPort",
            						lv_detectionReportingPort_8_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.ReportingPortReference");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_9=(Token)match(input,ExclamationMark,FollowSets000.FOLLOW_134); 

            			newLeafNode(otherlv_9, grammarAccess.getErrorDetectionAccess().getExclamationMarkKeyword_6());
            		
            // InternalErrorModelParser.g:7274:3: (otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis )?
            int alt204=2;
            int LA204_0 = input.LA(1);

            if ( (LA204_0==LeftParenthesis) ) {
                alt204=1;
            }
            switch (alt204) {
                case 1 :
                    // InternalErrorModelParser.g:7275:4: otherlv_10= LeftParenthesis ( (lv_errorCode_11_0= ruleErrorCodeValue ) ) otherlv_12= RightParenthesis
                    {
                    otherlv_10=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_135); 

                    				newLeafNode(otherlv_10, grammarAccess.getErrorDetectionAccess().getLeftParenthesisKeyword_7_0());
                    			
                    // InternalErrorModelParser.g:7279:4: ( (lv_errorCode_11_0= ruleErrorCodeValue ) )
                    // InternalErrorModelParser.g:7280:5: (lv_errorCode_11_0= ruleErrorCodeValue )
                    {
                    // InternalErrorModelParser.g:7280:5: (lv_errorCode_11_0= ruleErrorCodeValue )
                    // InternalErrorModelParser.g:7281:6: lv_errorCode_11_0= ruleErrorCodeValue
                    {

                    						newCompositeNode(grammarAccess.getErrorDetectionAccess().getErrorCodeErrorCodeValueParserRuleCall_7_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_130);
                    lv_errorCode_11_0=ruleErrorCodeValue();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getErrorDetectionRule());
                    						}
                    						set(
                    							current,
                    							"errorCode",
                    							lv_errorCode_11_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.ErrorCodeValue");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_12=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_12, grammarAccess.getErrorDetectionAccess().getRightParenthesisKeyword_7_2());
                    			

                    }
                    break;

            }

            otherlv_13=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_13, grammarAccess.getErrorDetectionAccess().getSemicolonKeyword_8());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleReportingPortReference"
    // InternalErrorModelParser.g:7311:1: entryRuleReportingPortReference returns [EObject current=null] : iv_ruleReportingPortReference= ruleReportingPortReference EOF ;
    public final EObject entryRuleReportingPortReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReportingPortReference = null;


        try {
            // InternalErrorModelParser.g:7311:63: (iv_ruleReportingPortReference= ruleReportingPortReference EOF )
            // InternalErrorModelParser.g:7312:2: iv_ruleReportingPortReference= ruleReportingPortReference EOF
            {
             newCompositeNode(grammarAccess.getReportingPortReferenceRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleReportingPortReference=ruleReportingPortReference();

            state._fsp--;

             current =iv_ruleReportingPortReference; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleReportingPortReference"
    // InternalErrorModelParser.g:7318:1: ruleReportingPortReference returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )* ) ;
    public final EObject ruleReportingPortReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:7324:2: ( ( ( (otherlv_0= RULE_ID ) ) ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )* ) )
            // InternalErrorModelParser.g:7325:2: ( ( (otherlv_0= RULE_ID ) ) ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )* )
            {
            // InternalErrorModelParser.g:7325:2: ( ( (otherlv_0= RULE_ID ) ) ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )* )
            // InternalErrorModelParser.g:7326:3: ( (otherlv_0= RULE_ID ) ) ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )*
            {
            // InternalErrorModelParser.g:7326:3: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:7327:4: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:7327:4: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:7328:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getReportingPortReferenceRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            					newLeafNode(otherlv_0, grammarAccess.getReportingPortReferenceAccess().getElementNamedElementCrossReference_0_0());
            				

            }


            }

            // InternalErrorModelParser.g:7339:3: ( () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) ) )*
            loop205:
            do {
                int alt205=2;
                int LA205_0 = input.LA(1);

                if ( (LA205_0==FullStop) ) {
                    alt205=1;
                }


                switch (alt205) {
            	case 1 :
            	    // InternalErrorModelParser.g:7340:4: () otherlv_2= FullStop ( (otherlv_3= RULE_ID ) )
            	    {
            	    // InternalErrorModelParser.g:7340:4: ()
            	    // InternalErrorModelParser.g:7341:5: 
            	    {

            	    					current = forceCreateModelElementAndSet(
            	    						grammarAccess.getReportingPortReferenceAccess().getReportingPortReferencePreviousAction_1_0(),
            	    						current);
            	    				

            	    }

            	    otherlv_2=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

            	    				newLeafNode(otherlv_2, grammarAccess.getReportingPortReferenceAccess().getFullStopKeyword_1_1());
            	    			
            	    // InternalErrorModelParser.g:7351:4: ( (otherlv_3= RULE_ID ) )
            	    // InternalErrorModelParser.g:7352:5: (otherlv_3= RULE_ID )
            	    {
            	    // InternalErrorModelParser.g:7352:5: (otherlv_3= RULE_ID )
            	    // InternalErrorModelParser.g:7353:6: otherlv_3= RULE_ID
            	    {

            	    						if (current==null) {
            	    							current = createModelElement(grammarAccess.getReportingPortReferenceRule());
            	    						}
            	    					
            	    otherlv_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            	    						newLeafNode(otherlv_3, grammarAccess.getReportingPortReferenceAccess().getElementNamedElementCrossReference_1_2_0());
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorCodeValue"
    // InternalErrorModelParser.g:7369:1: entryRuleErrorCodeValue returns [EObject current=null] : iv_ruleErrorCodeValue= ruleErrorCodeValue EOF ;
    public final EObject entryRuleErrorCodeValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorCodeValue = null;


        try {
            // InternalErrorModelParser.g:7369:55: (iv_ruleErrorCodeValue= ruleErrorCodeValue EOF )
            // InternalErrorModelParser.g:7370:2: iv_ruleErrorCodeValue= ruleErrorCodeValue EOF
            {
             newCompositeNode(grammarAccess.getErrorCodeValueRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorCodeValue=ruleErrorCodeValue();

            state._fsp--;

             current =iv_ruleErrorCodeValue; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorCodeValue"
    // InternalErrorModelParser.g:7376:1: ruleErrorCodeValue returns [EObject current=null] : ( ( (lv_intValue_0_0= RULE_INTEGER_LIT ) ) | ( ( ruleQPREF ) ) | ( (lv_enumLiteral_2_0= RULE_STRING ) ) ) ;
    public final EObject ruleErrorCodeValue() throws RecognitionException {
        EObject current = null;

        Token lv_intValue_0_0=null;
        Token lv_enumLiteral_2_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:7382:2: ( ( ( (lv_intValue_0_0= RULE_INTEGER_LIT ) ) | ( ( ruleQPREF ) ) | ( (lv_enumLiteral_2_0= RULE_STRING ) ) ) )
            // InternalErrorModelParser.g:7383:2: ( ( (lv_intValue_0_0= RULE_INTEGER_LIT ) ) | ( ( ruleQPREF ) ) | ( (lv_enumLiteral_2_0= RULE_STRING ) ) )
            {
            // InternalErrorModelParser.g:7383:2: ( ( (lv_intValue_0_0= RULE_INTEGER_LIT ) ) | ( ( ruleQPREF ) ) | ( (lv_enumLiteral_2_0= RULE_STRING ) ) )
            int alt206=3;
            switch ( input.LA(1) ) {
            case RULE_INTEGER_LIT:
                {
                alt206=1;
                }
                break;
            case RULE_ID:
                {
                alt206=2;
                }
                break;
            case RULE_STRING:
                {
                alt206=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 206, 0, input);

                throw nvae;
            }

            switch (alt206) {
                case 1 :
                    // InternalErrorModelParser.g:7384:3: ( (lv_intValue_0_0= RULE_INTEGER_LIT ) )
                    {
                    // InternalErrorModelParser.g:7384:3: ( (lv_intValue_0_0= RULE_INTEGER_LIT ) )
                    // InternalErrorModelParser.g:7385:4: (lv_intValue_0_0= RULE_INTEGER_LIT )
                    {
                    // InternalErrorModelParser.g:7385:4: (lv_intValue_0_0= RULE_INTEGER_LIT )
                    // InternalErrorModelParser.g:7386:5: lv_intValue_0_0= RULE_INTEGER_LIT
                    {
                    lv_intValue_0_0=(Token)match(input,RULE_INTEGER_LIT,FollowSets000.FOLLOW_2); 

                    					newLeafNode(lv_intValue_0_0, grammarAccess.getErrorCodeValueAccess().getIntValueINTEGER_LITTerminalRuleCall_0_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getErrorCodeValueRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"intValue",
                    						lv_intValue_0_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.INTEGER_LIT");
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:7403:3: ( ( ruleQPREF ) )
                    {
                    // InternalErrorModelParser.g:7403:3: ( ( ruleQPREF ) )
                    // InternalErrorModelParser.g:7404:4: ( ruleQPREF )
                    {
                    // InternalErrorModelParser.g:7404:4: ( ruleQPREF )
                    // InternalErrorModelParser.g:7405:5: ruleQPREF
                    {

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getErrorCodeValueRule());
                    					}
                    				

                    					newCompositeNode(grammarAccess.getErrorCodeValueAccess().getConstantPropertyConstantCrossReference_1_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_2);
                    ruleQPREF();

                    state._fsp--;


                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:7420:3: ( (lv_enumLiteral_2_0= RULE_STRING ) )
                    {
                    // InternalErrorModelParser.g:7420:3: ( (lv_enumLiteral_2_0= RULE_STRING ) )
                    // InternalErrorModelParser.g:7421:4: (lv_enumLiteral_2_0= RULE_STRING )
                    {
                    // InternalErrorModelParser.g:7421:4: (lv_enumLiteral_2_0= RULE_STRING )
                    // InternalErrorModelParser.g:7422:5: lv_enumLiteral_2_0= RULE_STRING
                    {
                    lv_enumLiteral_2_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_2); 

                    					newLeafNode(lv_enumLiteral_2_0, grammarAccess.getErrorCodeValueAccess().getEnumLiteralSTRINGTerminalRuleCall_2_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getErrorCodeValueRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"enumLiteral",
                    						lv_enumLiteral_2_0,
                    						"org.osate.xtext.aadl2.properties.Properties.STRING");
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleErrorStateToModeMapping"
    // InternalErrorModelParser.g:7442:1: entryRuleErrorStateToModeMapping returns [EObject current=null] : iv_ruleErrorStateToModeMapping= ruleErrorStateToModeMapping EOF ;
    public final EObject entryRuleErrorStateToModeMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleErrorStateToModeMapping = null;


        try {
            // InternalErrorModelParser.g:7442:64: (iv_ruleErrorStateToModeMapping= ruleErrorStateToModeMapping EOF )
            // InternalErrorModelParser.g:7443:2: iv_ruleErrorStateToModeMapping= ruleErrorStateToModeMapping EOF
            {
             newCompositeNode(grammarAccess.getErrorStateToModeMappingRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleErrorStateToModeMapping=ruleErrorStateToModeMapping();

            state._fsp--;

             current =iv_ruleErrorStateToModeMapping; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleErrorStateToModeMapping"
    // InternalErrorModelParser.g:7449:1: ruleErrorStateToModeMapping returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( (lv_typeToken_1_0= ruleTypeToken ) )? otherlv_2= In otherlv_3= Modes otherlv_4= LeftParenthesis ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* otherlv_8= RightParenthesis otherlv_9= Semicolon ) ;
    public final EObject ruleErrorStateToModeMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        EObject lv_typeToken_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7455:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_typeToken_1_0= ruleTypeToken ) )? otherlv_2= In otherlv_3= Modes otherlv_4= LeftParenthesis ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* otherlv_8= RightParenthesis otherlv_9= Semicolon ) )
            // InternalErrorModelParser.g:7456:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_typeToken_1_0= ruleTypeToken ) )? otherlv_2= In otherlv_3= Modes otherlv_4= LeftParenthesis ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* otherlv_8= RightParenthesis otherlv_9= Semicolon )
            {
            // InternalErrorModelParser.g:7456:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_typeToken_1_0= ruleTypeToken ) )? otherlv_2= In otherlv_3= Modes otherlv_4= LeftParenthesis ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* otherlv_8= RightParenthesis otherlv_9= Semicolon )
            // InternalErrorModelParser.g:7457:3: ( (otherlv_0= RULE_ID ) ) ( (lv_typeToken_1_0= ruleTypeToken ) )? otherlv_2= In otherlv_3= Modes otherlv_4= LeftParenthesis ( (otherlv_5= RULE_ID ) ) (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )* otherlv_8= RightParenthesis otherlv_9= Semicolon
            {
            // InternalErrorModelParser.g:7457:3: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:7458:4: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:7458:4: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:7459:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorStateToModeMappingRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_136); 

            					newLeafNode(otherlv_0, grammarAccess.getErrorStateToModeMappingAccess().getErrorStateErrorBehaviorStateCrossReference_0_0());
            				

            }


            }

            // InternalErrorModelParser.g:7470:3: ( (lv_typeToken_1_0= ruleTypeToken ) )?
            int alt207=2;
            int LA207_0 = input.LA(1);

            if ( (LA207_0==LeftCurlyBracket) ) {
                alt207=1;
            }
            switch (alt207) {
                case 1 :
                    // InternalErrorModelParser.g:7471:4: (lv_typeToken_1_0= ruleTypeToken )
                    {
                    // InternalErrorModelParser.g:7471:4: (lv_typeToken_1_0= ruleTypeToken )
                    // InternalErrorModelParser.g:7472:5: lv_typeToken_1_0= ruleTypeToken
                    {

                    					newCompositeNode(grammarAccess.getErrorStateToModeMappingAccess().getTypeTokenTypeTokenParserRuleCall_1_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_137);
                    lv_typeToken_1_0=ruleTypeToken();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getErrorStateToModeMappingRule());
                    					}
                    					set(
                    						current,
                    						"typeToken",
                    						lv_typeToken_1_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,In,FollowSets000.FOLLOW_138); 

            			newLeafNode(otherlv_2, grammarAccess.getErrorStateToModeMappingAccess().getInKeyword_2());
            		
            otherlv_3=(Token)match(input,Modes,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_3, grammarAccess.getErrorStateToModeMappingAccess().getModesKeyword_3());
            		
            otherlv_4=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_4, grammarAccess.getErrorStateToModeMappingAccess().getLeftParenthesisKeyword_4());
            		
            // InternalErrorModelParser.g:7501:3: ( (otherlv_5= RULE_ID ) )
            // InternalErrorModelParser.g:7502:4: (otherlv_5= RULE_ID )
            {
            // InternalErrorModelParser.g:7502:4: (otherlv_5= RULE_ID )
            // InternalErrorModelParser.g:7503:5: otherlv_5= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getErrorStateToModeMappingRule());
            					}
            				
            otherlv_5=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_119); 

            					newLeafNode(otherlv_5, grammarAccess.getErrorStateToModeMappingAccess().getMappedModesModeCrossReference_5_0());
            				

            }


            }

            // InternalErrorModelParser.g:7514:3: (otherlv_6= Comma ( (otherlv_7= RULE_ID ) ) )*
            loop208:
            do {
                int alt208=2;
                int LA208_0 = input.LA(1);

                if ( (LA208_0==Comma) ) {
                    alt208=1;
                }


                switch (alt208) {
            	case 1 :
            	    // InternalErrorModelParser.g:7515:4: otherlv_6= Comma ( (otherlv_7= RULE_ID ) )
            	    {
            	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

            	    				newLeafNode(otherlv_6, grammarAccess.getErrorStateToModeMappingAccess().getCommaKeyword_6_0());
            	    			
            	    // InternalErrorModelParser.g:7519:4: ( (otherlv_7= RULE_ID ) )
            	    // InternalErrorModelParser.g:7520:5: (otherlv_7= RULE_ID )
            	    {
            	    // InternalErrorModelParser.g:7520:5: (otherlv_7= RULE_ID )
            	    // InternalErrorModelParser.g:7521:6: otherlv_7= RULE_ID
            	    {

            	    						if (current==null) {
            	    							current = createModelElement(grammarAccess.getErrorStateToModeMappingRule());
            	    						}
            	    					
            	    otherlv_7=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_119); 

            	    						newLeafNode(otherlv_7, grammarAccess.getErrorStateToModeMappingAccess().getMappedModesModeCrossReference_6_1_0());
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_8=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_10); 

            			newLeafNode(otherlv_8, grammarAccess.getErrorStateToModeMappingAccess().getRightParenthesisKeyword_7());
            		
            otherlv_9=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_9, grammarAccess.getErrorStateToModeMappingAccess().getSemicolonKeyword_8());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleCompositeState"
    // InternalErrorModelParser.g:7545:1: entryRuleCompositeState returns [EObject current=null] : iv_ruleCompositeState= ruleCompositeState EOF ;
    public final EObject entryRuleCompositeState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompositeState = null;


        try {
            // InternalErrorModelParser.g:7545:55: (iv_ruleCompositeState= ruleCompositeState EOF )
            // InternalErrorModelParser.g:7546:2: iv_ruleCompositeState= ruleCompositeState EOF
            {
             newCompositeNode(grammarAccess.getCompositeStateRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleCompositeState=ruleCompositeState();

            state._fsp--;

             current =iv_ruleCompositeState; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleCompositeState"
    // InternalErrorModelParser.g:7552:1: ruleCompositeState returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? otherlv_2= LeftSquareBracket ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) ) otherlv_5= RightSquareBracketHyphenMinusGreaterThanSign ( (otherlv_6= RULE_ID ) ) ( (lv_typedToken_7_0= ruleTypeToken ) )? otherlv_8= Semicolon ) ;
    public final EObject ruleCompositeState() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_others_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_condition_3_0 = null;

        EObject lv_typedToken_7_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7558:2: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? otherlv_2= LeftSquareBracket ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) ) otherlv_5= RightSquareBracketHyphenMinusGreaterThanSign ( (otherlv_6= RULE_ID ) ) ( (lv_typedToken_7_0= ruleTypeToken ) )? otherlv_8= Semicolon ) )
            // InternalErrorModelParser.g:7559:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? otherlv_2= LeftSquareBracket ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) ) otherlv_5= RightSquareBracketHyphenMinusGreaterThanSign ( (otherlv_6= RULE_ID ) ) ( (lv_typedToken_7_0= ruleTypeToken ) )? otherlv_8= Semicolon )
            {
            // InternalErrorModelParser.g:7559:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? otherlv_2= LeftSquareBracket ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) ) otherlv_5= RightSquareBracketHyphenMinusGreaterThanSign ( (otherlv_6= RULE_ID ) ) ( (lv_typedToken_7_0= ruleTypeToken ) )? otherlv_8= Semicolon )
            // InternalErrorModelParser.g:7560:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )? otherlv_2= LeftSquareBracket ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) ) otherlv_5= RightSquareBracketHyphenMinusGreaterThanSign ( (otherlv_6= RULE_ID ) ) ( (lv_typedToken_7_0= ruleTypeToken ) )? otherlv_8= Semicolon
            {
            // InternalErrorModelParser.g:7560:3: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon )?
            int alt209=2;
            int LA209_0 = input.LA(1);

            if ( (LA209_0==RULE_ID) ) {
                alt209=1;
            }
            switch (alt209) {
                case 1 :
                    // InternalErrorModelParser.g:7561:4: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= Colon
                    {
                    // InternalErrorModelParser.g:7561:4: ( (lv_name_0_0= RULE_ID ) )
                    // InternalErrorModelParser.g:7562:5: (lv_name_0_0= RULE_ID )
                    {
                    // InternalErrorModelParser.g:7562:5: (lv_name_0_0= RULE_ID )
                    // InternalErrorModelParser.g:7563:6: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_83); 

                    						newLeafNode(lv_name_0_0, grammarAccess.getCompositeStateAccess().getNameIDTerminalRuleCall_0_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getCompositeStateRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"name",
                    							lv_name_0_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ID");
                    					

                    }


                    }

                    otherlv_1=(Token)match(input,Colon,FollowSets000.FOLLOW_139); 

                    				newLeafNode(otherlv_1, grammarAccess.getCompositeStateAccess().getColonKeyword_0_1());
                    			

                    }
                    break;

            }

            otherlv_2=(Token)match(input,LeftSquareBracket,FollowSets000.FOLLOW_140); 

            			newLeafNode(otherlv_2, grammarAccess.getCompositeStateAccess().getLeftSquareBracketKeyword_1());
            		
            // InternalErrorModelParser.g:7588:3: ( ( (lv_condition_3_0= ruleSConditionExpression ) ) | ( (lv_others_4_0= Others ) ) )
            int alt210=2;
            int LA210_0 = input.LA(1);

            if ( (LA210_0==All||LA210_0==In||LA210_0==LeftParenthesis||LA210_0==RULE_INTEGER_LIT||LA210_0==RULE_ID) ) {
                alt210=1;
            }
            else if ( (LA210_0==Others) ) {
                alt210=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 210, 0, input);

                throw nvae;
            }
            switch (alt210) {
                case 1 :
                    // InternalErrorModelParser.g:7589:4: ( (lv_condition_3_0= ruleSConditionExpression ) )
                    {
                    // InternalErrorModelParser.g:7589:4: ( (lv_condition_3_0= ruleSConditionExpression ) )
                    // InternalErrorModelParser.g:7590:5: (lv_condition_3_0= ruleSConditionExpression )
                    {
                    // InternalErrorModelParser.g:7590:5: (lv_condition_3_0= ruleSConditionExpression )
                    // InternalErrorModelParser.g:7591:6: lv_condition_3_0= ruleSConditionExpression
                    {

                    						newCompositeNode(grammarAccess.getCompositeStateAccess().getConditionSConditionExpressionParserRuleCall_2_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_79);
                    lv_condition_3_0=ruleSConditionExpression();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getCompositeStateRule());
                    						}
                    						set(
                    							current,
                    							"condition",
                    							lv_condition_3_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionExpression");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:7609:4: ( (lv_others_4_0= Others ) )
                    {
                    // InternalErrorModelParser.g:7609:4: ( (lv_others_4_0= Others ) )
                    // InternalErrorModelParser.g:7610:5: (lv_others_4_0= Others )
                    {
                    // InternalErrorModelParser.g:7610:5: (lv_others_4_0= Others )
                    // InternalErrorModelParser.g:7611:6: lv_others_4_0= Others
                    {
                    lv_others_4_0=(Token)match(input,Others,FollowSets000.FOLLOW_79); 

                    						newLeafNode(lv_others_4_0, grammarAccess.getCompositeStateAccess().getOthersOthersKeyword_2_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getCompositeStateRule());
                    						}
                    						setWithLastConsumed(current, "others", lv_others_4_0 != null, "others");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,RightSquareBracketHyphenMinusGreaterThanSign,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_5, grammarAccess.getCompositeStateAccess().getRightSquareBracketHyphenMinusGreaterThanSignKeyword_3());
            		
            // InternalErrorModelParser.g:7628:3: ( (otherlv_6= RULE_ID ) )
            // InternalErrorModelParser.g:7629:4: (otherlv_6= RULE_ID )
            {
            // InternalErrorModelParser.g:7629:4: (otherlv_6= RULE_ID )
            // InternalErrorModelParser.g:7630:5: otherlv_6= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getCompositeStateRule());
            					}
            				
            otherlv_6=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_113); 

            					newLeafNode(otherlv_6, grammarAccess.getCompositeStateAccess().getStateErrorBehaviorStateCrossReference_4_0());
            				

            }


            }

            // InternalErrorModelParser.g:7641:3: ( (lv_typedToken_7_0= ruleTypeToken ) )?
            int alt211=2;
            int LA211_0 = input.LA(1);

            if ( (LA211_0==LeftCurlyBracket) ) {
                alt211=1;
            }
            switch (alt211) {
                case 1 :
                    // InternalErrorModelParser.g:7642:4: (lv_typedToken_7_0= ruleTypeToken )
                    {
                    // InternalErrorModelParser.g:7642:4: (lv_typedToken_7_0= ruleTypeToken )
                    // InternalErrorModelParser.g:7643:5: lv_typedToken_7_0= ruleTypeToken
                    {

                    					newCompositeNode(grammarAccess.getCompositeStateAccess().getTypedTokenTypeTokenParserRuleCall_5_0());
                    				
                    pushFollow(FollowSets000.FOLLOW_10);
                    lv_typedToken_7_0=ruleTypeToken();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getCompositeStateRule());
                    					}
                    					set(
                    						current,
                    						"typedToken",
                    						lv_typedToken_7_0,
                    						"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeToken");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getCompositeStateAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSConditionExpression"
    // InternalErrorModelParser.g:7668:1: entryRuleSConditionExpression returns [EObject current=null] : iv_ruleSConditionExpression= ruleSConditionExpression EOF ;
    public final EObject entryRuleSConditionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSConditionExpression = null;


        try {
            // InternalErrorModelParser.g:7668:61: (iv_ruleSConditionExpression= ruleSConditionExpression EOF )
            // InternalErrorModelParser.g:7669:2: iv_ruleSConditionExpression= ruleSConditionExpression EOF
            {
             newCompositeNode(grammarAccess.getSConditionExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSConditionExpression=ruleSConditionExpression();

            state._fsp--;

             current =iv_ruleSConditionExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSConditionExpression"
    // InternalErrorModelParser.g:7675:1: ruleSConditionExpression returns [EObject current=null] : (this_SAndExpression_0= ruleSAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )* ) ;
    public final EObject ruleSConditionExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_SAndExpression_0 = null;

        EObject lv_operands_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7681:2: ( (this_SAndExpression_0= ruleSAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )* ) )
            // InternalErrorModelParser.g:7682:2: (this_SAndExpression_0= ruleSAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )* )
            {
            // InternalErrorModelParser.g:7682:2: (this_SAndExpression_0= ruleSAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )* )
            // InternalErrorModelParser.g:7683:3: this_SAndExpression_0= ruleSAndExpression ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )*
            {

            			newCompositeNode(grammarAccess.getSConditionExpressionAccess().getSAndExpressionParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_123);
            this_SAndExpression_0=ruleSAndExpression();

            state._fsp--;


            			current = this_SAndExpression_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalErrorModelParser.g:7691:3: ( () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) ) )*
            loop212:
            do {
                int alt212=2;
                int LA212_0 = input.LA(1);

                if ( (LA212_0==Or) ) {
                    alt212=1;
                }


                switch (alt212) {
            	case 1 :
            	    // InternalErrorModelParser.g:7692:4: () otherlv_2= Or ( (lv_operands_3_0= ruleSAndExpression ) )
            	    {
            	    // InternalErrorModelParser.g:7692:4: ()
            	    // InternalErrorModelParser.g:7693:5: 
            	    {

            	    					current = forceCreateModelElementAndAdd(
            	    						grammarAccess.getSConditionExpressionAccess().getOrExpressionOperandsAction_1_0(),
            	    						current);
            	    				

            	    }

            	    otherlv_2=(Token)match(input,Or,FollowSets000.FOLLOW_141); 

            	    				newLeafNode(otherlv_2, grammarAccess.getSConditionExpressionAccess().getOrKeyword_1_1());
            	    			
            	    // InternalErrorModelParser.g:7703:4: ( (lv_operands_3_0= ruleSAndExpression ) )
            	    // InternalErrorModelParser.g:7704:5: (lv_operands_3_0= ruleSAndExpression )
            	    {
            	    // InternalErrorModelParser.g:7704:5: (lv_operands_3_0= ruleSAndExpression )
            	    // InternalErrorModelParser.g:7705:6: lv_operands_3_0= ruleSAndExpression
            	    {

            	    						newCompositeNode(grammarAccess.getSConditionExpressionAccess().getOperandsSAndExpressionParserRuleCall_1_2_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_123);
            	    lv_operands_3_0=ruleSAndExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getSConditionExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_3_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SAndExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSAndExpression"
    // InternalErrorModelParser.g:7727:1: entryRuleSAndExpression returns [EObject current=null] : iv_ruleSAndExpression= ruleSAndExpression EOF ;
    public final EObject entryRuleSAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSAndExpression = null;


        try {
            // InternalErrorModelParser.g:7727:55: (iv_ruleSAndExpression= ruleSAndExpression EOF )
            // InternalErrorModelParser.g:7728:2: iv_ruleSAndExpression= ruleSAndExpression EOF
            {
             newCompositeNode(grammarAccess.getSAndExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSAndExpression=ruleSAndExpression();

            state._fsp--;

             current =iv_ruleSAndExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSAndExpression"
    // InternalErrorModelParser.g:7734:1: ruleSAndExpression returns [EObject current=null] : (this_SConditionTerm_0= ruleSConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )* ) ;
    public final EObject ruleSAndExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_SConditionTerm_0 = null;

        EObject lv_operands_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7740:2: ( (this_SConditionTerm_0= ruleSConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )* ) )
            // InternalErrorModelParser.g:7741:2: (this_SConditionTerm_0= ruleSConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )* )
            {
            // InternalErrorModelParser.g:7741:2: (this_SConditionTerm_0= ruleSConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )* )
            // InternalErrorModelParser.g:7742:3: this_SConditionTerm_0= ruleSConditionTerm ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )*
            {

            			newCompositeNode(grammarAccess.getSAndExpressionAccess().getSConditionTermParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_124);
            this_SConditionTerm_0=ruleSConditionTerm();

            state._fsp--;


            			current = this_SConditionTerm_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalErrorModelParser.g:7750:3: ( () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) ) )*
            loop213:
            do {
                int alt213=2;
                int LA213_0 = input.LA(1);

                if ( (LA213_0==And) ) {
                    alt213=1;
                }


                switch (alt213) {
            	case 1 :
            	    // InternalErrorModelParser.g:7751:4: () otherlv_2= And ( (lv_operands_3_0= ruleSConditionTerm ) )
            	    {
            	    // InternalErrorModelParser.g:7751:4: ()
            	    // InternalErrorModelParser.g:7752:5: 
            	    {

            	    					current = forceCreateModelElementAndAdd(
            	    						grammarAccess.getSAndExpressionAccess().getAndExpressionOperandsAction_1_0(),
            	    						current);
            	    				

            	    }

            	    otherlv_2=(Token)match(input,And,FollowSets000.FOLLOW_141); 

            	    				newLeafNode(otherlv_2, grammarAccess.getSAndExpressionAccess().getAndKeyword_1_1());
            	    			
            	    // InternalErrorModelParser.g:7762:4: ( (lv_operands_3_0= ruleSConditionTerm ) )
            	    // InternalErrorModelParser.g:7763:5: (lv_operands_3_0= ruleSConditionTerm )
            	    {
            	    // InternalErrorModelParser.g:7763:5: (lv_operands_3_0= ruleSConditionTerm )
            	    // InternalErrorModelParser.g:7764:6: lv_operands_3_0= ruleSConditionTerm
            	    {

            	    						newCompositeNode(grammarAccess.getSAndExpressionAccess().getOperandsSConditionTermParserRuleCall_1_2_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_124);
            	    lv_operands_3_0=ruleSConditionTerm();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getSAndExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_3_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionTerm");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSOrmoreExpression"
    // InternalErrorModelParser.g:7786:1: entryRuleSOrmoreExpression returns [EObject current=null] : iv_ruleSOrmoreExpression= ruleSOrmoreExpression EOF ;
    public final EObject entryRuleSOrmoreExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSOrmoreExpression = null;


        try {
            // InternalErrorModelParser.g:7786:58: (iv_ruleSOrmoreExpression= ruleSOrmoreExpression EOF )
            // InternalErrorModelParser.g:7787:2: iv_ruleSOrmoreExpression= ruleSOrmoreExpression EOF
            {
             newCompositeNode(grammarAccess.getSOrmoreExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSOrmoreExpression=ruleSOrmoreExpression();

            state._fsp--;

             current =iv_ruleSOrmoreExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSOrmoreExpression"
    // InternalErrorModelParser.g:7793:1: ruleSOrmoreExpression returns [EObject current=null] : ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis ) ;
    public final EObject ruleSOrmoreExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_count_0_0 = null;

        EObject lv_operands_3_0 = null;

        EObject lv_operands_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7799:2: ( ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis ) )
            // InternalErrorModelParser.g:7800:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis )
            {
            // InternalErrorModelParser.g:7800:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis )
            // InternalErrorModelParser.g:7801:3: ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Ormore otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis
            {
            // InternalErrorModelParser.g:7801:3: ( (lv_count_0_0= ruleINTVALUE ) )
            // InternalErrorModelParser.g:7802:4: (lv_count_0_0= ruleINTVALUE )
            {
            // InternalErrorModelParser.g:7802:4: (lv_count_0_0= ruleINTVALUE )
            // InternalErrorModelParser.g:7803:5: lv_count_0_0= ruleINTVALUE
            {

            					newCompositeNode(grammarAccess.getSOrmoreExpressionAccess().getCountINTVALUEParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_128);
            lv_count_0_0=ruleINTVALUE();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSOrmoreExpressionRule());
            					}
            					set(
            						current,
            						"count",
            						lv_count_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,Ormore,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_1, grammarAccess.getSOrmoreExpressionAccess().getOrmoreKeyword_1());
            		
            otherlv_2=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_141); 

            			newLeafNode(otherlv_2, grammarAccess.getSOrmoreExpressionAccess().getLeftParenthesisKeyword_2());
            		
            // InternalErrorModelParser.g:7828:3: ( (lv_operands_3_0= ruleSConditionExpression ) )
            // InternalErrorModelParser.g:7829:4: (lv_operands_3_0= ruleSConditionExpression )
            {
            // InternalErrorModelParser.g:7829:4: (lv_operands_3_0= ruleSConditionExpression )
            // InternalErrorModelParser.g:7830:5: lv_operands_3_0= ruleSConditionExpression
            {

            					newCompositeNode(grammarAccess.getSOrmoreExpressionAccess().getOperandsSConditionExpressionParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_3_0=ruleSConditionExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSOrmoreExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_3_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:7847:3: (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )*
            loop214:
            do {
                int alt214=2;
                int LA214_0 = input.LA(1);

                if ( (LA214_0==Comma) ) {
                    alt214=1;
                }


                switch (alt214) {
            	case 1 :
            	    // InternalErrorModelParser.g:7848:4: otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_141); 

            	    				newLeafNode(otherlv_4, grammarAccess.getSOrmoreExpressionAccess().getCommaKeyword_4_0());
            	    			
            	    // InternalErrorModelParser.g:7852:4: ( (lv_operands_5_0= ruleSConditionExpression ) )
            	    // InternalErrorModelParser.g:7853:5: (lv_operands_5_0= ruleSConditionExpression )
            	    {
            	    // InternalErrorModelParser.g:7853:5: (lv_operands_5_0= ruleSConditionExpression )
            	    // InternalErrorModelParser.g:7854:6: lv_operands_5_0= ruleSConditionExpression
            	    {

            	    						newCompositeNode(grammarAccess.getSOrmoreExpressionAccess().getOperandsSConditionExpressionParserRuleCall_4_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_5_0=ruleSConditionExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getSOrmoreExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_5_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getSOrmoreExpressionAccess().getRightParenthesisKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSOrlessExpression"
    // InternalErrorModelParser.g:7880:1: entryRuleSOrlessExpression returns [EObject current=null] : iv_ruleSOrlessExpression= ruleSOrlessExpression EOF ;
    public final EObject entryRuleSOrlessExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSOrlessExpression = null;


        try {
            // InternalErrorModelParser.g:7880:58: (iv_ruleSOrlessExpression= ruleSOrlessExpression EOF )
            // InternalErrorModelParser.g:7881:2: iv_ruleSOrlessExpression= ruleSOrlessExpression EOF
            {
             newCompositeNode(grammarAccess.getSOrlessExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSOrlessExpression=ruleSOrlessExpression();

            state._fsp--;

             current =iv_ruleSOrlessExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSOrlessExpression"
    // InternalErrorModelParser.g:7887:1: ruleSOrlessExpression returns [EObject current=null] : ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis ) ;
    public final EObject ruleSOrlessExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_count_0_0 = null;

        EObject lv_operands_3_0 = null;

        EObject lv_operands_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7893:2: ( ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis ) )
            // InternalErrorModelParser.g:7894:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis )
            {
            // InternalErrorModelParser.g:7894:2: ( ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis )
            // InternalErrorModelParser.g:7895:3: ( (lv_count_0_0= ruleINTVALUE ) ) otherlv_1= Orless otherlv_2= LeftParenthesis ( (lv_operands_3_0= ruleSConditionExpression ) ) (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )* otherlv_6= RightParenthesis
            {
            // InternalErrorModelParser.g:7895:3: ( (lv_count_0_0= ruleINTVALUE ) )
            // InternalErrorModelParser.g:7896:4: (lv_count_0_0= ruleINTVALUE )
            {
            // InternalErrorModelParser.g:7896:4: (lv_count_0_0= ruleINTVALUE )
            // InternalErrorModelParser.g:7897:5: lv_count_0_0= ruleINTVALUE
            {

            					newCompositeNode(grammarAccess.getSOrlessExpressionAccess().getCountINTVALUEParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_129);
            lv_count_0_0=ruleINTVALUE();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSOrlessExpressionRule());
            					}
            					set(
            						current,
            						"count",
            						lv_count_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,Orless,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_1, grammarAccess.getSOrlessExpressionAccess().getOrlessKeyword_1());
            		
            otherlv_2=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_141); 

            			newLeafNode(otherlv_2, grammarAccess.getSOrlessExpressionAccess().getLeftParenthesisKeyword_2());
            		
            // InternalErrorModelParser.g:7922:3: ( (lv_operands_3_0= ruleSConditionExpression ) )
            // InternalErrorModelParser.g:7923:4: (lv_operands_3_0= ruleSConditionExpression )
            {
            // InternalErrorModelParser.g:7923:4: (lv_operands_3_0= ruleSConditionExpression )
            // InternalErrorModelParser.g:7924:5: lv_operands_3_0= ruleSConditionExpression
            {

            					newCompositeNode(grammarAccess.getSOrlessExpressionAccess().getOperandsSConditionExpressionParserRuleCall_3_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_3_0=ruleSConditionExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSOrlessExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_3_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:7941:3: (otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) ) )*
            loop215:
            do {
                int alt215=2;
                int LA215_0 = input.LA(1);

                if ( (LA215_0==Comma) ) {
                    alt215=1;
                }


                switch (alt215) {
            	case 1 :
            	    // InternalErrorModelParser.g:7942:4: otherlv_4= Comma ( (lv_operands_5_0= ruleSConditionExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_141); 

            	    				newLeafNode(otherlv_4, grammarAccess.getSOrlessExpressionAccess().getCommaKeyword_4_0());
            	    			
            	    // InternalErrorModelParser.g:7946:4: ( (lv_operands_5_0= ruleSConditionExpression ) )
            	    // InternalErrorModelParser.g:7947:5: (lv_operands_5_0= ruleSConditionExpression )
            	    {
            	    // InternalErrorModelParser.g:7947:5: (lv_operands_5_0= ruleSConditionExpression )
            	    // InternalErrorModelParser.g:7948:6: lv_operands_5_0= ruleSConditionExpression
            	    {

            	    						newCompositeNode(grammarAccess.getSOrlessExpressionAccess().getOperandsSConditionExpressionParserRuleCall_4_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_5_0=ruleSConditionExpression();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getSOrlessExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_5_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionExpression");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getSOrlessExpressionAccess().getRightParenthesisKeyword_5());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSAllExpression"
    // InternalErrorModelParser.g:7974:1: entryRuleSAllExpression returns [EObject current=null] : iv_ruleSAllExpression= ruleSAllExpression EOF ;
    public final EObject entryRuleSAllExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSAllExpression = null;


        try {
            // InternalErrorModelParser.g:7974:55: (iv_ruleSAllExpression= ruleSAllExpression EOF )
            // InternalErrorModelParser.g:7975:2: iv_ruleSAllExpression= ruleSAllExpression EOF
            {
             newCompositeNode(grammarAccess.getSAllExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSAllExpression=ruleSAllExpression();

            state._fsp--;

             current =iv_ruleSAllExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSAllExpression"
    // InternalErrorModelParser.g:7981:1: ruleSAllExpression returns [EObject current=null] : ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleSConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )* otherlv_8= RightParenthesis ) ;
    public final EObject ruleSAllExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_count_3_0 = null;

        EObject lv_operands_5_0 = null;

        EObject lv_operands_7_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:7987:2: ( ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleSConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )* otherlv_8= RightParenthesis ) )
            // InternalErrorModelParser.g:7988:2: ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleSConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )* otherlv_8= RightParenthesis )
            {
            // InternalErrorModelParser.g:7988:2: ( () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleSConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )* otherlv_8= RightParenthesis )
            // InternalErrorModelParser.g:7989:3: () otherlv_1= All (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )? otherlv_4= LeftParenthesis ( (lv_operands_5_0= ruleSConditionElement ) ) (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )* otherlv_8= RightParenthesis
            {
            // InternalErrorModelParser.g:7989:3: ()
            // InternalErrorModelParser.g:7990:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getSAllExpressionAccess().getAllExpressionAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,All,FollowSets000.FOLLOW_125); 

            			newLeafNode(otherlv_1, grammarAccess.getSAllExpressionAccess().getAllKeyword_1());
            		
            // InternalErrorModelParser.g:8000:3: (otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) ) )?
            int alt216=2;
            int LA216_0 = input.LA(1);

            if ( (LA216_0==HyphenMinus) ) {
                alt216=1;
            }
            switch (alt216) {
                case 1 :
                    // InternalErrorModelParser.g:8001:4: otherlv_2= HyphenMinus ( (lv_count_3_0= ruleINTVALUE ) )
                    {
                    otherlv_2=(Token)match(input,HyphenMinus,FollowSets000.FOLLOW_126); 

                    				newLeafNode(otherlv_2, grammarAccess.getSAllExpressionAccess().getHyphenMinusKeyword_2_0());
                    			
                    // InternalErrorModelParser.g:8005:4: ( (lv_count_3_0= ruleINTVALUE ) )
                    // InternalErrorModelParser.g:8006:5: (lv_count_3_0= ruleINTVALUE )
                    {
                    // InternalErrorModelParser.g:8006:5: (lv_count_3_0= ruleINTVALUE )
                    // InternalErrorModelParser.g:8007:6: lv_count_3_0= ruleINTVALUE
                    {

                    						newCompositeNode(grammarAccess.getSAllExpressionAccess().getCountINTVALUEParserRuleCall_2_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_127);
                    lv_count_3_0=ruleINTVALUE();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getSAllExpressionRule());
                    						}
                    						set(
                    							current,
                    							"count",
                    							lv_count_3_0,
                    							"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_142); 

            			newLeafNode(otherlv_4, grammarAccess.getSAllExpressionAccess().getLeftParenthesisKeyword_3());
            		
            // InternalErrorModelParser.g:8029:3: ( (lv_operands_5_0= ruleSConditionElement ) )
            // InternalErrorModelParser.g:8030:4: (lv_operands_5_0= ruleSConditionElement )
            {
            // InternalErrorModelParser.g:8030:4: (lv_operands_5_0= ruleSConditionElement )
            // InternalErrorModelParser.g:8031:5: lv_operands_5_0= ruleSConditionElement
            {

            					newCompositeNode(grammarAccess.getSAllExpressionAccess().getOperandsSConditionElementParserRuleCall_4_0());
            				
            pushFollow(FollowSets000.FOLLOW_119);
            lv_operands_5_0=ruleSConditionElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSAllExpressionRule());
            					}
            					add(
            						current,
            						"operands",
            						lv_operands_5_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:8048:3: (otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) ) )*
            loop217:
            do {
                int alt217=2;
                int LA217_0 = input.LA(1);

                if ( (LA217_0==Comma) ) {
                    alt217=1;
                }


                switch (alt217) {
            	case 1 :
            	    // InternalErrorModelParser.g:8049:4: otherlv_6= Comma ( (lv_operands_7_0= ruleSConditionElement ) )
            	    {
            	    otherlv_6=(Token)match(input,Comma,FollowSets000.FOLLOW_142); 

            	    				newLeafNode(otherlv_6, grammarAccess.getSAllExpressionAccess().getCommaKeyword_5_0());
            	    			
            	    // InternalErrorModelParser.g:8053:4: ( (lv_operands_7_0= ruleSConditionElement ) )
            	    // InternalErrorModelParser.g:8054:5: (lv_operands_7_0= ruleSConditionElement )
            	    {
            	    // InternalErrorModelParser.g:8054:5: (lv_operands_7_0= ruleSConditionElement )
            	    // InternalErrorModelParser.g:8055:6: lv_operands_7_0= ruleSConditionElement
            	    {

            	    						newCompositeNode(grammarAccess.getSAllExpressionAccess().getOperandsSConditionElementParserRuleCall_5_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_119);
            	    lv_operands_7_0=ruleSConditionElement();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getSAllExpressionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"operands",
            	    							lv_operands_7_0,
            	    							"org.osate.xtext.aadl2.errormodel.ErrorModel.SConditionElement");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

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

            otherlv_8=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getSAllExpressionAccess().getRightParenthesisKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSConditionTerm"
    // InternalErrorModelParser.g:8081:1: entryRuleSConditionTerm returns [EObject current=null] : iv_ruleSConditionTerm= ruleSConditionTerm EOF ;
    public final EObject entryRuleSConditionTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSConditionTerm = null;


        try {
            // InternalErrorModelParser.g:8081:55: (iv_ruleSConditionTerm= ruleSConditionTerm EOF )
            // InternalErrorModelParser.g:8082:2: iv_ruleSConditionTerm= ruleSConditionTerm EOF
            {
             newCompositeNode(grammarAccess.getSConditionTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSConditionTerm=ruleSConditionTerm();

            state._fsp--;

             current =iv_ruleSConditionTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSConditionTerm"
    // InternalErrorModelParser.g:8088:1: ruleSConditionTerm returns [EObject current=null] : (this_SConditionElement_0= ruleSConditionElement | this_SOrmoreExpression_1= ruleSOrmoreExpression | this_SOrlessExpression_2= ruleSOrlessExpression | this_SAllExpression_3= ruleSAllExpression | (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis ) ) ;
    public final EObject ruleSConditionTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject this_SConditionElement_0 = null;

        EObject this_SOrmoreExpression_1 = null;

        EObject this_SOrlessExpression_2 = null;

        EObject this_SAllExpression_3 = null;

        EObject this_SConditionExpression_5 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8094:2: ( (this_SConditionElement_0= ruleSConditionElement | this_SOrmoreExpression_1= ruleSOrmoreExpression | this_SOrlessExpression_2= ruleSOrlessExpression | this_SAllExpression_3= ruleSAllExpression | (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis ) ) )
            // InternalErrorModelParser.g:8095:2: (this_SConditionElement_0= ruleSConditionElement | this_SOrmoreExpression_1= ruleSOrmoreExpression | this_SOrlessExpression_2= ruleSOrlessExpression | this_SAllExpression_3= ruleSAllExpression | (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis ) )
            {
            // InternalErrorModelParser.g:8095:2: (this_SConditionElement_0= ruleSConditionElement | this_SOrmoreExpression_1= ruleSOrmoreExpression | this_SOrlessExpression_2= ruleSOrlessExpression | this_SAllExpression_3= ruleSAllExpression | (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis ) )
            int alt218=5;
            switch ( input.LA(1) ) {
            case In:
            case RULE_ID:
                {
                alt218=1;
                }
                break;
            case RULE_INTEGER_LIT:
                {
                int LA218_2 = input.LA(2);

                if ( (LA218_2==Ormore) ) {
                    alt218=2;
                }
                else if ( (LA218_2==Orless) ) {
                    alt218=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 218, 2, input);

                    throw nvae;
                }
                }
                break;
            case All:
                {
                alt218=4;
                }
                break;
            case LeftParenthesis:
                {
                alt218=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 218, 0, input);

                throw nvae;
            }

            switch (alt218) {
                case 1 :
                    // InternalErrorModelParser.g:8096:3: this_SConditionElement_0= ruleSConditionElement
                    {

                    			newCompositeNode(grammarAccess.getSConditionTermAccess().getSConditionElementParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_SConditionElement_0=ruleSConditionElement();

                    state._fsp--;


                    			current = this_SConditionElement_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:8105:3: this_SOrmoreExpression_1= ruleSOrmoreExpression
                    {

                    			newCompositeNode(grammarAccess.getSConditionTermAccess().getSOrmoreExpressionParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_SOrmoreExpression_1=ruleSOrmoreExpression();

                    state._fsp--;


                    			current = this_SOrmoreExpression_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:8114:3: this_SOrlessExpression_2= ruleSOrlessExpression
                    {

                    			newCompositeNode(grammarAccess.getSConditionTermAccess().getSOrlessExpressionParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_SOrlessExpression_2=ruleSOrlessExpression();

                    state._fsp--;


                    			current = this_SOrlessExpression_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 4 :
                    // InternalErrorModelParser.g:8123:3: this_SAllExpression_3= ruleSAllExpression
                    {

                    			newCompositeNode(grammarAccess.getSConditionTermAccess().getSAllExpressionParserRuleCall_3());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_SAllExpression_3=ruleSAllExpression();

                    state._fsp--;


                    			current = this_SAllExpression_3;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 5 :
                    // InternalErrorModelParser.g:8132:3: (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis )
                    {
                    // InternalErrorModelParser.g:8132:3: (otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis )
                    // InternalErrorModelParser.g:8133:4: otherlv_4= LeftParenthesis this_SConditionExpression_5= ruleSConditionExpression otherlv_6= RightParenthesis
                    {
                    otherlv_4=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_141); 

                    				newLeafNode(otherlv_4, grammarAccess.getSConditionTermAccess().getLeftParenthesisKeyword_4_0());
                    			

                    				newCompositeNode(grammarAccess.getSConditionTermAccess().getSConditionExpressionParserRuleCall_4_1());
                    			
                    pushFollow(FollowSets000.FOLLOW_130);
                    this_SConditionExpression_5=ruleSConditionExpression();

                    state._fsp--;


                    				current = this_SConditionExpression_5;
                    				afterParserOrEnumRuleCall();
                    			
                    otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_6, grammarAccess.getSConditionTermAccess().getRightParenthesisKeyword_4_2());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQualifiedErrorPropagation"
    // InternalErrorModelParser.g:8154:1: entryRuleQualifiedErrorPropagation returns [EObject current=null] : iv_ruleQualifiedErrorPropagation= ruleQualifiedErrorPropagation EOF ;
    public final EObject entryRuleQualifiedErrorPropagation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedErrorPropagation = null;


        try {
            // InternalErrorModelParser.g:8154:66: (iv_ruleQualifiedErrorPropagation= ruleQualifiedErrorPropagation EOF )
            // InternalErrorModelParser.g:8155:2: iv_ruleQualifiedErrorPropagation= ruleQualifiedErrorPropagation EOF
            {
             newCompositeNode(grammarAccess.getQualifiedErrorPropagationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQualifiedErrorPropagation=ruleQualifiedErrorPropagation();

            state._fsp--;

             current =iv_ruleQualifiedErrorPropagation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQualifiedErrorPropagation"
    // InternalErrorModelParser.g:8161:1: ruleQualifiedErrorPropagation returns [EObject current=null] : ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) ) ;
    public final EObject ruleQualifiedErrorPropagation() throws RecognitionException {
        EObject current = null;

        EObject lv_emv2Target_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8167:2: ( ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) ) )
            // InternalErrorModelParser.g:8168:2: ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) )
            {
            // InternalErrorModelParser.g:8168:2: ( () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) ) )
            // InternalErrorModelParser.g:8169:3: () ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) )
            {
            // InternalErrorModelParser.g:8169:3: ()
            // InternalErrorModelParser.g:8170:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getQualifiedErrorPropagationAccess().getQualifiedErrorPropagationAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:8176:3: ( (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath ) )
            // InternalErrorModelParser.g:8177:4: (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath )
            {
            // InternalErrorModelParser.g:8177:4: (lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath )
            // InternalErrorModelParser.g:8178:5: lv_emv2Target_1_0= ruleEMV2ErrorPropagationPath
            {

            					newCompositeNode(grammarAccess.getQualifiedErrorPropagationAccess().getEmv2TargetEMV2ErrorPropagationPathParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_emv2Target_1_0=ruleEMV2ErrorPropagationPath();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getQualifiedErrorPropagationRule());
            					}
            					set(
            						current,
            						"emv2Target",
            						lv_emv2Target_1_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.EMV2ErrorPropagationPath");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSConditionElement"
    // InternalErrorModelParser.g:8199:1: entryRuleSConditionElement returns [EObject current=null] : iv_ruleSConditionElement= ruleSConditionElement EOF ;
    public final EObject entryRuleSConditionElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSConditionElement = null;


        try {
            // InternalErrorModelParser.g:8199:58: (iv_ruleSConditionElement= ruleSConditionElement EOF )
            // InternalErrorModelParser.g:8200:2: iv_ruleSConditionElement= ruleSConditionElement EOF
            {
             newCompositeNode(grammarAccess.getSConditionElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSConditionElement=ruleSConditionElement();

            state._fsp--;

             current =iv_ruleSConditionElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSConditionElement"
    // InternalErrorModelParser.g:8206:1: ruleSConditionElement returns [EObject current=null] : ( () ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) ) ) ;
    public final EObject ruleSConditionElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        EObject lv_qualifiedState_1_0 = null;

        EObject lv_constraint_2_0 = null;

        EObject lv_qualifiedErrorPropagationReference_4_0 = null;

        EObject lv_constraint_5_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8212:2: ( ( () ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) ) ) )
            // InternalErrorModelParser.g:8213:2: ( () ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) ) )
            {
            // InternalErrorModelParser.g:8213:2: ( () ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) ) )
            // InternalErrorModelParser.g:8214:3: () ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) )
            {
            // InternalErrorModelParser.g:8214:3: ()
            // InternalErrorModelParser.g:8215:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getSConditionElementAccess().getSConditionElementAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:8221:3: ( ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? ) | (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) ) )
            int alt221=2;
            int LA221_0 = input.LA(1);

            if ( (LA221_0==RULE_ID) ) {
                alt221=1;
            }
            else if ( (LA221_0==In) ) {
                alt221=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 221, 0, input);

                throw nvae;
            }
            switch (alt221) {
                case 1 :
                    // InternalErrorModelParser.g:8222:4: ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? )
                    {
                    // InternalErrorModelParser.g:8222:4: ( ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )? )
                    // InternalErrorModelParser.g:8223:5: ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) ) ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )?
                    {
                    // InternalErrorModelParser.g:8223:5: ( (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState ) )
                    // InternalErrorModelParser.g:8224:6: (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState )
                    {
                    // InternalErrorModelParser.g:8224:6: (lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState )
                    // InternalErrorModelParser.g:8225:7: lv_qualifiedState_1_0= ruleQualifiedErrorBehaviorState
                    {

                    							newCompositeNode(grammarAccess.getSConditionElementAccess().getQualifiedStateQualifiedErrorBehaviorStateParserRuleCall_1_0_0_0());
                    						
                    pushFollow(FollowSets000.FOLLOW_143);
                    lv_qualifiedState_1_0=ruleQualifiedErrorBehaviorState();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getSConditionElementRule());
                    							}
                    							set(
                    								current,
                    								"qualifiedState",
                    								lv_qualifiedState_1_0,
                    								"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedErrorBehaviorState");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalErrorModelParser.g:8242:5: ( (lv_constraint_2_0= ruleTypeTokenConstraint ) )?
                    int alt219=2;
                    int LA219_0 = input.LA(1);

                    if ( (LA219_0==LeftCurlyBracket) ) {
                        alt219=1;
                    }
                    switch (alt219) {
                        case 1 :
                            // InternalErrorModelParser.g:8243:6: (lv_constraint_2_0= ruleTypeTokenConstraint )
                            {
                            // InternalErrorModelParser.g:8243:6: (lv_constraint_2_0= ruleTypeTokenConstraint )
                            // InternalErrorModelParser.g:8244:7: lv_constraint_2_0= ruleTypeTokenConstraint
                            {

                            							newCompositeNode(grammarAccess.getSConditionElementAccess().getConstraintTypeTokenConstraintParserRuleCall_1_0_1_0());
                            						
                            pushFollow(FollowSets000.FOLLOW_2);
                            lv_constraint_2_0=ruleTypeTokenConstraint();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getSConditionElementRule());
                            							}
                            							set(
                            								current,
                            								"constraint",
                            								lv_constraint_2_0,
                            								"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraint");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:8263:4: (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) )
                    {
                    // InternalErrorModelParser.g:8263:4: (otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? ) )
                    // InternalErrorModelParser.g:8264:5: otherlv_3= In ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? )
                    {
                    otherlv_3=(Token)match(input,In,FollowSets000.FOLLOW_86); 

                    					newLeafNode(otherlv_3, grammarAccess.getSConditionElementAccess().getInKeyword_1_1_0());
                    				
                    // InternalErrorModelParser.g:8268:5: ( ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )? )
                    // InternalErrorModelParser.g:8269:6: ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) ) ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )?
                    {
                    // InternalErrorModelParser.g:8269:6: ( (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation ) )
                    // InternalErrorModelParser.g:8270:7: (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation )
                    {
                    // InternalErrorModelParser.g:8270:7: (lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation )
                    // InternalErrorModelParser.g:8271:8: lv_qualifiedErrorPropagationReference_4_0= ruleQualifiedErrorPropagation
                    {

                    								newCompositeNode(grammarAccess.getSConditionElementAccess().getQualifiedErrorPropagationReferenceQualifiedErrorPropagationParserRuleCall_1_1_1_0_0());
                    							
                    pushFollow(FollowSets000.FOLLOW_131);
                    lv_qualifiedErrorPropagationReference_4_0=ruleQualifiedErrorPropagation();

                    state._fsp--;


                    								if (current==null) {
                    									current = createModelElementForParent(grammarAccess.getSConditionElementRule());
                    								}
                    								set(
                    									current,
                    									"qualifiedErrorPropagationReference",
                    									lv_qualifiedErrorPropagationReference_4_0,
                    									"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedErrorPropagation");
                    								afterParserOrEnumRuleCall();
                    							

                    }


                    }

                    // InternalErrorModelParser.g:8288:6: ( (lv_constraint_5_0= ruleTypeTokenConstraintNoError ) )?
                    int alt220=2;
                    int LA220_0 = input.LA(1);

                    if ( (LA220_0==LeftCurlyBracket) ) {
                        alt220=1;
                    }
                    switch (alt220) {
                        case 1 :
                            // InternalErrorModelParser.g:8289:7: (lv_constraint_5_0= ruleTypeTokenConstraintNoError )
                            {
                            // InternalErrorModelParser.g:8289:7: (lv_constraint_5_0= ruleTypeTokenConstraintNoError )
                            // InternalErrorModelParser.g:8290:8: lv_constraint_5_0= ruleTypeTokenConstraintNoError
                            {

                            								newCompositeNode(grammarAccess.getSConditionElementAccess().getConstraintTypeTokenConstraintNoErrorParserRuleCall_1_1_1_1_0());
                            							
                            pushFollow(FollowSets000.FOLLOW_2);
                            lv_constraint_5_0=ruleTypeTokenConstraintNoError();

                            state._fsp--;


                            								if (current==null) {
                            									current = createModelElementForParent(grammarAccess.getSConditionElementRule());
                            								}
                            								set(
                            									current,
                            									"constraint",
                            									lv_constraint_5_0,
                            									"org.osate.xtext.aadl2.errormodel.ErrorModel.TypeTokenConstraintNoError");
                            								afterParserOrEnumRuleCall();
                            							

                            }


                            }
                            break;

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQualifiedErrorBehaviorState"
    // InternalErrorModelParser.g:8314:1: entryRuleQualifiedErrorBehaviorState returns [EObject current=null] : iv_ruleQualifiedErrorBehaviorState= ruleQualifiedErrorBehaviorState EOF ;
    public final EObject entryRuleQualifiedErrorBehaviorState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedErrorBehaviorState = null;


        try {
            // InternalErrorModelParser.g:8314:68: (iv_ruleQualifiedErrorBehaviorState= ruleQualifiedErrorBehaviorState EOF )
            // InternalErrorModelParser.g:8315:2: iv_ruleQualifiedErrorBehaviorState= ruleQualifiedErrorBehaviorState EOF
            {
             newCompositeNode(grammarAccess.getQualifiedErrorBehaviorStateRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQualifiedErrorBehaviorState=ruleQualifiedErrorBehaviorState();

            state._fsp--;

             current =iv_ruleQualifiedErrorBehaviorState; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQualifiedErrorBehaviorState"
    // InternalErrorModelParser.g:8321:1: ruleQualifiedErrorBehaviorState returns [EObject current=null] : ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) ) ) ;
    public final EObject ruleQualifiedErrorBehaviorState() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_subcomponent_0_0 = null;

        EObject lv_next_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8327:2: ( ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) ) ) )
            // InternalErrorModelParser.g:8328:2: ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) ) )
            {
            // InternalErrorModelParser.g:8328:2: ( ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) ) )
            // InternalErrorModelParser.g:8329:3: ( (lv_subcomponent_0_0= ruleSubcomponentElement ) ) otherlv_1= FullStop ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) )
            {
            // InternalErrorModelParser.g:8329:3: ( (lv_subcomponent_0_0= ruleSubcomponentElement ) )
            // InternalErrorModelParser.g:8330:4: (lv_subcomponent_0_0= ruleSubcomponentElement )
            {
            // InternalErrorModelParser.g:8330:4: (lv_subcomponent_0_0= ruleSubcomponentElement )
            // InternalErrorModelParser.g:8331:5: lv_subcomponent_0_0= ruleSubcomponentElement
            {

            					newCompositeNode(grammarAccess.getQualifiedErrorBehaviorStateAccess().getSubcomponentSubcomponentElementParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_99);
            lv_subcomponent_0_0=ruleSubcomponentElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getQualifiedErrorBehaviorStateRule());
            					}
            					set(
            						current,
            						"subcomponent",
            						lv_subcomponent_0_0,
            						"org.osate.xtext.aadl2.errormodel.ErrorModel.SubcomponentElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getQualifiedErrorBehaviorStateAccess().getFullStopKeyword_1());
            		
            // InternalErrorModelParser.g:8352:3: ( ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) ) | ( (otherlv_3= RULE_ID ) ) )
            int alt222=2;
            int LA222_0 = input.LA(1);

            if ( (LA222_0==RULE_ID) ) {
                int LA222_1 = input.LA(2);

                if ( (LA222_1==FullStop) ) {
                    alt222=1;
                }
                else if ( (LA222_1==EOF||LA222_1==RightSquareBracketHyphenMinusGreaterThanSign||LA222_1==And||LA222_1==Or||LA222_1==RightParenthesis||LA222_1==Comma||LA222_1==LeftCurlyBracket) ) {
                    alt222=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 222, 1, input);

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

                throw nvae;
            }
            switch (alt222) {
                case 1 :
                    // InternalErrorModelParser.g:8353:4: ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) )
                    {
                    // InternalErrorModelParser.g:8353:4: ( (lv_next_2_0= ruleQualifiedErrorBehaviorState ) )
                    // InternalErrorModelParser.g:8354:5: (lv_next_2_0= ruleQualifiedErrorBehaviorState )
                    {
                    // InternalErrorModelParser.g:8354:5: (lv_next_2_0= ruleQualifiedErrorBehaviorState )
                    // InternalErrorModelParser.g:8355:6: lv_next_2_0= ruleQualifiedErrorBehaviorState
                    {

                    						newCompositeNode(grammarAccess.getQualifiedErrorBehaviorStateAccess().getNextQualifiedErrorBehaviorStateParserRuleCall_2_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_next_2_0=ruleQualifiedErrorBehaviorState();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getQualifiedErrorBehaviorStateRule());
                    						}
                    						set(
                    							current,
                    							"next",
                    							lv_next_2_0,
                    							"org.osate.xtext.aadl2.errormodel.ErrorModel.QualifiedErrorBehaviorState");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:8373:4: ( (otherlv_3= RULE_ID ) )
                    {
                    // InternalErrorModelParser.g:8373:4: ( (otherlv_3= RULE_ID ) )
                    // InternalErrorModelParser.g:8374:5: (otherlv_3= RULE_ID )
                    {
                    // InternalErrorModelParser.g:8374:5: (otherlv_3= RULE_ID )
                    // InternalErrorModelParser.g:8375:6: otherlv_3= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getQualifiedErrorBehaviorStateRule());
                    						}
                    					
                    otherlv_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    						newLeafNode(otherlv_3, grammarAccess.getQualifiedErrorBehaviorStateAccess().getStateErrorBehaviorStateCrossReference_2_1_0());
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSubcomponentElement"
    // InternalErrorModelParser.g:8391:1: entryRuleSubcomponentElement returns [EObject current=null] : iv_ruleSubcomponentElement= ruleSubcomponentElement EOF ;
    public final EObject entryRuleSubcomponentElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubcomponentElement = null;


        try {
            // InternalErrorModelParser.g:8391:60: (iv_ruleSubcomponentElement= ruleSubcomponentElement EOF )
            // InternalErrorModelParser.g:8392:2: iv_ruleSubcomponentElement= ruleSubcomponentElement EOF
            {
             newCompositeNode(grammarAccess.getSubcomponentElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSubcomponentElement=ruleSubcomponentElement();

            state._fsp--;

             current =iv_ruleSubcomponentElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSubcomponentElement"
    // InternalErrorModelParser.g:8398:1: ruleSubcomponentElement returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleSubcomponentElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:8404:2: ( ( (otherlv_0= RULE_ID ) ) )
            // InternalErrorModelParser.g:8405:2: ( (otherlv_0= RULE_ID ) )
            {
            // InternalErrorModelParser.g:8405:2: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:8406:3: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:8406:3: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:8407:4: otherlv_0= RULE_ID
            {

            				if (current==null) {
            					current = createModelElement(grammarAccess.getSubcomponentElementRule());
            				}
            			
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

            				newLeafNode(otherlv_0, grammarAccess.getSubcomponentElementAccess().getSubcomponentSubcomponentCrossReference_0());
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQUALIFIEDNAME"
    // InternalErrorModelParser.g:8421:1: entryRuleQUALIFIEDNAME returns [String current=null] : iv_ruleQUALIFIEDNAME= ruleQUALIFIEDNAME EOF ;
    public final String entryRuleQUALIFIEDNAME() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQUALIFIEDNAME = null;


        try {
            // InternalErrorModelParser.g:8421:53: (iv_ruleQUALIFIEDNAME= ruleQUALIFIEDNAME EOF )
            // InternalErrorModelParser.g:8422:2: iv_ruleQUALIFIEDNAME= ruleQUALIFIEDNAME EOF
            {
             newCompositeNode(grammarAccess.getQUALIFIEDNAMERule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQUALIFIEDNAME=ruleQUALIFIEDNAME();

            state._fsp--;

             current =iv_ruleQUALIFIEDNAME.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQUALIFIEDNAME"
    // InternalErrorModelParser.g:8428:1: ruleQUALIFIEDNAME returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= FullStop this_ID_2= RULE_ID )+ ) ;
    public final AntlrDatatypeRuleToken ruleQUALIFIEDNAME() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:8434:2: ( (this_ID_0= RULE_ID (kw= FullStop this_ID_2= RULE_ID )+ ) )
            // InternalErrorModelParser.g:8435:2: (this_ID_0= RULE_ID (kw= FullStop this_ID_2= RULE_ID )+ )
            {
            // InternalErrorModelParser.g:8435:2: (this_ID_0= RULE_ID (kw= FullStop this_ID_2= RULE_ID )+ )
            // InternalErrorModelParser.g:8436:3: this_ID_0= RULE_ID (kw= FullStop this_ID_2= RULE_ID )+
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_99); 

            			current.merge(this_ID_0);
            		

            			newLeafNode(this_ID_0, grammarAccess.getQUALIFIEDNAMEAccess().getIDTerminalRuleCall_0());
            		
            // InternalErrorModelParser.g:8443:3: (kw= FullStop this_ID_2= RULE_ID )+
            int cnt223=0;
            loop223:
            do {
                int alt223=2;
                int LA223_0 = input.LA(1);

                if ( (LA223_0==FullStop) ) {
                    alt223=1;
                }


                switch (alt223) {
            	case 1 :
            	    // InternalErrorModelParser.g:8444:4: kw= FullStop this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

            	    				current.merge(kw);
            	    				newLeafNode(kw, grammarAccess.getQUALIFIEDNAMEAccess().getFullStopKeyword_1_0());
            	    			
            	    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            	    				current.merge(this_ID_2);
            	    			

            	    				newLeafNode(this_ID_2, grammarAccess.getQUALIFIEDNAMEAccess().getIDTerminalRuleCall_1_1());
            	    			

            	    }
            	    break;

            	default :
            	    if ( cnt223 >= 1 ) break loop223;
                        EarlyExitException eee =
                            new EarlyExitException(223, input);
                        throw eee;
                }
                cnt223++;
            } while (true);


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQEMREF"
    // InternalErrorModelParser.g:8461:1: entryRuleQEMREF returns [String current=null] : iv_ruleQEMREF= ruleQEMREF EOF ;
    public final String entryRuleQEMREF() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQEMREF = null;


        try {
            // InternalErrorModelParser.g:8461:46: (iv_ruleQEMREF= ruleQEMREF EOF )
            // InternalErrorModelParser.g:8462:2: iv_ruleQEMREF= ruleQEMREF EOF
            {
             newCompositeNode(grammarAccess.getQEMREFRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQEMREF=ruleQEMREF();

            state._fsp--;

             current =iv_ruleQEMREF.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQEMREF"
    // InternalErrorModelParser.g:8468:1: ruleQEMREF returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQEMREF() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:8474:2: ( (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )* ) )
            // InternalErrorModelParser.g:8475:2: (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )* )
            {
            // InternalErrorModelParser.g:8475:2: (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )* )
            // InternalErrorModelParser.g:8476:3: this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_144); 

            			current.merge(this_ID_0);
            		

            			newLeafNode(this_ID_0, grammarAccess.getQEMREFAccess().getIDTerminalRuleCall_0());
            		
            // InternalErrorModelParser.g:8483:3: (kw= ColonColon this_ID_2= RULE_ID )*
            loop224:
            do {
                int alt224=2;
                int LA224_0 = input.LA(1);

                if ( (LA224_0==ColonColon) ) {
                    alt224=1;
                }


                switch (alt224) {
            	case 1 :
            	    // InternalErrorModelParser.g:8484:4: kw= ColonColon this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,ColonColon,FollowSets000.FOLLOW_5); 

            	    				current.merge(kw);
            	    				newLeafNode(kw, grammarAccess.getQEMREFAccess().getColonColonKeyword_1_0());
            	    			
            	    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_144); 

            	    				current.merge(this_ID_2);
            	    			

            	    				newLeafNode(this_ID_2, grammarAccess.getQEMREFAccess().getIDTerminalRuleCall_1_1());
            	    			

            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleContainedPropertyAssociation"
    // InternalErrorModelParser.g:8501:1: entryRuleContainedPropertyAssociation returns [EObject current=null] : iv_ruleContainedPropertyAssociation= ruleContainedPropertyAssociation EOF ;
    public final EObject entryRuleContainedPropertyAssociation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainedPropertyAssociation = null;


        try {
            // InternalErrorModelParser.g:8501:69: (iv_ruleContainedPropertyAssociation= ruleContainedPropertyAssociation EOF )
            // InternalErrorModelParser.g:8502:2: iv_ruleContainedPropertyAssociation= ruleContainedPropertyAssociation EOF
            {
             newCompositeNode(grammarAccess.getContainedPropertyAssociationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleContainedPropertyAssociation=ruleContainedPropertyAssociation();

            state._fsp--;

             current =iv_ruleContainedPropertyAssociation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleContainedPropertyAssociation"
    // InternalErrorModelParser.g:8508:1: ruleContainedPropertyAssociation returns [EObject current=null] : ( ( ( ruleQPREF ) ) (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) ) ( (lv_constant_3_0= Constant ) )? ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* ) ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )? ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )? otherlv_15= Semicolon ) ;
    public final EObject ruleContainedPropertyAssociation() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_append_2_0=null;
        Token lv_constant_3_0=null;
        Token otherlv_5=null;
        Token otherlv_9=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        EObject lv_ownedValue_4_0 = null;

        EObject lv_ownedValue_6_0 = null;

        EObject lv_appliesTo_8_0 = null;

        EObject lv_appliesTo_10_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8514:2: ( ( ( ( ruleQPREF ) ) (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) ) ( (lv_constant_3_0= Constant ) )? ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* ) ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )? ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )? otherlv_15= Semicolon ) )
            // InternalErrorModelParser.g:8515:2: ( ( ( ruleQPREF ) ) (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) ) ( (lv_constant_3_0= Constant ) )? ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* ) ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )? ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )? otherlv_15= Semicolon )
            {
            // InternalErrorModelParser.g:8515:2: ( ( ( ruleQPREF ) ) (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) ) ( (lv_constant_3_0= Constant ) )? ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* ) ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )? ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )? otherlv_15= Semicolon )
            // InternalErrorModelParser.g:8516:3: ( ( ruleQPREF ) ) (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) ) ( (lv_constant_3_0= Constant ) )? ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* ) ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )? ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )? otherlv_15= Semicolon
            {
            // InternalErrorModelParser.g:8516:3: ( ( ruleQPREF ) )
            // InternalErrorModelParser.g:8517:4: ( ruleQPREF )
            {
            // InternalErrorModelParser.g:8517:4: ( ruleQPREF )
            // InternalErrorModelParser.g:8518:5: ruleQPREF
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getContainedPropertyAssociationRule());
            					}
            				

            					newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getPropertyPropertyCrossReference_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_145);
            ruleQPREF();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:8532:3: (otherlv_1= EqualsSignGreaterThanSign | ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) ) )
            int alt225=2;
            int LA225_0 = input.LA(1);

            if ( (LA225_0==EqualsSignGreaterThanSign) ) {
                alt225=1;
            }
            else if ( (LA225_0==PlusSignEqualsSignGreaterThanSign) ) {
                alt225=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 225, 0, input);

                throw nvae;
            }
            switch (alt225) {
                case 1 :
                    // InternalErrorModelParser.g:8533:4: otherlv_1= EqualsSignGreaterThanSign
                    {
                    otherlv_1=(Token)match(input,EqualsSignGreaterThanSign,FollowSets000.FOLLOW_146); 

                    				newLeafNode(otherlv_1, grammarAccess.getContainedPropertyAssociationAccess().getEqualsSignGreaterThanSignKeyword_1_0());
                    			

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:8538:4: ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) )
                    {
                    // InternalErrorModelParser.g:8538:4: ( (lv_append_2_0= PlusSignEqualsSignGreaterThanSign ) )
                    // InternalErrorModelParser.g:8539:5: (lv_append_2_0= PlusSignEqualsSignGreaterThanSign )
                    {
                    // InternalErrorModelParser.g:8539:5: (lv_append_2_0= PlusSignEqualsSignGreaterThanSign )
                    // InternalErrorModelParser.g:8540:6: lv_append_2_0= PlusSignEqualsSignGreaterThanSign
                    {
                    lv_append_2_0=(Token)match(input,PlusSignEqualsSignGreaterThanSign,FollowSets000.FOLLOW_146); 

                    						newLeafNode(lv_append_2_0, grammarAccess.getContainedPropertyAssociationAccess().getAppendPlusSignEqualsSignGreaterThanSignKeyword_1_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getContainedPropertyAssociationRule());
                    						}
                    						setWithLastConsumed(current, "append", lv_append_2_0 != null, "+=>");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:8553:3: ( (lv_constant_3_0= Constant ) )?
            int alt226=2;
            int LA226_0 = input.LA(1);

            if ( (LA226_0==Constant) ) {
                alt226=1;
            }
            switch (alt226) {
                case 1 :
                    // InternalErrorModelParser.g:8554:4: (lv_constant_3_0= Constant )
                    {
                    // InternalErrorModelParser.g:8554:4: (lv_constant_3_0= Constant )
                    // InternalErrorModelParser.g:8555:5: lv_constant_3_0= Constant
                    {
                    lv_constant_3_0=(Token)match(input,Constant,FollowSets000.FOLLOW_61); 

                    					newLeafNode(lv_constant_3_0, grammarAccess.getContainedPropertyAssociationAccess().getConstantConstantKeyword_2_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getContainedPropertyAssociationRule());
                    					}
                    					setWithLastConsumed(current, "constant", lv_constant_3_0 != null, "constant");
                    				

                    }


                    }
                    break;

            }

            // InternalErrorModelParser.g:8567:3: ( ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )* )
            // InternalErrorModelParser.g:8568:4: ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) ) (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )*
            {
            // InternalErrorModelParser.g:8568:4: ( (lv_ownedValue_4_0= ruleOptionalModalPropertyValue ) )
            // InternalErrorModelParser.g:8569:5: (lv_ownedValue_4_0= ruleOptionalModalPropertyValue )
            {
            // InternalErrorModelParser.g:8569:5: (lv_ownedValue_4_0= ruleOptionalModalPropertyValue )
            // InternalErrorModelParser.g:8570:6: lv_ownedValue_4_0= ruleOptionalModalPropertyValue
            {

            						newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getOwnedValueOptionalModalPropertyValueParserRuleCall_3_0_0());
            					
            pushFollow(FollowSets000.FOLLOW_147);
            lv_ownedValue_4_0=ruleOptionalModalPropertyValue();

            state._fsp--;


            						if (current==null) {
            							current = createModelElementForParent(grammarAccess.getContainedPropertyAssociationRule());
            						}
            						add(
            							current,
            							"ownedValue",
            							lv_ownedValue_4_0,
            							"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            						afterParserOrEnumRuleCall();
            					

            }


            }

            // InternalErrorModelParser.g:8587:4: (otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) ) )*
            loop227:
            do {
                int alt227=2;
                int LA227_0 = input.LA(1);

                if ( (LA227_0==Comma) ) {
                    alt227=1;
                }


                switch (alt227) {
            	case 1 :
            	    // InternalErrorModelParser.g:8588:5: otherlv_5= Comma ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) )
            	    {
            	    otherlv_5=(Token)match(input,Comma,FollowSets000.FOLLOW_61); 

            	    					newLeafNode(otherlv_5, grammarAccess.getContainedPropertyAssociationAccess().getCommaKeyword_3_1_0());
            	    				
            	    // InternalErrorModelParser.g:8592:5: ( (lv_ownedValue_6_0= ruleOptionalModalPropertyValue ) )
            	    // InternalErrorModelParser.g:8593:6: (lv_ownedValue_6_0= ruleOptionalModalPropertyValue )
            	    {
            	    // InternalErrorModelParser.g:8593:6: (lv_ownedValue_6_0= ruleOptionalModalPropertyValue )
            	    // InternalErrorModelParser.g:8594:7: lv_ownedValue_6_0= ruleOptionalModalPropertyValue
            	    {

            	    							newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getOwnedValueOptionalModalPropertyValueParserRuleCall_3_1_1_0());
            	    						
            	    pushFollow(FollowSets000.FOLLOW_147);
            	    lv_ownedValue_6_0=ruleOptionalModalPropertyValue();

            	    state._fsp--;


            	    							if (current==null) {
            	    								current = createModelElementForParent(grammarAccess.getContainedPropertyAssociationRule());
            	    							}
            	    							add(
            	    								current,
            	    								"ownedValue",
            	    								lv_ownedValue_6_0,
            	    								"org.osate.xtext.aadl2.properties.Properties.OptionalModalPropertyValue");
            	    							afterParserOrEnumRuleCall();
            	    						

            	    }


            	    }


            	    }
            	    break;

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


            }

            // InternalErrorModelParser.g:8613:3: ( ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )* )?
            int alt229=2;
            int LA229_0 = input.LA(1);

            if ( (LA229_0==Applies) ) {
                alt229=1;
            }
            switch (alt229) {
                case 1 :
                    // InternalErrorModelParser.g:8614:4: ruleAppliesToKeywords ( (lv_appliesTo_8_0= ruleContainmentPath ) ) (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )*
                    {

                    				newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getAppliesToKeywordsParserRuleCall_4_0());
                    			
                    pushFollow(FollowSets000.FOLLOW_5);
                    ruleAppliesToKeywords();

                    state._fsp--;


                    				afterParserOrEnumRuleCall();
                    			
                    // InternalErrorModelParser.g:8621:4: ( (lv_appliesTo_8_0= ruleContainmentPath ) )
                    // InternalErrorModelParser.g:8622:5: (lv_appliesTo_8_0= ruleContainmentPath )
                    {
                    // InternalErrorModelParser.g:8622:5: (lv_appliesTo_8_0= ruleContainmentPath )
                    // InternalErrorModelParser.g:8623:6: lv_appliesTo_8_0= ruleContainmentPath
                    {

                    						newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getAppliesToContainmentPathParserRuleCall_4_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_148);
                    lv_appliesTo_8_0=ruleContainmentPath();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getContainedPropertyAssociationRule());
                    						}
                    						add(
                    							current,
                    							"appliesTo",
                    							lv_appliesTo_8_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ContainmentPath");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:8640:4: (otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) ) )*
                    loop228:
                    do {
                        int alt228=2;
                        int LA228_0 = input.LA(1);

                        if ( (LA228_0==Comma) ) {
                            alt228=1;
                        }


                        switch (alt228) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:8641:5: otherlv_9= Comma ( (lv_appliesTo_10_0= ruleContainmentPath ) )
                    	    {
                    	    otherlv_9=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_9, grammarAccess.getContainedPropertyAssociationAccess().getCommaKeyword_4_2_0());
                    	    				
                    	    // InternalErrorModelParser.g:8645:5: ( (lv_appliesTo_10_0= ruleContainmentPath ) )
                    	    // InternalErrorModelParser.g:8646:6: (lv_appliesTo_10_0= ruleContainmentPath )
                    	    {
                    	    // InternalErrorModelParser.g:8646:6: (lv_appliesTo_10_0= ruleContainmentPath )
                    	    // InternalErrorModelParser.g:8647:7: lv_appliesTo_10_0= ruleContainmentPath
                    	    {

                    	    							newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getAppliesToContainmentPathParserRuleCall_4_2_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_148);
                    	    lv_appliesTo_10_0=ruleContainmentPath();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getContainedPropertyAssociationRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"appliesTo",
                    	    								lv_appliesTo_10_0,
                    	    								"org.osate.xtext.aadl2.properties.Properties.ContainmentPath");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            // InternalErrorModelParser.g:8666:3: ( ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis )?
            int alt230=2;
            int LA230_0 = input.LA(1);

            if ( (LA230_0==In) ) {
                alt230=1;
            }
            switch (alt230) {
                case 1 :
                    // InternalErrorModelParser.g:8667:4: ruleInBindingKeywords otherlv_12= LeftParenthesis ( ( ruleQCREF ) ) otherlv_14= RightParenthesis
                    {

                    				newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getInBindingKeywordsParserRuleCall_5_0());
                    			
                    pushFollow(FollowSets000.FOLLOW_127);
                    ruleInBindingKeywords();

                    state._fsp--;


                    				afterParserOrEnumRuleCall();
                    			
                    otherlv_12=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_12, grammarAccess.getContainedPropertyAssociationAccess().getLeftParenthesisKeyword_5_1());
                    			
                    // InternalErrorModelParser.g:8678:4: ( ( ruleQCREF ) )
                    // InternalErrorModelParser.g:8679:5: ( ruleQCREF )
                    {
                    // InternalErrorModelParser.g:8679:5: ( ruleQCREF )
                    // InternalErrorModelParser.g:8680:6: ruleQCREF
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getContainedPropertyAssociationRule());
                    						}
                    					

                    						newCompositeNode(grammarAccess.getContainedPropertyAssociationAccess().getInBindingClassifierCrossReference_5_2_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_130);
                    ruleQCREF();

                    state._fsp--;


                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_14=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_10); 

                    				newLeafNode(otherlv_14, grammarAccess.getContainedPropertyAssociationAccess().getRightParenthesisKeyword_5_3());
                    			

                    }
                    break;

            }

            otherlv_15=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_15, grammarAccess.getContainedPropertyAssociationAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleContainmentPath"
    // InternalErrorModelParser.g:8707:1: entryRuleContainmentPath returns [EObject current=null] : iv_ruleContainmentPath= ruleContainmentPath EOF ;
    public final EObject entryRuleContainmentPath() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainmentPath = null;


        try {
            // InternalErrorModelParser.g:8707:56: (iv_ruleContainmentPath= ruleContainmentPath EOF )
            // InternalErrorModelParser.g:8708:2: iv_ruleContainmentPath= ruleContainmentPath EOF
            {
             newCompositeNode(grammarAccess.getContainmentPathRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleContainmentPath=ruleContainmentPath();

            state._fsp--;

             current =iv_ruleContainmentPath; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleContainmentPath"
    // InternalErrorModelParser.g:8714:1: ruleContainmentPath returns [EObject current=null] : ( (lv_path_0_0= ruleContainmentPathElement ) ) ;
    public final EObject ruleContainmentPath() throws RecognitionException {
        EObject current = null;

        EObject lv_path_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8720:2: ( ( (lv_path_0_0= ruleContainmentPathElement ) ) )
            // InternalErrorModelParser.g:8721:2: ( (lv_path_0_0= ruleContainmentPathElement ) )
            {
            // InternalErrorModelParser.g:8721:2: ( (lv_path_0_0= ruleContainmentPathElement ) )
            // InternalErrorModelParser.g:8722:3: (lv_path_0_0= ruleContainmentPathElement )
            {
            // InternalErrorModelParser.g:8722:3: (lv_path_0_0= ruleContainmentPathElement )
            // InternalErrorModelParser.g:8723:4: lv_path_0_0= ruleContainmentPathElement
            {

            				newCompositeNode(grammarAccess.getContainmentPathAccess().getPathContainmentPathElementParserRuleCall_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            lv_path_0_0=ruleContainmentPathElement();

            state._fsp--;


            				if (current==null) {
            					current = createModelElementForParent(grammarAccess.getContainmentPathRule());
            				}
            				set(
            					current,
            					"path",
            					lv_path_0_0,
            					"org.osate.xtext.aadl2.properties.Properties.ContainmentPathElement");
            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleOptionalModalPropertyValue"
    // InternalErrorModelParser.g:8743:1: entryRuleOptionalModalPropertyValue returns [EObject current=null] : iv_ruleOptionalModalPropertyValue= ruleOptionalModalPropertyValue EOF ;
    public final EObject entryRuleOptionalModalPropertyValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOptionalModalPropertyValue = null;


        try {
            // InternalErrorModelParser.g:8743:67: (iv_ruleOptionalModalPropertyValue= ruleOptionalModalPropertyValue EOF )
            // InternalErrorModelParser.g:8744:2: iv_ruleOptionalModalPropertyValue= ruleOptionalModalPropertyValue EOF
            {
             newCompositeNode(grammarAccess.getOptionalModalPropertyValueRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleOptionalModalPropertyValue=ruleOptionalModalPropertyValue();

            state._fsp--;

             current =iv_ruleOptionalModalPropertyValue; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleOptionalModalPropertyValue"
    // InternalErrorModelParser.g:8750:1: ruleOptionalModalPropertyValue returns [EObject current=null] : ( ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )? ) ;
    public final EObject ruleOptionalModalPropertyValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_ownedValue_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8756:2: ( ( ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )? ) )
            // InternalErrorModelParser.g:8757:2: ( ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )? )
            {
            // InternalErrorModelParser.g:8757:2: ( ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )? )
            // InternalErrorModelParser.g:8758:3: ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )?
            {
            // InternalErrorModelParser.g:8758:3: ( (lv_ownedValue_0_0= rulePropertyExpression ) )
            // InternalErrorModelParser.g:8759:4: (lv_ownedValue_0_0= rulePropertyExpression )
            {
            // InternalErrorModelParser.g:8759:4: (lv_ownedValue_0_0= rulePropertyExpression )
            // InternalErrorModelParser.g:8760:5: lv_ownedValue_0_0= rulePropertyExpression
            {

            					newCompositeNode(grammarAccess.getOptionalModalPropertyValueAccess().getOwnedValuePropertyExpressionParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_149);
            lv_ownedValue_0_0=rulePropertyExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getOptionalModalPropertyValueRule());
            					}
            					set(
            						current,
            						"ownedValue",
            						lv_ownedValue_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.PropertyExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:8777:3: ( ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis )?
            int alt232=2;
            int LA232_0 = input.LA(1);

            if ( (LA232_0==In) ) {
                int LA232_1 = input.LA(2);

                if ( (LA232_1==Modes) ) {
                    alt232=1;
                }
            }
            switch (alt232) {
                case 1 :
                    // InternalErrorModelParser.g:8778:4: ruleInModesKeywords otherlv_2= LeftParenthesis ( (otherlv_3= RULE_ID ) ) (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )* otherlv_6= RightParenthesis
                    {

                    				newCompositeNode(grammarAccess.getOptionalModalPropertyValueAccess().getInModesKeywordsParserRuleCall_1_0());
                    			
                    pushFollow(FollowSets000.FOLLOW_127);
                    ruleInModesKeywords();

                    state._fsp--;


                    				afterParserOrEnumRuleCall();
                    			
                    otherlv_2=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_2, grammarAccess.getOptionalModalPropertyValueAccess().getLeftParenthesisKeyword_1_1());
                    			
                    // InternalErrorModelParser.g:8789:4: ( (otherlv_3= RULE_ID ) )
                    // InternalErrorModelParser.g:8790:5: (otherlv_3= RULE_ID )
                    {
                    // InternalErrorModelParser.g:8790:5: (otherlv_3= RULE_ID )
                    // InternalErrorModelParser.g:8791:6: otherlv_3= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getOptionalModalPropertyValueRule());
                    						}
                    					
                    otherlv_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_119); 

                    						newLeafNode(otherlv_3, grammarAccess.getOptionalModalPropertyValueAccess().getInModeModeCrossReference_1_2_0());
                    					

                    }


                    }

                    // InternalErrorModelParser.g:8802:4: (otherlv_4= Comma ( (otherlv_5= RULE_ID ) ) )*
                    loop231:
                    do {
                        int alt231=2;
                        int LA231_0 = input.LA(1);

                        if ( (LA231_0==Comma) ) {
                            alt231=1;
                        }


                        switch (alt231) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:8803:5: otherlv_4= Comma ( (otherlv_5= RULE_ID ) )
                    	    {
                    	    otherlv_4=(Token)match(input,Comma,FollowSets000.FOLLOW_5); 

                    	    					newLeafNode(otherlv_4, grammarAccess.getOptionalModalPropertyValueAccess().getCommaKeyword_1_3_0());
                    	    				
                    	    // InternalErrorModelParser.g:8807:5: ( (otherlv_5= RULE_ID ) )
                    	    // InternalErrorModelParser.g:8808:6: (otherlv_5= RULE_ID )
                    	    {
                    	    // InternalErrorModelParser.g:8808:6: (otherlv_5= RULE_ID )
                    	    // InternalErrorModelParser.g:8809:7: otherlv_5= RULE_ID
                    	    {

                    	    							if (current==null) {
                    	    								current = createModelElement(grammarAccess.getOptionalModalPropertyValueRule());
                    	    							}
                    	    						
                    	    otherlv_5=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_119); 

                    	    							newLeafNode(otherlv_5, grammarAccess.getOptionalModalPropertyValueAccess().getInModeModeCrossReference_1_3_1_0());
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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

                    otherlv_6=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_6, grammarAccess.getOptionalModalPropertyValueAccess().getRightParenthesisKeyword_1_4());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropertyValue"
    // InternalErrorModelParser.g:8830:1: entryRulePropertyValue returns [EObject current=null] : iv_rulePropertyValue= rulePropertyValue EOF ;
    public final EObject entryRulePropertyValue() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyValue = null;


        try {
            // InternalErrorModelParser.g:8830:54: (iv_rulePropertyValue= rulePropertyValue EOF )
            // InternalErrorModelParser.g:8831:2: iv_rulePropertyValue= rulePropertyValue EOF
            {
             newCompositeNode(grammarAccess.getPropertyValueRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropertyValue=rulePropertyValue();

            state._fsp--;

             current =iv_rulePropertyValue; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropertyValue"
    // InternalErrorModelParser.g:8837:1: rulePropertyValue returns [EObject current=null] : ( (lv_ownedValue_0_0= rulePropertyExpression ) ) ;
    public final EObject rulePropertyValue() throws RecognitionException {
        EObject current = null;

        EObject lv_ownedValue_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8843:2: ( ( (lv_ownedValue_0_0= rulePropertyExpression ) ) )
            // InternalErrorModelParser.g:8844:2: ( (lv_ownedValue_0_0= rulePropertyExpression ) )
            {
            // InternalErrorModelParser.g:8844:2: ( (lv_ownedValue_0_0= rulePropertyExpression ) )
            // InternalErrorModelParser.g:8845:3: (lv_ownedValue_0_0= rulePropertyExpression )
            {
            // InternalErrorModelParser.g:8845:3: (lv_ownedValue_0_0= rulePropertyExpression )
            // InternalErrorModelParser.g:8846:4: lv_ownedValue_0_0= rulePropertyExpression
            {

            				newCompositeNode(grammarAccess.getPropertyValueAccess().getOwnedValuePropertyExpressionParserRuleCall_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            lv_ownedValue_0_0=rulePropertyExpression();

            state._fsp--;


            				if (current==null) {
            					current = createModelElementForParent(grammarAccess.getPropertyValueRule());
            				}
            				set(
            					current,
            					"ownedValue",
            					lv_ownedValue_0_0,
            					"org.osate.xtext.aadl2.properties.Properties.PropertyExpression");
            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePropertyExpression"
    // InternalErrorModelParser.g:8866:1: entryRulePropertyExpression returns [EObject current=null] : iv_rulePropertyExpression= rulePropertyExpression EOF ;
    public final EObject entryRulePropertyExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyExpression = null;


        try {
            // InternalErrorModelParser.g:8866:59: (iv_rulePropertyExpression= rulePropertyExpression EOF )
            // InternalErrorModelParser.g:8867:2: iv_rulePropertyExpression= rulePropertyExpression EOF
            {
             newCompositeNode(grammarAccess.getPropertyExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePropertyExpression=rulePropertyExpression();

            state._fsp--;

             current =iv_rulePropertyExpression; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePropertyExpression"
    // InternalErrorModelParser.g:8873:1: rulePropertyExpression returns [EObject current=null] : (this_RecordTerm_0= ruleRecordTerm | this_ReferenceTerm_1= ruleReferenceTerm | this_ComponentClassifierTerm_2= ruleComponentClassifierTerm | this_ComputedTerm_3= ruleComputedTerm | this_StringTerm_4= ruleStringTerm | this_NumericRangeTerm_5= ruleNumericRangeTerm | this_RealTerm_6= ruleRealTerm | this_IntegerTerm_7= ruleIntegerTerm | this_ListTerm_8= ruleListTerm | this_BooleanLiteral_9= ruleBooleanLiteral | this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm ) ;
    public final EObject rulePropertyExpression() throws RecognitionException {
        EObject current = null;

        EObject this_RecordTerm_0 = null;

        EObject this_ReferenceTerm_1 = null;

        EObject this_ComponentClassifierTerm_2 = null;

        EObject this_ComputedTerm_3 = null;

        EObject this_StringTerm_4 = null;

        EObject this_NumericRangeTerm_5 = null;

        EObject this_RealTerm_6 = null;

        EObject this_IntegerTerm_7 = null;

        EObject this_ListTerm_8 = null;

        EObject this_BooleanLiteral_9 = null;

        EObject this_LiteralorReferenceTerm_10 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:8879:2: ( (this_RecordTerm_0= ruleRecordTerm | this_ReferenceTerm_1= ruleReferenceTerm | this_ComponentClassifierTerm_2= ruleComponentClassifierTerm | this_ComputedTerm_3= ruleComputedTerm | this_StringTerm_4= ruleStringTerm | this_NumericRangeTerm_5= ruleNumericRangeTerm | this_RealTerm_6= ruleRealTerm | this_IntegerTerm_7= ruleIntegerTerm | this_ListTerm_8= ruleListTerm | this_BooleanLiteral_9= ruleBooleanLiteral | this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm ) )
            // InternalErrorModelParser.g:8880:2: (this_RecordTerm_0= ruleRecordTerm | this_ReferenceTerm_1= ruleReferenceTerm | this_ComponentClassifierTerm_2= ruleComponentClassifierTerm | this_ComputedTerm_3= ruleComputedTerm | this_StringTerm_4= ruleStringTerm | this_NumericRangeTerm_5= ruleNumericRangeTerm | this_RealTerm_6= ruleRealTerm | this_IntegerTerm_7= ruleIntegerTerm | this_ListTerm_8= ruleListTerm | this_BooleanLiteral_9= ruleBooleanLiteral | this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm )
            {
            // InternalErrorModelParser.g:8880:2: (this_RecordTerm_0= ruleRecordTerm | this_ReferenceTerm_1= ruleReferenceTerm | this_ComponentClassifierTerm_2= ruleComponentClassifierTerm | this_ComputedTerm_3= ruleComputedTerm | this_StringTerm_4= ruleStringTerm | this_NumericRangeTerm_5= ruleNumericRangeTerm | this_RealTerm_6= ruleRealTerm | this_IntegerTerm_7= ruleIntegerTerm | this_ListTerm_8= ruleListTerm | this_BooleanLiteral_9= ruleBooleanLiteral | this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm )
            int alt233=11;
            alt233 = dfa233.predict(input);
            switch (alt233) {
                case 1 :
                    // InternalErrorModelParser.g:8881:3: this_RecordTerm_0= ruleRecordTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getRecordTermParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_RecordTerm_0=ruleRecordTerm();

                    state._fsp--;


                    			current = this_RecordTerm_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:8890:3: this_ReferenceTerm_1= ruleReferenceTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getReferenceTermParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ReferenceTerm_1=ruleReferenceTerm();

                    state._fsp--;


                    			current = this_ReferenceTerm_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:8899:3: this_ComponentClassifierTerm_2= ruleComponentClassifierTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getComponentClassifierTermParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ComponentClassifierTerm_2=ruleComponentClassifierTerm();

                    state._fsp--;


                    			current = this_ComponentClassifierTerm_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 4 :
                    // InternalErrorModelParser.g:8908:3: this_ComputedTerm_3= ruleComputedTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getComputedTermParserRuleCall_3());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ComputedTerm_3=ruleComputedTerm();

                    state._fsp--;


                    			current = this_ComputedTerm_3;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 5 :
                    // InternalErrorModelParser.g:8917:3: this_StringTerm_4= ruleStringTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getStringTermParserRuleCall_4());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_StringTerm_4=ruleStringTerm();

                    state._fsp--;


                    			current = this_StringTerm_4;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 6 :
                    // InternalErrorModelParser.g:8926:3: this_NumericRangeTerm_5= ruleNumericRangeTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getNumericRangeTermParserRuleCall_5());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_NumericRangeTerm_5=ruleNumericRangeTerm();

                    state._fsp--;


                    			current = this_NumericRangeTerm_5;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 7 :
                    // InternalErrorModelParser.g:8935:3: this_RealTerm_6= ruleRealTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getRealTermParserRuleCall_6());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_RealTerm_6=ruleRealTerm();

                    state._fsp--;


                    			current = this_RealTerm_6;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 8 :
                    // InternalErrorModelParser.g:8944:3: this_IntegerTerm_7= ruleIntegerTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getIntegerTermParserRuleCall_7());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_IntegerTerm_7=ruleIntegerTerm();

                    state._fsp--;


                    			current = this_IntegerTerm_7;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 9 :
                    // InternalErrorModelParser.g:8953:3: this_ListTerm_8= ruleListTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getListTermParserRuleCall_8());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ListTerm_8=ruleListTerm();

                    state._fsp--;


                    			current = this_ListTerm_8;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 10 :
                    // InternalErrorModelParser.g:8962:3: this_BooleanLiteral_9= ruleBooleanLiteral
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getBooleanLiteralParserRuleCall_9());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_BooleanLiteral_9=ruleBooleanLiteral();

                    state._fsp--;


                    			current = this_BooleanLiteral_9;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 11 :
                    // InternalErrorModelParser.g:8971:3: this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm
                    {

                    			newCompositeNode(grammarAccess.getPropertyExpressionAccess().getLiteralorReferenceTermParserRuleCall_10());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_LiteralorReferenceTerm_10=ruleLiteralorReferenceTerm();

                    state._fsp--;


                    			current = this_LiteralorReferenceTerm_10;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleLiteralorReferenceTerm"
    // InternalErrorModelParser.g:8983:1: entryRuleLiteralorReferenceTerm returns [EObject current=null] : iv_ruleLiteralorReferenceTerm= ruleLiteralorReferenceTerm EOF ;
    public final EObject entryRuleLiteralorReferenceTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteralorReferenceTerm = null;


        try {
            // InternalErrorModelParser.g:8983:63: (iv_ruleLiteralorReferenceTerm= ruleLiteralorReferenceTerm EOF )
            // InternalErrorModelParser.g:8984:2: iv_ruleLiteralorReferenceTerm= ruleLiteralorReferenceTerm EOF
            {
             newCompositeNode(grammarAccess.getLiteralorReferenceTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleLiteralorReferenceTerm=ruleLiteralorReferenceTerm();

            state._fsp--;

             current =iv_ruleLiteralorReferenceTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleLiteralorReferenceTerm"
    // InternalErrorModelParser.g:8990:1: ruleLiteralorReferenceTerm returns [EObject current=null] : ( ( ruleQPREF ) ) ;
    public final EObject ruleLiteralorReferenceTerm() throws RecognitionException {
        EObject current = null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:8996:2: ( ( ( ruleQPREF ) ) )
            // InternalErrorModelParser.g:8997:2: ( ( ruleQPREF ) )
            {
            // InternalErrorModelParser.g:8997:2: ( ( ruleQPREF ) )
            // InternalErrorModelParser.g:8998:3: ( ruleQPREF )
            {
            // InternalErrorModelParser.g:8998:3: ( ruleQPREF )
            // InternalErrorModelParser.g:8999:4: ruleQPREF
            {

            				if (current==null) {
            					current = createModelElement(grammarAccess.getLiteralorReferenceTermRule());
            				}
            			

            				newCompositeNode(grammarAccess.getLiteralorReferenceTermAccess().getNamedValueAbstractNamedValueCrossReference_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQPREF();

            state._fsp--;


            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleBooleanLiteral"
    // InternalErrorModelParser.g:9016:1: entryRuleBooleanLiteral returns [EObject current=null] : iv_ruleBooleanLiteral= ruleBooleanLiteral EOF ;
    public final EObject entryRuleBooleanLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanLiteral = null;


        try {
            // InternalErrorModelParser.g:9016:55: (iv_ruleBooleanLiteral= ruleBooleanLiteral EOF )
            // InternalErrorModelParser.g:9017:2: iv_ruleBooleanLiteral= ruleBooleanLiteral EOF
            {
             newCompositeNode(grammarAccess.getBooleanLiteralRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleBooleanLiteral=ruleBooleanLiteral();

            state._fsp--;

             current =iv_ruleBooleanLiteral; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleBooleanLiteral"
    // InternalErrorModelParser.g:9023:1: ruleBooleanLiteral returns [EObject current=null] : ( () ( ( (lv_value_1_0= True ) ) | otherlv_2= False ) ) ;
    public final EObject ruleBooleanLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;
        Token otherlv_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9029:2: ( ( () ( ( (lv_value_1_0= True ) ) | otherlv_2= False ) ) )
            // InternalErrorModelParser.g:9030:2: ( () ( ( (lv_value_1_0= True ) ) | otherlv_2= False ) )
            {
            // InternalErrorModelParser.g:9030:2: ( () ( ( (lv_value_1_0= True ) ) | otherlv_2= False ) )
            // InternalErrorModelParser.g:9031:3: () ( ( (lv_value_1_0= True ) ) | otherlv_2= False )
            {
            // InternalErrorModelParser.g:9031:3: ()
            // InternalErrorModelParser.g:9032:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getBooleanLiteralAccess().getBooleanLiteralAction_0(),
            					current);
            			

            }

            // InternalErrorModelParser.g:9038:3: ( ( (lv_value_1_0= True ) ) | otherlv_2= False )
            int alt234=2;
            int LA234_0 = input.LA(1);

            if ( (LA234_0==True) ) {
                alt234=1;
            }
            else if ( (LA234_0==False) ) {
                alt234=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 234, 0, input);

                throw nvae;
            }
            switch (alt234) {
                case 1 :
                    // InternalErrorModelParser.g:9039:4: ( (lv_value_1_0= True ) )
                    {
                    // InternalErrorModelParser.g:9039:4: ( (lv_value_1_0= True ) )
                    // InternalErrorModelParser.g:9040:5: (lv_value_1_0= True )
                    {
                    // InternalErrorModelParser.g:9040:5: (lv_value_1_0= True )
                    // InternalErrorModelParser.g:9041:6: lv_value_1_0= True
                    {
                    lv_value_1_0=(Token)match(input,True,FollowSets000.FOLLOW_2); 

                    						newLeafNode(lv_value_1_0, grammarAccess.getBooleanLiteralAccess().getValueTrueKeyword_1_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getBooleanLiteralRule());
                    						}
                    						setWithLastConsumed(current, "value", lv_value_1_0 != null, "true");
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:9054:4: otherlv_2= False
                    {
                    otherlv_2=(Token)match(input,False,FollowSets000.FOLLOW_2); 

                    				newLeafNode(otherlv_2, grammarAccess.getBooleanLiteralAccess().getFalseKeyword_1_1());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleConstantValue"
    // InternalErrorModelParser.g:9063:1: entryRuleConstantValue returns [EObject current=null] : iv_ruleConstantValue= ruleConstantValue EOF ;
    public final EObject entryRuleConstantValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstantValue = null;


        try {
            // InternalErrorModelParser.g:9063:54: (iv_ruleConstantValue= ruleConstantValue EOF )
            // InternalErrorModelParser.g:9064:2: iv_ruleConstantValue= ruleConstantValue EOF
            {
             newCompositeNode(grammarAccess.getConstantValueRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleConstantValue=ruleConstantValue();

            state._fsp--;

             current =iv_ruleConstantValue; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleConstantValue"
    // InternalErrorModelParser.g:9070:1: ruleConstantValue returns [EObject current=null] : ( ( ruleQPREF ) ) ;
    public final EObject ruleConstantValue() throws RecognitionException {
        EObject current = null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9076:2: ( ( ( ruleQPREF ) ) )
            // InternalErrorModelParser.g:9077:2: ( ( ruleQPREF ) )
            {
            // InternalErrorModelParser.g:9077:2: ( ( ruleQPREF ) )
            // InternalErrorModelParser.g:9078:3: ( ruleQPREF )
            {
            // InternalErrorModelParser.g:9078:3: ( ruleQPREF )
            // InternalErrorModelParser.g:9079:4: ruleQPREF
            {

            				if (current==null) {
            					current = createModelElement(grammarAccess.getConstantValueRule());
            				}
            			

            				newCompositeNode(grammarAccess.getConstantValueAccess().getNamedValuePropertyConstantCrossReference_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            ruleQPREF();

            state._fsp--;


            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleReferenceTerm"
    // InternalErrorModelParser.g:9096:1: entryRuleReferenceTerm returns [EObject current=null] : iv_ruleReferenceTerm= ruleReferenceTerm EOF ;
    public final EObject entryRuleReferenceTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReferenceTerm = null;


        try {
            // InternalErrorModelParser.g:9096:54: (iv_ruleReferenceTerm= ruleReferenceTerm EOF )
            // InternalErrorModelParser.g:9097:2: iv_ruleReferenceTerm= ruleReferenceTerm EOF
            {
             newCompositeNode(grammarAccess.getReferenceTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleReferenceTerm=ruleReferenceTerm();

            state._fsp--;

             current =iv_ruleReferenceTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleReferenceTerm"
    // InternalErrorModelParser.g:9103:1: ruleReferenceTerm returns [EObject current=null] : (otherlv_0= Reference otherlv_1= LeftParenthesis ( (lv_path_2_0= ruleContainmentPathElement ) ) otherlv_3= RightParenthesis ) ;
    public final EObject ruleReferenceTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_path_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9109:2: ( (otherlv_0= Reference otherlv_1= LeftParenthesis ( (lv_path_2_0= ruleContainmentPathElement ) ) otherlv_3= RightParenthesis ) )
            // InternalErrorModelParser.g:9110:2: (otherlv_0= Reference otherlv_1= LeftParenthesis ( (lv_path_2_0= ruleContainmentPathElement ) ) otherlv_3= RightParenthesis )
            {
            // InternalErrorModelParser.g:9110:2: (otherlv_0= Reference otherlv_1= LeftParenthesis ( (lv_path_2_0= ruleContainmentPathElement ) ) otherlv_3= RightParenthesis )
            // InternalErrorModelParser.g:9111:3: otherlv_0= Reference otherlv_1= LeftParenthesis ( (lv_path_2_0= ruleContainmentPathElement ) ) otherlv_3= RightParenthesis
            {
            otherlv_0=(Token)match(input,Reference,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_0, grammarAccess.getReferenceTermAccess().getReferenceKeyword_0());
            		
            otherlv_1=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getReferenceTermAccess().getLeftParenthesisKeyword_1());
            		
            // InternalErrorModelParser.g:9119:3: ( (lv_path_2_0= ruleContainmentPathElement ) )
            // InternalErrorModelParser.g:9120:4: (lv_path_2_0= ruleContainmentPathElement )
            {
            // InternalErrorModelParser.g:9120:4: (lv_path_2_0= ruleContainmentPathElement )
            // InternalErrorModelParser.g:9121:5: lv_path_2_0= ruleContainmentPathElement
            {

            					newCompositeNode(grammarAccess.getReferenceTermAccess().getPathContainmentPathElementParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_130);
            lv_path_2_0=ruleContainmentPathElement();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getReferenceTermRule());
            					}
            					set(
            						current,
            						"path",
            						lv_path_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.ContainmentPathElement");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getReferenceTermAccess().getRightParenthesisKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleRecordTerm"
    // InternalErrorModelParser.g:9146:1: entryRuleRecordTerm returns [EObject current=null] : iv_ruleRecordTerm= ruleRecordTerm EOF ;
    public final EObject entryRuleRecordTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecordTerm = null;


        try {
            // InternalErrorModelParser.g:9146:51: (iv_ruleRecordTerm= ruleRecordTerm EOF )
            // InternalErrorModelParser.g:9147:2: iv_ruleRecordTerm= ruleRecordTerm EOF
            {
             newCompositeNode(grammarAccess.getRecordTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleRecordTerm=ruleRecordTerm();

            state._fsp--;

             current =iv_ruleRecordTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleRecordTerm"
    // InternalErrorModelParser.g:9153:1: ruleRecordTerm returns [EObject current=null] : (otherlv_0= LeftSquareBracket ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+ otherlv_2= RightSquareBracket ) ;
    public final EObject ruleRecordTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_ownedFieldValue_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9159:2: ( (otherlv_0= LeftSquareBracket ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+ otherlv_2= RightSquareBracket ) )
            // InternalErrorModelParser.g:9160:2: (otherlv_0= LeftSquareBracket ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+ otherlv_2= RightSquareBracket )
            {
            // InternalErrorModelParser.g:9160:2: (otherlv_0= LeftSquareBracket ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+ otherlv_2= RightSquareBracket )
            // InternalErrorModelParser.g:9161:3: otherlv_0= LeftSquareBracket ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+ otherlv_2= RightSquareBracket
            {
            otherlv_0=(Token)match(input,LeftSquareBracket,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_0, grammarAccess.getRecordTermAccess().getLeftSquareBracketKeyword_0());
            		
            // InternalErrorModelParser.g:9165:3: ( (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation ) )+
            int cnt235=0;
            loop235:
            do {
                int alt235=2;
                int LA235_0 = input.LA(1);

                if ( (LA235_0==RULE_ID) ) {
                    alt235=1;
                }


                switch (alt235) {
            	case 1 :
            	    // InternalErrorModelParser.g:9166:4: (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation )
            	    {
            	    // InternalErrorModelParser.g:9166:4: (lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation )
            	    // InternalErrorModelParser.g:9167:5: lv_ownedFieldValue_1_0= ruleFieldPropertyAssociation
            	    {

            	    					newCompositeNode(grammarAccess.getRecordTermAccess().getOwnedFieldValueFieldPropertyAssociationParserRuleCall_1_0());
            	    				
            	    pushFollow(FollowSets000.FOLLOW_150);
            	    lv_ownedFieldValue_1_0=ruleFieldPropertyAssociation();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRecordTermRule());
            	    					}
            	    					add(
            	    						current,
            	    						"ownedFieldValue",
            	    						lv_ownedFieldValue_1_0,
            	    						"org.osate.xtext.aadl2.properties.Properties.FieldPropertyAssociation");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt235 >= 1 ) break loop235;
                        EarlyExitException eee =
                            new EarlyExitException(235, input);
                        throw eee;
                }
                cnt235++;
            } while (true);

            otherlv_2=(Token)match(input,RightSquareBracket,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_2, grammarAccess.getRecordTermAccess().getRightSquareBracketKeyword_2());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleComputedTerm"
    // InternalErrorModelParser.g:9192:1: entryRuleComputedTerm returns [EObject current=null] : iv_ruleComputedTerm= ruleComputedTerm EOF ;
    public final EObject entryRuleComputedTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComputedTerm = null;


        try {
            // InternalErrorModelParser.g:9192:53: (iv_ruleComputedTerm= ruleComputedTerm EOF )
            // InternalErrorModelParser.g:9193:2: iv_ruleComputedTerm= ruleComputedTerm EOF
            {
             newCompositeNode(grammarAccess.getComputedTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleComputedTerm=ruleComputedTerm();

            state._fsp--;

             current =iv_ruleComputedTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleComputedTerm"
    // InternalErrorModelParser.g:9199:1: ruleComputedTerm returns [EObject current=null] : (otherlv_0= Compute otherlv_1= LeftParenthesis ( (lv_function_2_0= RULE_ID ) ) otherlv_3= RightParenthesis ) ;
    public final EObject ruleComputedTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_function_2_0=null;
        Token otherlv_3=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9205:2: ( (otherlv_0= Compute otherlv_1= LeftParenthesis ( (lv_function_2_0= RULE_ID ) ) otherlv_3= RightParenthesis ) )
            // InternalErrorModelParser.g:9206:2: (otherlv_0= Compute otherlv_1= LeftParenthesis ( (lv_function_2_0= RULE_ID ) ) otherlv_3= RightParenthesis )
            {
            // InternalErrorModelParser.g:9206:2: (otherlv_0= Compute otherlv_1= LeftParenthesis ( (lv_function_2_0= RULE_ID ) ) otherlv_3= RightParenthesis )
            // InternalErrorModelParser.g:9207:3: otherlv_0= Compute otherlv_1= LeftParenthesis ( (lv_function_2_0= RULE_ID ) ) otherlv_3= RightParenthesis
            {
            otherlv_0=(Token)match(input,Compute,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_0, grammarAccess.getComputedTermAccess().getComputeKeyword_0());
            		
            otherlv_1=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getComputedTermAccess().getLeftParenthesisKeyword_1());
            		
            // InternalErrorModelParser.g:9215:3: ( (lv_function_2_0= RULE_ID ) )
            // InternalErrorModelParser.g:9216:4: (lv_function_2_0= RULE_ID )
            {
            // InternalErrorModelParser.g:9216:4: (lv_function_2_0= RULE_ID )
            // InternalErrorModelParser.g:9217:5: lv_function_2_0= RULE_ID
            {
            lv_function_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_130); 

            					newLeafNode(lv_function_2_0, grammarAccess.getComputedTermAccess().getFunctionIDTerminalRuleCall_2_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getComputedTermRule());
            					}
            					setWithLastConsumed(
            						current,
            						"function",
            						lv_function_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.ID");
            				

            }


            }

            otherlv_3=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getComputedTermAccess().getRightParenthesisKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleComponentClassifierTerm"
    // InternalErrorModelParser.g:9241:1: entryRuleComponentClassifierTerm returns [EObject current=null] : iv_ruleComponentClassifierTerm= ruleComponentClassifierTerm EOF ;
    public final EObject entryRuleComponentClassifierTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentClassifierTerm = null;


        try {
            // InternalErrorModelParser.g:9241:64: (iv_ruleComponentClassifierTerm= ruleComponentClassifierTerm EOF )
            // InternalErrorModelParser.g:9242:2: iv_ruleComponentClassifierTerm= ruleComponentClassifierTerm EOF
            {
             newCompositeNode(grammarAccess.getComponentClassifierTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleComponentClassifierTerm=ruleComponentClassifierTerm();

            state._fsp--;

             current =iv_ruleComponentClassifierTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleComponentClassifierTerm"
    // InternalErrorModelParser.g:9248:1: ruleComponentClassifierTerm returns [EObject current=null] : (otherlv_0= Classifier otherlv_1= LeftParenthesis ( ( ruleQCREF ) ) otherlv_3= RightParenthesis ) ;
    public final EObject ruleComponentClassifierTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9254:2: ( (otherlv_0= Classifier otherlv_1= LeftParenthesis ( ( ruleQCREF ) ) otherlv_3= RightParenthesis ) )
            // InternalErrorModelParser.g:9255:2: (otherlv_0= Classifier otherlv_1= LeftParenthesis ( ( ruleQCREF ) ) otherlv_3= RightParenthesis )
            {
            // InternalErrorModelParser.g:9255:2: (otherlv_0= Classifier otherlv_1= LeftParenthesis ( ( ruleQCREF ) ) otherlv_3= RightParenthesis )
            // InternalErrorModelParser.g:9256:3: otherlv_0= Classifier otherlv_1= LeftParenthesis ( ( ruleQCREF ) ) otherlv_3= RightParenthesis
            {
            otherlv_0=(Token)match(input,Classifier,FollowSets000.FOLLOW_127); 

            			newLeafNode(otherlv_0, grammarAccess.getComponentClassifierTermAccess().getClassifierKeyword_0());
            		
            otherlv_1=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_5); 

            			newLeafNode(otherlv_1, grammarAccess.getComponentClassifierTermAccess().getLeftParenthesisKeyword_1());
            		
            // InternalErrorModelParser.g:9264:3: ( ( ruleQCREF ) )
            // InternalErrorModelParser.g:9265:4: ( ruleQCREF )
            {
            // InternalErrorModelParser.g:9265:4: ( ruleQCREF )
            // InternalErrorModelParser.g:9266:5: ruleQCREF
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getComponentClassifierTermRule());
            					}
            				

            					newCompositeNode(grammarAccess.getComponentClassifierTermAccess().getClassifierComponentClassifierCrossReference_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_130);
            ruleQCREF();

            state._fsp--;


            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getComponentClassifierTermAccess().getRightParenthesisKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleListTerm"
    // InternalErrorModelParser.g:9288:1: entryRuleListTerm returns [EObject current=null] : iv_ruleListTerm= ruleListTerm EOF ;
    public final EObject entryRuleListTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleListTerm = null;


        try {
            // InternalErrorModelParser.g:9288:49: (iv_ruleListTerm= ruleListTerm EOF )
            // InternalErrorModelParser.g:9289:2: iv_ruleListTerm= ruleListTerm EOF
            {
             newCompositeNode(grammarAccess.getListTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleListTerm=ruleListTerm();

            state._fsp--;

             current =iv_ruleListTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleListTerm"
    // InternalErrorModelParser.g:9295:1: ruleListTerm returns [EObject current=null] : ( () otherlv_1= LeftParenthesis ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )? otherlv_5= RightParenthesis ) ;
    public final EObject ruleListTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_ownedListElement_2_0 = null;

        EObject lv_ownedListElement_4_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9301:2: ( ( () otherlv_1= LeftParenthesis ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )? otherlv_5= RightParenthesis ) )
            // InternalErrorModelParser.g:9302:2: ( () otherlv_1= LeftParenthesis ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )? otherlv_5= RightParenthesis )
            {
            // InternalErrorModelParser.g:9302:2: ( () otherlv_1= LeftParenthesis ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )? otherlv_5= RightParenthesis )
            // InternalErrorModelParser.g:9303:3: () otherlv_1= LeftParenthesis ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )? otherlv_5= RightParenthesis
            {
            // InternalErrorModelParser.g:9303:3: ()
            // InternalErrorModelParser.g:9304:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getListTermAccess().getListValueAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,LeftParenthesis,FollowSets000.FOLLOW_151); 

            			newLeafNode(otherlv_1, grammarAccess.getListTermAccess().getLeftParenthesisKeyword_1());
            		
            // InternalErrorModelParser.g:9314:3: ( ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )* )?
            int alt237=2;
            int LA237_0 = input.LA(1);

            if ( (LA237_0==Classifier||LA237_0==Reference||LA237_0==Compute||LA237_0==False||LA237_0==True||LA237_0==LeftParenthesis||LA237_0==PlusSign||LA237_0==HyphenMinus||LA237_0==LeftSquareBracket||LA237_0==RULE_INTEGER_LIT||LA237_0==RULE_REAL_LIT||(LA237_0>=RULE_STRING && LA237_0<=RULE_ID)) ) {
                alt237=1;
            }
            switch (alt237) {
                case 1 :
                    // InternalErrorModelParser.g:9315:4: ( (lv_ownedListElement_2_0= rulePropertyExpression ) ) (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )*
                    {
                    // InternalErrorModelParser.g:9315:4: ( (lv_ownedListElement_2_0= rulePropertyExpression ) )
                    // InternalErrorModelParser.g:9316:5: (lv_ownedListElement_2_0= rulePropertyExpression )
                    {
                    // InternalErrorModelParser.g:9316:5: (lv_ownedListElement_2_0= rulePropertyExpression )
                    // InternalErrorModelParser.g:9317:6: lv_ownedListElement_2_0= rulePropertyExpression
                    {

                    						newCompositeNode(grammarAccess.getListTermAccess().getOwnedListElementPropertyExpressionParserRuleCall_2_0_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_119);
                    lv_ownedListElement_2_0=rulePropertyExpression();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getListTermRule());
                    						}
                    						add(
                    							current,
                    							"ownedListElement",
                    							lv_ownedListElement_2_0,
                    							"org.osate.xtext.aadl2.properties.Properties.PropertyExpression");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalErrorModelParser.g:9334:4: (otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) ) )*
                    loop236:
                    do {
                        int alt236=2;
                        int LA236_0 = input.LA(1);

                        if ( (LA236_0==Comma) ) {
                            alt236=1;
                        }


                        switch (alt236) {
                    	case 1 :
                    	    // InternalErrorModelParser.g:9335:5: otherlv_3= Comma ( (lv_ownedListElement_4_0= rulePropertyExpression ) )
                    	    {
                    	    otherlv_3=(Token)match(input,Comma,FollowSets000.FOLLOW_61); 

                    	    					newLeafNode(otherlv_3, grammarAccess.getListTermAccess().getCommaKeyword_2_1_0());
                    	    				
                    	    // InternalErrorModelParser.g:9339:5: ( (lv_ownedListElement_4_0= rulePropertyExpression ) )
                    	    // InternalErrorModelParser.g:9340:6: (lv_ownedListElement_4_0= rulePropertyExpression )
                    	    {
                    	    // InternalErrorModelParser.g:9340:6: (lv_ownedListElement_4_0= rulePropertyExpression )
                    	    // InternalErrorModelParser.g:9341:7: lv_ownedListElement_4_0= rulePropertyExpression
                    	    {

                    	    							newCompositeNode(grammarAccess.getListTermAccess().getOwnedListElementPropertyExpressionParserRuleCall_2_1_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_119);
                    	    lv_ownedListElement_4_0=rulePropertyExpression();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getListTermRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"ownedListElement",
                    	    								lv_ownedListElement_4_0,
                    	    								"org.osate.xtext.aadl2.properties.Properties.PropertyExpression");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }

            otherlv_5=(Token)match(input,RightParenthesis,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getListTermAccess().getRightParenthesisKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleFieldPropertyAssociation"
    // InternalErrorModelParser.g:9368:1: entryRuleFieldPropertyAssociation returns [EObject current=null] : iv_ruleFieldPropertyAssociation= ruleFieldPropertyAssociation EOF ;
    public final EObject entryRuleFieldPropertyAssociation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFieldPropertyAssociation = null;


        try {
            // InternalErrorModelParser.g:9368:65: (iv_ruleFieldPropertyAssociation= ruleFieldPropertyAssociation EOF )
            // InternalErrorModelParser.g:9369:2: iv_ruleFieldPropertyAssociation= ruleFieldPropertyAssociation EOF
            {
             newCompositeNode(grammarAccess.getFieldPropertyAssociationRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleFieldPropertyAssociation=ruleFieldPropertyAssociation();

            state._fsp--;

             current =iv_ruleFieldPropertyAssociation; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleFieldPropertyAssociation"
    // InternalErrorModelParser.g:9375:1: ruleFieldPropertyAssociation returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= EqualsSignGreaterThanSign ( (lv_ownedValue_2_0= rulePropertyExpression ) ) otherlv_3= Semicolon ) ;
    public final EObject ruleFieldPropertyAssociation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_ownedValue_2_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9381:2: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= EqualsSignGreaterThanSign ( (lv_ownedValue_2_0= rulePropertyExpression ) ) otherlv_3= Semicolon ) )
            // InternalErrorModelParser.g:9382:2: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= EqualsSignGreaterThanSign ( (lv_ownedValue_2_0= rulePropertyExpression ) ) otherlv_3= Semicolon )
            {
            // InternalErrorModelParser.g:9382:2: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= EqualsSignGreaterThanSign ( (lv_ownedValue_2_0= rulePropertyExpression ) ) otherlv_3= Semicolon )
            // InternalErrorModelParser.g:9383:3: ( (otherlv_0= RULE_ID ) ) otherlv_1= EqualsSignGreaterThanSign ( (lv_ownedValue_2_0= rulePropertyExpression ) ) otherlv_3= Semicolon
            {
            // InternalErrorModelParser.g:9383:3: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:9384:4: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:9384:4: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:9385:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getFieldPropertyAssociationRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_60); 

            					newLeafNode(otherlv_0, grammarAccess.getFieldPropertyAssociationAccess().getPropertyBasicPropertyCrossReference_0_0());
            				

            }


            }

            otherlv_1=(Token)match(input,EqualsSignGreaterThanSign,FollowSets000.FOLLOW_61); 

            			newLeafNode(otherlv_1, grammarAccess.getFieldPropertyAssociationAccess().getEqualsSignGreaterThanSignKeyword_1());
            		
            // InternalErrorModelParser.g:9400:3: ( (lv_ownedValue_2_0= rulePropertyExpression ) )
            // InternalErrorModelParser.g:9401:4: (lv_ownedValue_2_0= rulePropertyExpression )
            {
            // InternalErrorModelParser.g:9401:4: (lv_ownedValue_2_0= rulePropertyExpression )
            // InternalErrorModelParser.g:9402:5: lv_ownedValue_2_0= rulePropertyExpression
            {

            					newCompositeNode(grammarAccess.getFieldPropertyAssociationAccess().getOwnedValuePropertyExpressionParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_10);
            lv_ownedValue_2_0=rulePropertyExpression();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getFieldPropertyAssociationRule());
            					}
            					set(
            						current,
            						"ownedValue",
            						lv_ownedValue_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.PropertyExpression");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,Semicolon,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getFieldPropertyAssociationAccess().getSemicolonKeyword_3());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleContainmentPathElement"
    // InternalErrorModelParser.g:9427:1: entryRuleContainmentPathElement returns [EObject current=null] : iv_ruleContainmentPathElement= ruleContainmentPathElement EOF ;
    public final EObject entryRuleContainmentPathElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainmentPathElement = null;


        try {
            // InternalErrorModelParser.g:9427:63: (iv_ruleContainmentPathElement= ruleContainmentPathElement EOF )
            // InternalErrorModelParser.g:9428:2: iv_ruleContainmentPathElement= ruleContainmentPathElement EOF
            {
             newCompositeNode(grammarAccess.getContainmentPathElementRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleContainmentPathElement=ruleContainmentPathElement();

            state._fsp--;

             current =iv_ruleContainmentPathElement; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleContainmentPathElement"
    // InternalErrorModelParser.g:9434:1: ruleContainmentPathElement returns [EObject current=null] : ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* ) (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )? ) ;
    public final EObject ruleContainmentPathElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_arrayRange_1_0 = null;

        EObject lv_path_3_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9440:2: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* ) (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )? ) )
            // InternalErrorModelParser.g:9441:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* ) (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )? )
            {
            // InternalErrorModelParser.g:9441:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* ) (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )? )
            // InternalErrorModelParser.g:9442:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* ) (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )?
            {
            // InternalErrorModelParser.g:9442:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )* )
            // InternalErrorModelParser.g:9443:4: ( (otherlv_0= RULE_ID ) ) ( (lv_arrayRange_1_0= ruleArrayRange ) )*
            {
            // InternalErrorModelParser.g:9443:4: ( (otherlv_0= RULE_ID ) )
            // InternalErrorModelParser.g:9444:5: (otherlv_0= RULE_ID )
            {
            // InternalErrorModelParser.g:9444:5: (otherlv_0= RULE_ID )
            // InternalErrorModelParser.g:9445:6: otherlv_0= RULE_ID
            {

            						if (current==null) {
            							current = createModelElement(grammarAccess.getContainmentPathElementRule());
            						}
            					
            otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_152); 

            						newLeafNode(otherlv_0, grammarAccess.getContainmentPathElementAccess().getNamedElementNamedElementCrossReference_0_0_0());
            					

            }


            }

            // InternalErrorModelParser.g:9456:4: ( (lv_arrayRange_1_0= ruleArrayRange ) )*
            loop238:
            do {
                int alt238=2;
                int LA238_0 = input.LA(1);

                if ( (LA238_0==LeftSquareBracket) ) {
                    alt238=1;
                }


                switch (alt238) {
            	case 1 :
            	    // InternalErrorModelParser.g:9457:5: (lv_arrayRange_1_0= ruleArrayRange )
            	    {
            	    // InternalErrorModelParser.g:9457:5: (lv_arrayRange_1_0= ruleArrayRange )
            	    // InternalErrorModelParser.g:9458:6: lv_arrayRange_1_0= ruleArrayRange
            	    {

            	    						newCompositeNode(grammarAccess.getContainmentPathElementAccess().getArrayRangeArrayRangeParserRuleCall_0_1_0());
            	    					
            	    pushFollow(FollowSets000.FOLLOW_152);
            	    lv_arrayRange_1_0=ruleArrayRange();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getContainmentPathElementRule());
            	    						}
            	    						add(
            	    							current,
            	    							"arrayRange",
            	    							lv_arrayRange_1_0,
            	    							"org.osate.xtext.aadl2.properties.Properties.ArrayRange");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }
            	    break;

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


            }

            // InternalErrorModelParser.g:9476:3: (otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) ) )?
            int alt239=2;
            int LA239_0 = input.LA(1);

            if ( (LA239_0==FullStop) ) {
                alt239=1;
            }
            switch (alt239) {
                case 1 :
                    // InternalErrorModelParser.g:9477:4: otherlv_2= FullStop ( (lv_path_3_0= ruleContainmentPathElement ) )
                    {
                    otherlv_2=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                    				newLeafNode(otherlv_2, grammarAccess.getContainmentPathElementAccess().getFullStopKeyword_1_0());
                    			
                    // InternalErrorModelParser.g:9481:4: ( (lv_path_3_0= ruleContainmentPathElement ) )
                    // InternalErrorModelParser.g:9482:5: (lv_path_3_0= ruleContainmentPathElement )
                    {
                    // InternalErrorModelParser.g:9482:5: (lv_path_3_0= ruleContainmentPathElement )
                    // InternalErrorModelParser.g:9483:6: lv_path_3_0= ruleContainmentPathElement
                    {

                    						newCompositeNode(grammarAccess.getContainmentPathElementAccess().getPathContainmentPathElementParserRuleCall_1_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_path_3_0=ruleContainmentPathElement();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getContainmentPathElementRule());
                    						}
                    						set(
                    							current,
                    							"path",
                    							lv_path_3_0,
                    							"org.osate.xtext.aadl2.properties.Properties.ContainmentPathElement");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRulePlusMinus"
    // InternalErrorModelParser.g:9505:1: entryRulePlusMinus returns [String current=null] : iv_rulePlusMinus= rulePlusMinus EOF ;
    public final String entryRulePlusMinus() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlusMinus = null;


        try {
            // InternalErrorModelParser.g:9505:49: (iv_rulePlusMinus= rulePlusMinus EOF )
            // InternalErrorModelParser.g:9506:2: iv_rulePlusMinus= rulePlusMinus EOF
            {
             newCompositeNode(grammarAccess.getPlusMinusRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_rulePlusMinus=rulePlusMinus();

            state._fsp--;

             current =iv_rulePlusMinus.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "rulePlusMinus"
    // InternalErrorModelParser.g:9512:1: rulePlusMinus returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= PlusSign | kw= HyphenMinus ) ;
    public final AntlrDatatypeRuleToken rulePlusMinus() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9518:2: ( (kw= PlusSign | kw= HyphenMinus ) )
            // InternalErrorModelParser.g:9519:2: (kw= PlusSign | kw= HyphenMinus )
            {
            // InternalErrorModelParser.g:9519:2: (kw= PlusSign | kw= HyphenMinus )
            int alt240=2;
            int LA240_0 = input.LA(1);

            if ( (LA240_0==PlusSign) ) {
                alt240=1;
            }
            else if ( (LA240_0==HyphenMinus) ) {
                alt240=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 240, 0, input);

                throw nvae;
            }
            switch (alt240) {
                case 1 :
                    // InternalErrorModelParser.g:9520:3: kw= PlusSign
                    {
                    kw=(Token)match(input,PlusSign,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPlusMinusAccess().getPlusSignKeyword_0());
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:9526:3: kw= HyphenMinus
                    {
                    kw=(Token)match(input,HyphenMinus,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getPlusMinusAccess().getHyphenMinusKeyword_1());
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleStringTerm"
    // InternalErrorModelParser.g:9535:1: entryRuleStringTerm returns [EObject current=null] : iv_ruleStringTerm= ruleStringTerm EOF ;
    public final EObject entryRuleStringTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringTerm = null;


        try {
            // InternalErrorModelParser.g:9535:51: (iv_ruleStringTerm= ruleStringTerm EOF )
            // InternalErrorModelParser.g:9536:2: iv_ruleStringTerm= ruleStringTerm EOF
            {
             newCompositeNode(grammarAccess.getStringTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleStringTerm=ruleStringTerm();

            state._fsp--;

             current =iv_ruleStringTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleStringTerm"
    // InternalErrorModelParser.g:9542:1: ruleStringTerm returns [EObject current=null] : ( (lv_value_0_0= ruleNoQuoteString ) ) ;
    public final EObject ruleStringTerm() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9548:2: ( ( (lv_value_0_0= ruleNoQuoteString ) ) )
            // InternalErrorModelParser.g:9549:2: ( (lv_value_0_0= ruleNoQuoteString ) )
            {
            // InternalErrorModelParser.g:9549:2: ( (lv_value_0_0= ruleNoQuoteString ) )
            // InternalErrorModelParser.g:9550:3: (lv_value_0_0= ruleNoQuoteString )
            {
            // InternalErrorModelParser.g:9550:3: (lv_value_0_0= ruleNoQuoteString )
            // InternalErrorModelParser.g:9551:4: lv_value_0_0= ruleNoQuoteString
            {

            				newCompositeNode(grammarAccess.getStringTermAccess().getValueNoQuoteStringParserRuleCall_0());
            			
            pushFollow(FollowSets000.FOLLOW_2);
            lv_value_0_0=ruleNoQuoteString();

            state._fsp--;


            				if (current==null) {
            					current = createModelElementForParent(grammarAccess.getStringTermRule());
            				}
            				set(
            					current,
            					"value",
            					lv_value_0_0,
            					"org.osate.xtext.aadl2.properties.Properties.NoQuoteString");
            				afterParserOrEnumRuleCall();
            			

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleNoQuoteString"
    // InternalErrorModelParser.g:9571:1: entryRuleNoQuoteString returns [String current=null] : iv_ruleNoQuoteString= ruleNoQuoteString EOF ;
    public final String entryRuleNoQuoteString() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNoQuoteString = null;


        try {
            // InternalErrorModelParser.g:9571:53: (iv_ruleNoQuoteString= ruleNoQuoteString EOF )
            // InternalErrorModelParser.g:9572:2: iv_ruleNoQuoteString= ruleNoQuoteString EOF
            {
             newCompositeNode(grammarAccess.getNoQuoteStringRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleNoQuoteString=ruleNoQuoteString();

            state._fsp--;

             current =iv_ruleNoQuoteString.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleNoQuoteString"
    // InternalErrorModelParser.g:9578:1: ruleNoQuoteString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
    public final AntlrDatatypeRuleToken ruleNoQuoteString() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_STRING_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9584:2: (this_STRING_0= RULE_STRING )
            // InternalErrorModelParser.g:9585:2: this_STRING_0= RULE_STRING
            {
            this_STRING_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_2); 

            		current.merge(this_STRING_0);
            	

            		newLeafNode(this_STRING_0, grammarAccess.getNoQuoteStringAccess().getSTRINGTerminalRuleCall());
            	

            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleArrayRange"
    // InternalErrorModelParser.g:9595:1: entryRuleArrayRange returns [EObject current=null] : iv_ruleArrayRange= ruleArrayRange EOF ;
    public final EObject entryRuleArrayRange() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayRange = null;


        try {
            // InternalErrorModelParser.g:9595:51: (iv_ruleArrayRange= ruleArrayRange EOF )
            // InternalErrorModelParser.g:9596:2: iv_ruleArrayRange= ruleArrayRange EOF
            {
             newCompositeNode(grammarAccess.getArrayRangeRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleArrayRange=ruleArrayRange();

            state._fsp--;

             current =iv_ruleArrayRange; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleArrayRange"
    // InternalErrorModelParser.g:9602:1: ruleArrayRange returns [EObject current=null] : ( () otherlv_1= LeftSquareBracket ( (lv_lowerBound_2_0= ruleINTVALUE ) ) (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )? otherlv_5= RightSquareBracket ) ;
    public final EObject ruleArrayRange() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_lowerBound_2_0 = null;

        AntlrDatatypeRuleToken lv_upperBound_4_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9608:2: ( ( () otherlv_1= LeftSquareBracket ( (lv_lowerBound_2_0= ruleINTVALUE ) ) (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )? otherlv_5= RightSquareBracket ) )
            // InternalErrorModelParser.g:9609:2: ( () otherlv_1= LeftSquareBracket ( (lv_lowerBound_2_0= ruleINTVALUE ) ) (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )? otherlv_5= RightSquareBracket )
            {
            // InternalErrorModelParser.g:9609:2: ( () otherlv_1= LeftSquareBracket ( (lv_lowerBound_2_0= ruleINTVALUE ) ) (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )? otherlv_5= RightSquareBracket )
            // InternalErrorModelParser.g:9610:3: () otherlv_1= LeftSquareBracket ( (lv_lowerBound_2_0= ruleINTVALUE ) ) (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )? otherlv_5= RightSquareBracket
            {
            // InternalErrorModelParser.g:9610:3: ()
            // InternalErrorModelParser.g:9611:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getArrayRangeAccess().getArrayRangeAction_0(),
            					current);
            			

            }

            otherlv_1=(Token)match(input,LeftSquareBracket,FollowSets000.FOLLOW_126); 

            			newLeafNode(otherlv_1, grammarAccess.getArrayRangeAccess().getLeftSquareBracketKeyword_1());
            		
            // InternalErrorModelParser.g:9621:3: ( (lv_lowerBound_2_0= ruleINTVALUE ) )
            // InternalErrorModelParser.g:9622:4: (lv_lowerBound_2_0= ruleINTVALUE )
            {
            // InternalErrorModelParser.g:9622:4: (lv_lowerBound_2_0= ruleINTVALUE )
            // InternalErrorModelParser.g:9623:5: lv_lowerBound_2_0= ruleINTVALUE
            {

            					newCompositeNode(grammarAccess.getArrayRangeAccess().getLowerBoundINTVALUEParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_153);
            lv_lowerBound_2_0=ruleINTVALUE();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getArrayRangeRule());
            					}
            					set(
            						current,
            						"lowerBound",
            						lv_lowerBound_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:9640:3: (otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) ) )?
            int alt241=2;
            int LA241_0 = input.LA(1);

            if ( (LA241_0==FullStopFullStop) ) {
                alt241=1;
            }
            switch (alt241) {
                case 1 :
                    // InternalErrorModelParser.g:9641:4: otherlv_3= FullStopFullStop ( (lv_upperBound_4_0= ruleINTVALUE ) )
                    {
                    otherlv_3=(Token)match(input,FullStopFullStop,FollowSets000.FOLLOW_126); 

                    				newLeafNode(otherlv_3, grammarAccess.getArrayRangeAccess().getFullStopFullStopKeyword_3_0());
                    			
                    // InternalErrorModelParser.g:9645:4: ( (lv_upperBound_4_0= ruleINTVALUE ) )
                    // InternalErrorModelParser.g:9646:5: (lv_upperBound_4_0= ruleINTVALUE )
                    {
                    // InternalErrorModelParser.g:9646:5: (lv_upperBound_4_0= ruleINTVALUE )
                    // InternalErrorModelParser.g:9647:6: lv_upperBound_4_0= ruleINTVALUE
                    {

                    						newCompositeNode(grammarAccess.getArrayRangeAccess().getUpperBoundINTVALUEParserRuleCall_3_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_154);
                    lv_upperBound_4_0=ruleINTVALUE();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getArrayRangeRule());
                    						}
                    						set(
                    							current,
                    							"upperBound",
                    							lv_upperBound_4_0,
                    							"org.osate.xtext.aadl2.properties.Properties.INTVALUE");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,RightSquareBracket,FollowSets000.FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getArrayRangeAccess().getRightSquareBracketKeyword_4());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSignedConstant"
    // InternalErrorModelParser.g:9673:1: entryRuleSignedConstant returns [EObject current=null] : iv_ruleSignedConstant= ruleSignedConstant EOF ;
    public final EObject entryRuleSignedConstant() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignedConstant = null;


        try {
            // InternalErrorModelParser.g:9673:55: (iv_ruleSignedConstant= ruleSignedConstant EOF )
            // InternalErrorModelParser.g:9674:2: iv_ruleSignedConstant= ruleSignedConstant EOF
            {
             newCompositeNode(grammarAccess.getSignedConstantRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSignedConstant=ruleSignedConstant();

            state._fsp--;

             current =iv_ruleSignedConstant; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSignedConstant"
    // InternalErrorModelParser.g:9680:1: ruleSignedConstant returns [EObject current=null] : ( ( (lv_op_0_0= rulePlusMinus ) ) ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) ) ) ;
    public final EObject ruleSignedConstant() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_op_0_0 = null;

        EObject lv_ownedPropertyExpression_1_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9686:2: ( ( ( (lv_op_0_0= rulePlusMinus ) ) ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) ) ) )
            // InternalErrorModelParser.g:9687:2: ( ( (lv_op_0_0= rulePlusMinus ) ) ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) ) )
            {
            // InternalErrorModelParser.g:9687:2: ( ( (lv_op_0_0= rulePlusMinus ) ) ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) ) )
            // InternalErrorModelParser.g:9688:3: ( (lv_op_0_0= rulePlusMinus ) ) ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) )
            {
            // InternalErrorModelParser.g:9688:3: ( (lv_op_0_0= rulePlusMinus ) )
            // InternalErrorModelParser.g:9689:4: (lv_op_0_0= rulePlusMinus )
            {
            // InternalErrorModelParser.g:9689:4: (lv_op_0_0= rulePlusMinus )
            // InternalErrorModelParser.g:9690:5: lv_op_0_0= rulePlusMinus
            {

            					newCompositeNode(grammarAccess.getSignedConstantAccess().getOpPlusMinusParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_155);
            lv_op_0_0=rulePlusMinus();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSignedConstantRule());
            					}
            					set(
            						current,
            						"op",
            						lv_op_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.PlusMinus");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:9707:3: ( (lv_ownedPropertyExpression_1_0= ruleConstantValue ) )
            // InternalErrorModelParser.g:9708:4: (lv_ownedPropertyExpression_1_0= ruleConstantValue )
            {
            // InternalErrorModelParser.g:9708:4: (lv_ownedPropertyExpression_1_0= ruleConstantValue )
            // InternalErrorModelParser.g:9709:5: lv_ownedPropertyExpression_1_0= ruleConstantValue
            {

            					newCompositeNode(grammarAccess.getSignedConstantAccess().getOwnedPropertyExpressionConstantValueParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_ownedPropertyExpression_1_0=ruleConstantValue();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getSignedConstantRule());
            					}
            					add(
            						current,
            						"ownedPropertyExpression",
            						lv_ownedPropertyExpression_1_0,
            						"org.osate.xtext.aadl2.properties.Properties.ConstantValue");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleIntegerTerm"
    // InternalErrorModelParser.g:9730:1: entryRuleIntegerTerm returns [EObject current=null] : iv_ruleIntegerTerm= ruleIntegerTerm EOF ;
    public final EObject entryRuleIntegerTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerTerm = null;


        try {
            // InternalErrorModelParser.g:9730:52: (iv_ruleIntegerTerm= ruleIntegerTerm EOF )
            // InternalErrorModelParser.g:9731:2: iv_ruleIntegerTerm= ruleIntegerTerm EOF
            {
             newCompositeNode(grammarAccess.getIntegerTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleIntegerTerm=ruleIntegerTerm();

            state._fsp--;

             current =iv_ruleIntegerTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleIntegerTerm"
    // InternalErrorModelParser.g:9737:1: ruleIntegerTerm returns [EObject current=null] : ( ( (lv_value_0_0= ruleSignedInt ) ) ( (otherlv_1= RULE_ID ) )? ) ;
    public final EObject ruleIntegerTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_value_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9743:2: ( ( ( (lv_value_0_0= ruleSignedInt ) ) ( (otherlv_1= RULE_ID ) )? ) )
            // InternalErrorModelParser.g:9744:2: ( ( (lv_value_0_0= ruleSignedInt ) ) ( (otherlv_1= RULE_ID ) )? )
            {
            // InternalErrorModelParser.g:9744:2: ( ( (lv_value_0_0= ruleSignedInt ) ) ( (otherlv_1= RULE_ID ) )? )
            // InternalErrorModelParser.g:9745:3: ( (lv_value_0_0= ruleSignedInt ) ) ( (otherlv_1= RULE_ID ) )?
            {
            // InternalErrorModelParser.g:9745:3: ( (lv_value_0_0= ruleSignedInt ) )
            // InternalErrorModelParser.g:9746:4: (lv_value_0_0= ruleSignedInt )
            {
            // InternalErrorModelParser.g:9746:4: (lv_value_0_0= ruleSignedInt )
            // InternalErrorModelParser.g:9747:5: lv_value_0_0= ruleSignedInt
            {

            					newCompositeNode(grammarAccess.getIntegerTermAccess().getValueSignedIntParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_39);
            lv_value_0_0=ruleSignedInt();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getIntegerTermRule());
            					}
            					set(
            						current,
            						"value",
            						lv_value_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.SignedInt");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:9764:3: ( (otherlv_1= RULE_ID ) )?
            int alt242=2;
            int LA242_0 = input.LA(1);

            if ( (LA242_0==RULE_ID) ) {
                alt242=1;
            }
            switch (alt242) {
                case 1 :
                    // InternalErrorModelParser.g:9765:4: (otherlv_1= RULE_ID )
                    {
                    // InternalErrorModelParser.g:9765:4: (otherlv_1= RULE_ID )
                    // InternalErrorModelParser.g:9766:5: otherlv_1= RULE_ID
                    {

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getIntegerTermRule());
                    					}
                    				
                    otherlv_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    					newLeafNode(otherlv_1, grammarAccess.getIntegerTermAccess().getUnitUnitLiteralCrossReference_1_0());
                    				

                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSignedInt"
    // InternalErrorModelParser.g:9781:1: entryRuleSignedInt returns [String current=null] : iv_ruleSignedInt= ruleSignedInt EOF ;
    public final String entryRuleSignedInt() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSignedInt = null;


        try {
            // InternalErrorModelParser.g:9781:49: (iv_ruleSignedInt= ruleSignedInt EOF )
            // InternalErrorModelParser.g:9782:2: iv_ruleSignedInt= ruleSignedInt EOF
            {
             newCompositeNode(grammarAccess.getSignedIntRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSignedInt=ruleSignedInt();

            state._fsp--;

             current =iv_ruleSignedInt.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSignedInt"
    // InternalErrorModelParser.g:9788:1: ruleSignedInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= PlusSign | kw= HyphenMinus )? this_INTEGER_LIT_2= RULE_INTEGER_LIT ) ;
    public final AntlrDatatypeRuleToken ruleSignedInt() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_INTEGER_LIT_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9794:2: ( ( (kw= PlusSign | kw= HyphenMinus )? this_INTEGER_LIT_2= RULE_INTEGER_LIT ) )
            // InternalErrorModelParser.g:9795:2: ( (kw= PlusSign | kw= HyphenMinus )? this_INTEGER_LIT_2= RULE_INTEGER_LIT )
            {
            // InternalErrorModelParser.g:9795:2: ( (kw= PlusSign | kw= HyphenMinus )? this_INTEGER_LIT_2= RULE_INTEGER_LIT )
            // InternalErrorModelParser.g:9796:3: (kw= PlusSign | kw= HyphenMinus )? this_INTEGER_LIT_2= RULE_INTEGER_LIT
            {
            // InternalErrorModelParser.g:9796:3: (kw= PlusSign | kw= HyphenMinus )?
            int alt243=3;
            int LA243_0 = input.LA(1);

            if ( (LA243_0==PlusSign) ) {
                alt243=1;
            }
            else if ( (LA243_0==HyphenMinus) ) {
                alt243=2;
            }
            switch (alt243) {
                case 1 :
                    // InternalErrorModelParser.g:9797:4: kw= PlusSign
                    {
                    kw=(Token)match(input,PlusSign,FollowSets000.FOLLOW_126); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getSignedIntAccess().getPlusSignKeyword_0_0());
                    			

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:9803:4: kw= HyphenMinus
                    {
                    kw=(Token)match(input,HyphenMinus,FollowSets000.FOLLOW_126); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getSignedIntAccess().getHyphenMinusKeyword_0_1());
                    			

                    }
                    break;

            }

            this_INTEGER_LIT_2=(Token)match(input,RULE_INTEGER_LIT,FollowSets000.FOLLOW_2); 

            			current.merge(this_INTEGER_LIT_2);
            		

            			newLeafNode(this_INTEGER_LIT_2, grammarAccess.getSignedIntAccess().getINTEGER_LITTerminalRuleCall_1());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleRealTerm"
    // InternalErrorModelParser.g:9820:1: entryRuleRealTerm returns [EObject current=null] : iv_ruleRealTerm= ruleRealTerm EOF ;
    public final EObject entryRuleRealTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealTerm = null;


        try {
            // InternalErrorModelParser.g:9820:49: (iv_ruleRealTerm= ruleRealTerm EOF )
            // InternalErrorModelParser.g:9821:2: iv_ruleRealTerm= ruleRealTerm EOF
            {
             newCompositeNode(grammarAccess.getRealTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleRealTerm=ruleRealTerm();

            state._fsp--;

             current =iv_ruleRealTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleRealTerm"
    // InternalErrorModelParser.g:9827:1: ruleRealTerm returns [EObject current=null] : ( ( (lv_value_0_0= ruleSignedReal ) ) ( (otherlv_1= RULE_ID ) )? ) ;
    public final EObject ruleRealTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_value_0_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9833:2: ( ( ( (lv_value_0_0= ruleSignedReal ) ) ( (otherlv_1= RULE_ID ) )? ) )
            // InternalErrorModelParser.g:9834:2: ( ( (lv_value_0_0= ruleSignedReal ) ) ( (otherlv_1= RULE_ID ) )? )
            {
            // InternalErrorModelParser.g:9834:2: ( ( (lv_value_0_0= ruleSignedReal ) ) ( (otherlv_1= RULE_ID ) )? )
            // InternalErrorModelParser.g:9835:3: ( (lv_value_0_0= ruleSignedReal ) ) ( (otherlv_1= RULE_ID ) )?
            {
            // InternalErrorModelParser.g:9835:3: ( (lv_value_0_0= ruleSignedReal ) )
            // InternalErrorModelParser.g:9836:4: (lv_value_0_0= ruleSignedReal )
            {
            // InternalErrorModelParser.g:9836:4: (lv_value_0_0= ruleSignedReal )
            // InternalErrorModelParser.g:9837:5: lv_value_0_0= ruleSignedReal
            {

            					newCompositeNode(grammarAccess.getRealTermAccess().getValueSignedRealParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_39);
            lv_value_0_0=ruleSignedReal();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getRealTermRule());
            					}
            					set(
            						current,
            						"value",
            						lv_value_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.SignedReal");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:9854:3: ( (otherlv_1= RULE_ID ) )?
            int alt244=2;
            int LA244_0 = input.LA(1);

            if ( (LA244_0==RULE_ID) ) {
                alt244=1;
            }
            switch (alt244) {
                case 1 :
                    // InternalErrorModelParser.g:9855:4: (otherlv_1= RULE_ID )
                    {
                    // InternalErrorModelParser.g:9855:4: (otherlv_1= RULE_ID )
                    // InternalErrorModelParser.g:9856:5: otherlv_1= RULE_ID
                    {

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getRealTermRule());
                    					}
                    				
                    otherlv_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    					newLeafNode(otherlv_1, grammarAccess.getRealTermAccess().getUnitUnitLiteralCrossReference_1_0());
                    				

                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSignedReal"
    // InternalErrorModelParser.g:9871:1: entryRuleSignedReal returns [String current=null] : iv_ruleSignedReal= ruleSignedReal EOF ;
    public final String entryRuleSignedReal() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSignedReal = null;


        try {
            // InternalErrorModelParser.g:9871:50: (iv_ruleSignedReal= ruleSignedReal EOF )
            // InternalErrorModelParser.g:9872:2: iv_ruleSignedReal= ruleSignedReal EOF
            {
             newCompositeNode(grammarAccess.getSignedRealRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSignedReal=ruleSignedReal();

            state._fsp--;

             current =iv_ruleSignedReal.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSignedReal"
    // InternalErrorModelParser.g:9878:1: ruleSignedReal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= PlusSign | kw= HyphenMinus )? this_REAL_LIT_2= RULE_REAL_LIT ) ;
    public final AntlrDatatypeRuleToken ruleSignedReal() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_REAL_LIT_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:9884:2: ( ( (kw= PlusSign | kw= HyphenMinus )? this_REAL_LIT_2= RULE_REAL_LIT ) )
            // InternalErrorModelParser.g:9885:2: ( (kw= PlusSign | kw= HyphenMinus )? this_REAL_LIT_2= RULE_REAL_LIT )
            {
            // InternalErrorModelParser.g:9885:2: ( (kw= PlusSign | kw= HyphenMinus )? this_REAL_LIT_2= RULE_REAL_LIT )
            // InternalErrorModelParser.g:9886:3: (kw= PlusSign | kw= HyphenMinus )? this_REAL_LIT_2= RULE_REAL_LIT
            {
            // InternalErrorModelParser.g:9886:3: (kw= PlusSign | kw= HyphenMinus )?
            int alt245=3;
            int LA245_0 = input.LA(1);

            if ( (LA245_0==PlusSign) ) {
                alt245=1;
            }
            else if ( (LA245_0==HyphenMinus) ) {
                alt245=2;
            }
            switch (alt245) {
                case 1 :
                    // InternalErrorModelParser.g:9887:4: kw= PlusSign
                    {
                    kw=(Token)match(input,PlusSign,FollowSets000.FOLLOW_156); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getSignedRealAccess().getPlusSignKeyword_0_0());
                    			

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:9893:4: kw= HyphenMinus
                    {
                    kw=(Token)match(input,HyphenMinus,FollowSets000.FOLLOW_156); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getSignedRealAccess().getHyphenMinusKeyword_0_1());
                    			

                    }
                    break;

            }

            this_REAL_LIT_2=(Token)match(input,RULE_REAL_LIT,FollowSets000.FOLLOW_2); 

            			current.merge(this_REAL_LIT_2);
            		

            			newLeafNode(this_REAL_LIT_2, grammarAccess.getSignedRealAccess().getREAL_LITTerminalRuleCall_1());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleNumericRangeTerm"
    // InternalErrorModelParser.g:9910:1: entryRuleNumericRangeTerm returns [EObject current=null] : iv_ruleNumericRangeTerm= ruleNumericRangeTerm EOF ;
    public final EObject entryRuleNumericRangeTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumericRangeTerm = null;


        try {
            // InternalErrorModelParser.g:9910:57: (iv_ruleNumericRangeTerm= ruleNumericRangeTerm EOF )
            // InternalErrorModelParser.g:9911:2: iv_ruleNumericRangeTerm= ruleNumericRangeTerm EOF
            {
             newCompositeNode(grammarAccess.getNumericRangeTermRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleNumericRangeTerm=ruleNumericRangeTerm();

            state._fsp--;

             current =iv_ruleNumericRangeTerm; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleNumericRangeTerm"
    // InternalErrorModelParser.g:9917:1: ruleNumericRangeTerm returns [EObject current=null] : ( ( (lv_minimum_0_0= ruleNumAlt ) ) otherlv_1= FullStopFullStop ( (lv_maximum_2_0= ruleNumAlt ) ) (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )? ) ;
    public final EObject ruleNumericRangeTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_minimum_0_0 = null;

        EObject lv_maximum_2_0 = null;

        EObject lv_delta_4_0 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:9923:2: ( ( ( (lv_minimum_0_0= ruleNumAlt ) ) otherlv_1= FullStopFullStop ( (lv_maximum_2_0= ruleNumAlt ) ) (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )? ) )
            // InternalErrorModelParser.g:9924:2: ( ( (lv_minimum_0_0= ruleNumAlt ) ) otherlv_1= FullStopFullStop ( (lv_maximum_2_0= ruleNumAlt ) ) (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )? )
            {
            // InternalErrorModelParser.g:9924:2: ( ( (lv_minimum_0_0= ruleNumAlt ) ) otherlv_1= FullStopFullStop ( (lv_maximum_2_0= ruleNumAlt ) ) (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )? )
            // InternalErrorModelParser.g:9925:3: ( (lv_minimum_0_0= ruleNumAlt ) ) otherlv_1= FullStopFullStop ( (lv_maximum_2_0= ruleNumAlt ) ) (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )?
            {
            // InternalErrorModelParser.g:9925:3: ( (lv_minimum_0_0= ruleNumAlt ) )
            // InternalErrorModelParser.g:9926:4: (lv_minimum_0_0= ruleNumAlt )
            {
            // InternalErrorModelParser.g:9926:4: (lv_minimum_0_0= ruleNumAlt )
            // InternalErrorModelParser.g:9927:5: lv_minimum_0_0= ruleNumAlt
            {

            					newCompositeNode(grammarAccess.getNumericRangeTermAccess().getMinimumNumAltParserRuleCall_0_0());
            				
            pushFollow(FollowSets000.FOLLOW_157);
            lv_minimum_0_0=ruleNumAlt();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNumericRangeTermRule());
            					}
            					set(
            						current,
            						"minimum",
            						lv_minimum_0_0,
            						"org.osate.xtext.aadl2.properties.Properties.NumAlt");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_1=(Token)match(input,FullStopFullStop,FollowSets000.FOLLOW_155); 

            			newLeafNode(otherlv_1, grammarAccess.getNumericRangeTermAccess().getFullStopFullStopKeyword_1());
            		
            // InternalErrorModelParser.g:9948:3: ( (lv_maximum_2_0= ruleNumAlt ) )
            // InternalErrorModelParser.g:9949:4: (lv_maximum_2_0= ruleNumAlt )
            {
            // InternalErrorModelParser.g:9949:4: (lv_maximum_2_0= ruleNumAlt )
            // InternalErrorModelParser.g:9950:5: lv_maximum_2_0= ruleNumAlt
            {

            					newCompositeNode(grammarAccess.getNumericRangeTermAccess().getMaximumNumAltParserRuleCall_2_0());
            				
            pushFollow(FollowSets000.FOLLOW_158);
            lv_maximum_2_0=ruleNumAlt();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNumericRangeTermRule());
            					}
            					set(
            						current,
            						"maximum",
            						lv_maximum_2_0,
            						"org.osate.xtext.aadl2.properties.Properties.NumAlt");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalErrorModelParser.g:9967:3: (otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) ) )?
            int alt246=2;
            int LA246_0 = input.LA(1);

            if ( (LA246_0==Delta) ) {
                alt246=1;
            }
            switch (alt246) {
                case 1 :
                    // InternalErrorModelParser.g:9968:4: otherlv_3= Delta ( (lv_delta_4_0= ruleNumAlt ) )
                    {
                    otherlv_3=(Token)match(input,Delta,FollowSets000.FOLLOW_155); 

                    				newLeafNode(otherlv_3, grammarAccess.getNumericRangeTermAccess().getDeltaKeyword_3_0());
                    			
                    // InternalErrorModelParser.g:9972:4: ( (lv_delta_4_0= ruleNumAlt ) )
                    // InternalErrorModelParser.g:9973:5: (lv_delta_4_0= ruleNumAlt )
                    {
                    // InternalErrorModelParser.g:9973:5: (lv_delta_4_0= ruleNumAlt )
                    // InternalErrorModelParser.g:9974:6: lv_delta_4_0= ruleNumAlt
                    {

                    						newCompositeNode(grammarAccess.getNumericRangeTermAccess().getDeltaNumAltParserRuleCall_3_1_0());
                    					
                    pushFollow(FollowSets000.FOLLOW_2);
                    lv_delta_4_0=ruleNumAlt();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getNumericRangeTermRule());
                    						}
                    						set(
                    							current,
                    							"delta",
                    							lv_delta_4_0,
                    							"org.osate.xtext.aadl2.properties.Properties.NumAlt");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleNumAlt"
    // InternalErrorModelParser.g:9996:1: entryRuleNumAlt returns [EObject current=null] : iv_ruleNumAlt= ruleNumAlt EOF ;
    public final EObject entryRuleNumAlt() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumAlt = null;


        try {
            // InternalErrorModelParser.g:9996:47: (iv_ruleNumAlt= ruleNumAlt EOF )
            // InternalErrorModelParser.g:9997:2: iv_ruleNumAlt= ruleNumAlt EOF
            {
             newCompositeNode(grammarAccess.getNumAltRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleNumAlt=ruleNumAlt();

            state._fsp--;

             current =iv_ruleNumAlt; 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleNumAlt"
    // InternalErrorModelParser.g:10003:1: ruleNumAlt returns [EObject current=null] : (this_RealTerm_0= ruleRealTerm | this_IntegerTerm_1= ruleIntegerTerm | this_SignedConstant_2= ruleSignedConstant | this_ConstantValue_3= ruleConstantValue ) ;
    public final EObject ruleNumAlt() throws RecognitionException {
        EObject current = null;

        EObject this_RealTerm_0 = null;

        EObject this_IntegerTerm_1 = null;

        EObject this_SignedConstant_2 = null;

        EObject this_ConstantValue_3 = null;



        	enterRule();

        try {
            // InternalErrorModelParser.g:10009:2: ( (this_RealTerm_0= ruleRealTerm | this_IntegerTerm_1= ruleIntegerTerm | this_SignedConstant_2= ruleSignedConstant | this_ConstantValue_3= ruleConstantValue ) )
            // InternalErrorModelParser.g:10010:2: (this_RealTerm_0= ruleRealTerm | this_IntegerTerm_1= ruleIntegerTerm | this_SignedConstant_2= ruleSignedConstant | this_ConstantValue_3= ruleConstantValue )
            {
            // InternalErrorModelParser.g:10010:2: (this_RealTerm_0= ruleRealTerm | this_IntegerTerm_1= ruleIntegerTerm | this_SignedConstant_2= ruleSignedConstant | this_ConstantValue_3= ruleConstantValue )
            int alt247=4;
            switch ( input.LA(1) ) {
            case PlusSign:
                {
                switch ( input.LA(2) ) {
                case RULE_REAL_LIT:
                    {
                    alt247=1;
                    }
                    break;
                case RULE_INTEGER_LIT:
                    {
                    alt247=2;
                    }
                    break;
                case RULE_ID:
                    {
                    alt247=3;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 247, 1, input);

                    throw nvae;
                }

                }
                break;
            case HyphenMinus:
                {
                switch ( input.LA(2) ) {
                case RULE_REAL_LIT:
                    {
                    alt247=1;
                    }
                    break;
                case RULE_INTEGER_LIT:
                    {
                    alt247=2;
                    }
                    break;
                case RULE_ID:
                    {
                    alt247=3;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 247, 2, input);

                    throw nvae;
                }

                }
                break;
            case RULE_REAL_LIT:
                {
                alt247=1;
                }
                break;
            case RULE_INTEGER_LIT:
                {
                alt247=2;
                }
                break;
            case RULE_ID:
                {
                alt247=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 247, 0, input);

                throw nvae;
            }

            switch (alt247) {
                case 1 :
                    // InternalErrorModelParser.g:10011:3: this_RealTerm_0= ruleRealTerm
                    {

                    			newCompositeNode(grammarAccess.getNumAltAccess().getRealTermParserRuleCall_0());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_RealTerm_0=ruleRealTerm();

                    state._fsp--;


                    			current = this_RealTerm_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalErrorModelParser.g:10020:3: this_IntegerTerm_1= ruleIntegerTerm
                    {

                    			newCompositeNode(grammarAccess.getNumAltAccess().getIntegerTermParserRuleCall_1());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_IntegerTerm_1=ruleIntegerTerm();

                    state._fsp--;


                    			current = this_IntegerTerm_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalErrorModelParser.g:10029:3: this_SignedConstant_2= ruleSignedConstant
                    {

                    			newCompositeNode(grammarAccess.getNumAltAccess().getSignedConstantParserRuleCall_2());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_SignedConstant_2=ruleSignedConstant();

                    state._fsp--;


                    			current = this_SignedConstant_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 4 :
                    // InternalErrorModelParser.g:10038:3: this_ConstantValue_3= ruleConstantValue
                    {

                    			newCompositeNode(grammarAccess.getNumAltAccess().getConstantValueParserRuleCall_3());
                    		
                    pushFollow(FollowSets000.FOLLOW_2);
                    this_ConstantValue_3=ruleConstantValue();

                    state._fsp--;


                    			current = this_ConstantValue_3;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleAppliesToKeywords"
    // InternalErrorModelParser.g:10050:1: entryRuleAppliesToKeywords returns [String current=null] : iv_ruleAppliesToKeywords= ruleAppliesToKeywords EOF ;
    public final String entryRuleAppliesToKeywords() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleAppliesToKeywords = null;


        try {
            // InternalErrorModelParser.g:10050:57: (iv_ruleAppliesToKeywords= ruleAppliesToKeywords EOF )
            // InternalErrorModelParser.g:10051:2: iv_ruleAppliesToKeywords= ruleAppliesToKeywords EOF
            {
             newCompositeNode(grammarAccess.getAppliesToKeywordsRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleAppliesToKeywords=ruleAppliesToKeywords();

            state._fsp--;

             current =iv_ruleAppliesToKeywords.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleAppliesToKeywords"
    // InternalErrorModelParser.g:10057:1: ruleAppliesToKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= Applies kw= To ) ;
    public final AntlrDatatypeRuleToken ruleAppliesToKeywords() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10063:2: ( (kw= Applies kw= To ) )
            // InternalErrorModelParser.g:10064:2: (kw= Applies kw= To )
            {
            // InternalErrorModelParser.g:10064:2: (kw= Applies kw= To )
            // InternalErrorModelParser.g:10065:3: kw= Applies kw= To
            {
            kw=(Token)match(input,Applies,FollowSets000.FOLLOW_63); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getAppliesToKeywordsAccess().getAppliesKeyword_0());
            		
            kw=(Token)match(input,To,FollowSets000.FOLLOW_2); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getAppliesToKeywordsAccess().getToKeyword_1());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleInBindingKeywords"
    // InternalErrorModelParser.g:10079:1: entryRuleInBindingKeywords returns [String current=null] : iv_ruleInBindingKeywords= ruleInBindingKeywords EOF ;
    public final String entryRuleInBindingKeywords() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleInBindingKeywords = null;


        try {
            // InternalErrorModelParser.g:10079:57: (iv_ruleInBindingKeywords= ruleInBindingKeywords EOF )
            // InternalErrorModelParser.g:10080:2: iv_ruleInBindingKeywords= ruleInBindingKeywords EOF
            {
             newCompositeNode(grammarAccess.getInBindingKeywordsRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleInBindingKeywords=ruleInBindingKeywords();

            state._fsp--;

             current =iv_ruleInBindingKeywords.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleInBindingKeywords"
    // InternalErrorModelParser.g:10086:1: ruleInBindingKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= In kw= Binding ) ;
    public final AntlrDatatypeRuleToken ruleInBindingKeywords() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10092:2: ( (kw= In kw= Binding ) )
            // InternalErrorModelParser.g:10093:2: (kw= In kw= Binding )
            {
            // InternalErrorModelParser.g:10093:2: (kw= In kw= Binding )
            // InternalErrorModelParser.g:10094:3: kw= In kw= Binding
            {
            kw=(Token)match(input,In,FollowSets000.FOLLOW_159); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getInBindingKeywordsAccess().getInKeyword_0());
            		
            kw=(Token)match(input,Binding,FollowSets000.FOLLOW_2); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getInBindingKeywordsAccess().getBindingKeyword_1());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleInModesKeywords"
    // InternalErrorModelParser.g:10108:1: entryRuleInModesKeywords returns [String current=null] : iv_ruleInModesKeywords= ruleInModesKeywords EOF ;
    public final String entryRuleInModesKeywords() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleInModesKeywords = null;


        try {
            // InternalErrorModelParser.g:10108:55: (iv_ruleInModesKeywords= ruleInModesKeywords EOF )
            // InternalErrorModelParser.g:10109:2: iv_ruleInModesKeywords= ruleInModesKeywords EOF
            {
             newCompositeNode(grammarAccess.getInModesKeywordsRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleInModesKeywords=ruleInModesKeywords();

            state._fsp--;

             current =iv_ruleInModesKeywords.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleInModesKeywords"
    // InternalErrorModelParser.g:10115:1: ruleInModesKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= In kw= Modes ) ;
    public final AntlrDatatypeRuleToken ruleInModesKeywords() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10121:2: ( (kw= In kw= Modes ) )
            // InternalErrorModelParser.g:10122:2: (kw= In kw= Modes )
            {
            // InternalErrorModelParser.g:10122:2: (kw= In kw= Modes )
            // InternalErrorModelParser.g:10123:3: kw= In kw= Modes
            {
            kw=(Token)match(input,In,FollowSets000.FOLLOW_138); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getInModesKeywordsAccess().getInKeyword_0());
            		
            kw=(Token)match(input,Modes,FollowSets000.FOLLOW_2); 

            			current.merge(kw);
            			newLeafNode(kw, grammarAccess.getInModesKeywordsAccess().getModesKeyword_1());
            		

            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleINTVALUE"
    // InternalErrorModelParser.g:10137:1: entryRuleINTVALUE returns [String current=null] : iv_ruleINTVALUE= ruleINTVALUE EOF ;
    public final String entryRuleINTVALUE() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleINTVALUE = null;


        try {
            // InternalErrorModelParser.g:10137:48: (iv_ruleINTVALUE= ruleINTVALUE EOF )
            // InternalErrorModelParser.g:10138:2: iv_ruleINTVALUE= ruleINTVALUE EOF
            {
             newCompositeNode(grammarAccess.getINTVALUERule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleINTVALUE=ruleINTVALUE();

            state._fsp--;

             current =iv_ruleINTVALUE.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleINTVALUE"
    // InternalErrorModelParser.g:10144:1: ruleINTVALUE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_INTEGER_LIT_0= RULE_INTEGER_LIT ;
    public final AntlrDatatypeRuleToken ruleINTVALUE() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_INTEGER_LIT_0=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10150:2: (this_INTEGER_LIT_0= RULE_INTEGER_LIT )
            // InternalErrorModelParser.g:10151:2: this_INTEGER_LIT_0= RULE_INTEGER_LIT
            {
            this_INTEGER_LIT_0=(Token)match(input,RULE_INTEGER_LIT,FollowSets000.FOLLOW_2); 

            		current.merge(this_INTEGER_LIT_0);
            	

            		newLeafNode(this_INTEGER_LIT_0, grammarAccess.getINTVALUEAccess().getINTEGER_LITTerminalRuleCall());
            	

            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQPREF"
    // InternalErrorModelParser.g:10161:1: entryRuleQPREF returns [String current=null] : iv_ruleQPREF= ruleQPREF EOF ;
    public final String entryRuleQPREF() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQPREF = null;


        try {
            // InternalErrorModelParser.g:10161:45: (iv_ruleQPREF= ruleQPREF EOF )
            // InternalErrorModelParser.g:10162:2: iv_ruleQPREF= ruleQPREF EOF
            {
             newCompositeNode(grammarAccess.getQPREFRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQPREF=ruleQPREF();

            state._fsp--;

             current =iv_ruleQPREF.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQPREF"
    // InternalErrorModelParser.g:10168:1: ruleQPREF returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )? ) ;
    public final AntlrDatatypeRuleToken ruleQPREF() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10174:2: ( (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )? ) )
            // InternalErrorModelParser.g:10175:2: (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )? )
            {
            // InternalErrorModelParser.g:10175:2: (this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )? )
            // InternalErrorModelParser.g:10176:3: this_ID_0= RULE_ID (kw= ColonColon this_ID_2= RULE_ID )?
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_144); 

            			current.merge(this_ID_0);
            		

            			newLeafNode(this_ID_0, grammarAccess.getQPREFAccess().getIDTerminalRuleCall_0());
            		
            // InternalErrorModelParser.g:10183:3: (kw= ColonColon this_ID_2= RULE_ID )?
            int alt248=2;
            int LA248_0 = input.LA(1);

            if ( (LA248_0==ColonColon) ) {
                alt248=1;
            }
            switch (alt248) {
                case 1 :
                    // InternalErrorModelParser.g:10184:4: kw= ColonColon this_ID_2= RULE_ID
                    {
                    kw=(Token)match(input,ColonColon,FollowSets000.FOLLOW_5); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getQPREFAccess().getColonColonKeyword_1_0());
                    			
                    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    				current.merge(this_ID_2);
                    			

                    				newLeafNode(this_ID_2, grammarAccess.getQPREFAccess().getIDTerminalRuleCall_1_1());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleQCREF"
    // InternalErrorModelParser.g:10201:1: entryRuleQCREF returns [String current=null] : iv_ruleQCREF= ruleQCREF EOF ;
    public final String entryRuleQCREF() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQCREF = null;


        try {
            // InternalErrorModelParser.g:10201:45: (iv_ruleQCREF= ruleQCREF EOF )
            // InternalErrorModelParser.g:10202:2: iv_ruleQCREF= ruleQCREF EOF
            {
             newCompositeNode(grammarAccess.getQCREFRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleQCREF=ruleQCREF();

            state._fsp--;

             current =iv_ruleQCREF.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleQCREF"
    // InternalErrorModelParser.g:10208:1: ruleQCREF returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_ID_0= RULE_ID kw= ColonColon )* this_ID_2= RULE_ID (kw= FullStop this_ID_4= RULE_ID )? ) ;
    public final AntlrDatatypeRuleToken ruleQCREF() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;
        Token this_ID_4=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10214:2: ( ( (this_ID_0= RULE_ID kw= ColonColon )* this_ID_2= RULE_ID (kw= FullStop this_ID_4= RULE_ID )? ) )
            // InternalErrorModelParser.g:10215:2: ( (this_ID_0= RULE_ID kw= ColonColon )* this_ID_2= RULE_ID (kw= FullStop this_ID_4= RULE_ID )? )
            {
            // InternalErrorModelParser.g:10215:2: ( (this_ID_0= RULE_ID kw= ColonColon )* this_ID_2= RULE_ID (kw= FullStop this_ID_4= RULE_ID )? )
            // InternalErrorModelParser.g:10216:3: (this_ID_0= RULE_ID kw= ColonColon )* this_ID_2= RULE_ID (kw= FullStop this_ID_4= RULE_ID )?
            {
            // InternalErrorModelParser.g:10216:3: (this_ID_0= RULE_ID kw= ColonColon )*
            loop249:
            do {
                int alt249=2;
                int LA249_0 = input.LA(1);

                if ( (LA249_0==RULE_ID) ) {
                    int LA249_1 = input.LA(2);

                    if ( (LA249_1==ColonColon) ) {
                        alt249=1;
                    }


                }


                switch (alt249) {
            	case 1 :
            	    // InternalErrorModelParser.g:10217:4: this_ID_0= RULE_ID kw= ColonColon
            	    {
            	    this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_160); 

            	    				current.merge(this_ID_0);
            	    			

            	    				newLeafNode(this_ID_0, grammarAccess.getQCREFAccess().getIDTerminalRuleCall_0_0());
            	    			
            	    kw=(Token)match(input,ColonColon,FollowSets000.FOLLOW_5); 

            	    				current.merge(kw);
            	    				newLeafNode(kw, grammarAccess.getQCREFAccess().getColonColonKeyword_0_1());
            	    			

            	    }
            	    break;

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

            this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_66); 

            			current.merge(this_ID_2);
            		

            			newLeafNode(this_ID_2, grammarAccess.getQCREFAccess().getIDTerminalRuleCall_1());
            		
            // InternalErrorModelParser.g:10237:3: (kw= FullStop this_ID_4= RULE_ID )?
            int alt250=2;
            int LA250_0 = input.LA(1);

            if ( (LA250_0==FullStop) ) {
                alt250=1;
            }
            switch (alt250) {
                case 1 :
                    // InternalErrorModelParser.g:10238:4: kw= FullStop this_ID_4= RULE_ID
                    {
                    kw=(Token)match(input,FullStop,FollowSets000.FOLLOW_5); 

                    				current.merge(kw);
                    				newLeafNode(kw, grammarAccess.getQCREFAccess().getFullStopKeyword_2_0());
                    			
                    this_ID_4=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    				current.merge(this_ID_4);
                    			

                    				newLeafNode(this_ID_4, grammarAccess.getQCREFAccess().getIDTerminalRuleCall_2_1());
                    			

                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

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


    // $ANTLR start "entryRuleSTAR"
    // InternalErrorModelParser.g:10255:1: entryRuleSTAR returns [String current=null] : iv_ruleSTAR= ruleSTAR EOF ;
    public final String entryRuleSTAR() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSTAR = null;


        try {
            // InternalErrorModelParser.g:10255:44: (iv_ruleSTAR= ruleSTAR EOF )
            // InternalErrorModelParser.g:10256:2: iv_ruleSTAR= ruleSTAR EOF
            {
             newCompositeNode(grammarAccess.getSTARRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            iv_ruleSTAR=ruleSTAR();

            state._fsp--;

             current =iv_ruleSTAR.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }

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


    // $ANTLR start "ruleSTAR"
    // InternalErrorModelParser.g:10262:1: ruleSTAR returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= Asterisk ;
    public final AntlrDatatypeRuleToken ruleSTAR() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalErrorModelParser.g:10268:2: (kw= Asterisk )
            // InternalErrorModelParser.g:10269:2: kw= Asterisk
            {
            kw=(Token)match(input,Asterisk,FollowSets000.FOLLOW_2); 

            		current.merge(kw);
            		newLeafNode(kw, grammarAccess.getSTARAccess().getAsteriskKeyword());
            	

            }


            	leaveRule();

        }

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

    // Delegated rules


    protected DFA233 dfa233 = new DFA233(this);
    static final String dfa_1s = "\25\uffff";
    static final String dfa_2s = "\10\uffff\1\17\1\21\1\23\3\uffff\1\17\1\uffff\1\21\3\uffff\1\23";
    static final String dfa_3s = "\1\11\5\uffff\2\142\3\26\3\uffff\1\26\1\uffff\1\26\1\uffff\1\152\1\uffff\1\26";
    static final String dfa_4s = "\1\152\5\uffff\4\152\1\132\3\uffff\1\132\1\uffff\1\132\1\uffff\1\152\1\uffff\1\132";
    static final String dfa_5s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\5\uffff\1\11\1\12\1\6\1\uffff\1\7\1\uffff\1\10\1\uffff\1\13\1\uffff";
    static final String dfa_6s = "\25\uffff}>";
    static final String[] dfa_7s = {
            "\1\3\6\uffff\1\2\7\uffff\1\4\25\uffff\1\14\12\uffff\1\14\30\uffff\1\13\2\uffff\1\6\1\uffff\1\7\4\uffff\1\1\5\uffff\1\11\3\uffff\1\10\2\uffff\1\5\1\12",
            "",
            "",
            "",
            "",
            "",
            "\1\11\3\uffff\1\10\3\uffff\1\15",
            "\1\11\3\uffff\1\10\3\uffff\1\15",
            "\1\17\63\uffff\1\15\3\uffff\1\17\4\uffff\1\17\2\uffff\1\17\3\uffff\1\17\17\uffff\1\16",
            "\1\21\63\uffff\1\15\3\uffff\1\21\4\uffff\1\21\2\uffff\1\21\3\uffff\1\21\17\uffff\1\20",
            "\1\23\63\uffff\1\15\1\22\2\uffff\1\23\4\uffff\1\23\2\uffff\1\23\3\uffff\1\23",
            "",
            "",
            "",
            "\1\17\63\uffff\1\15\3\uffff\1\17\4\uffff\1\17\2\uffff\1\17\3\uffff\1\17",
            "",
            "\1\21\63\uffff\1\15\3\uffff\1\21\4\uffff\1\21\2\uffff\1\21\3\uffff\1\21",
            "",
            "\1\24",
            "",
            "\1\23\63\uffff\1\15\3\uffff\1\23\4\uffff\1\23\2\uffff\1\23\3\uffff\1\23"
    };

    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);

    class DFA233 extends DFA {

        public DFA233(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 233;
            this.eot = dfa_1;
            this.eof = dfa_2;
            this.min = dfa_3;
            this.max = dfa_4;
            this.accept = dfa_5;
            this.special = dfa_6;
            this.transition = dfa_7;
        }
        public String getDescription() {
            return "8880:2: (this_RecordTerm_0= ruleRecordTerm | this_ReferenceTerm_1= ruleReferenceTerm | this_ComponentClassifierTerm_2= ruleComponentClassifierTerm | this_ComputedTerm_3= ruleComputedTerm | this_StringTerm_4= ruleStringTerm | this_NumericRangeTerm_5= ruleNumericRangeTerm | this_RealTerm_6= ruleRealTerm | this_IntegerTerm_7= ruleIntegerTerm | this_ListTerm_8= ruleListTerm | this_BooleanLiteral_9= ruleBooleanLiteral | this_LiteralorReferenceTerm_10= ruleLiteralorReferenceTerm )";
        }
    }
 

    
    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[]{0x0000000000020002L});
        public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0010000000000000L});
        public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
        public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
        public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000100000007482L,0x0000000000000040L});
        public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0400000000000000L});
        public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000040L});
        public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
        public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000100000007482L});
        public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000800500888400L,0x0000040000000004L});
        public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000004L});
        public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000007482L});
        public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000100000000000L});
        public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0020000200000920L,0x0000000000000044L});
        public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0020000200000920L,0x0000000000000004L});
        public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0020000000000920L,0x0000040000000004L});
        public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000001L});
        public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0020000000000820L,0x0000040000000005L});
        public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0020000000000800L,0x0000040000000005L});
        public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0020000000000000L,0x0000040000000005L});
        public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000005482L});
        public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000004L});
        public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000040010000000L});
        public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000040010000004L});
        public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000001482L});
        public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000044L});
        public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000400L});
        public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000001082L});
        public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0002000000000000L});
        public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000001002L});
        public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
        public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000100000007480L,0x0000000000000044L});
        public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000100000007480L,0x0000000000000004L});
        public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000007480L,0x0000000000000004L});
        public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000005480L,0x0000000000000004L});
        public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000001480L,0x0000000000000004L});
        public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000001080L,0x0000000000000004L});
        public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000001000L,0x0000000000000004L});
        public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000002001000L,0x0000040000000044L});
        public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000002001000L,0x0000040000000004L});
        public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x1000000000000000L,0x0000000000400000L});
        public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000001000L,0x0000040000000004L});
        public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0400100000000002L});
        public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0400000000000002L});
        public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000004000000000L});
        public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000040000000000L});
        public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
        public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x2400100000000000L});
        public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x2400000000000000L});
        public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
        public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
        public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0200400001010200L,0x0000064410A40000L});
        public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000400000L,0x0000000004400000L});
        public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
        public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000500888400L,0x0000040040000000L});
        public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
        public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
        public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000080000000L,0x0000000002000000L});
        public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000002000000L});
        public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
        public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
        public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000100400000L});
        public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
        public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000010000000L});
        public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
        public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000041L});
        public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000045L});
        public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
        public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x8000000000000000L,0x0000000080000000L});
        public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x8000000000000000L});
        public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000040L});
        public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000044L});
        public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
        public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
        public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004018L});
        public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000080L});
        public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000500888400L,0x0000040000000000L});
        public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000010000000000L});
        public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000500888400L,0x0000040000000001L});
        public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0800000000000000L,0x0000000084002040L});
        public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0800000000000000L,0x0000000004002000L});
        public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0000060080000000L});
        public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000000084002000L});
        public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000004002000L});
        public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000000L});
        public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0100000000000000L});
        public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000084002040L});
        public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0040000000000000L});
        public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000140L});
        public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
        public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0004000000000000L});
        public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000020200001100L,0x0000000000000044L});
        public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000020200001100L,0x0000000000000004L});
        public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000020000001100L,0x0000040000000004L});
        public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000001100L,0x0000040000000004L});
        public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000001000L,0x0000040000000005L});
        public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000200000000000L});
        public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000008000000000L});
        public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0800000000000000L,0x0000000004000000L});
        public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000040000000L});
        public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000000004402000L});
        public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0008000004000000L});
        public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0008000000000000L});
        public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000000084000000L});
        public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000240L});
        public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000500888400L,0x0000040400040001L});
        public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0080000000000000L,0x0000040000040000L});
        public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0080000000000000L,0x0000040000000000L});
        public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
        public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000480000L});
        public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x1000000000000000L,0x0000000080000000L});
        public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x1000000000000000L});
        public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000002000000000L,0x0000044000000000L});
        public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
        public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
        public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
        public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
        public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
        public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000001000000000L});
        public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000800000000L});
        public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
        public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
        public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x8000000500888400L,0x0000040400040001L});
        public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
        public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000000000L,0x0000000004040000L});
        public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000000L,0x0000060400000000L});
        public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0000000080004000L});
        public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
        public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0001000000000000L});
        public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
        public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x0000002000000000L,0x0000040400044001L});
        public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x0000000000000000L,0x0000040400044001L});
        public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000000000000L,0x0000040000004000L});
        public static final BitSet FOLLOW_143 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000040L});
        public static final BitSet FOLLOW_144 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
        public static final BitSet FOLLOW_145 = new BitSet(new long[]{0x4000000000000000L,0x0000000000001000L});
        public static final BitSet FOLLOW_146 = new BitSet(new long[]{0x0200400001110200L,0x0000064410A40000L});
        public static final BitSet FOLLOW_147 = new BitSet(new long[]{0x0000000000400000L,0x0000000004404000L});
        public static final BitSet FOLLOW_148 = new BitSet(new long[]{0x0000000000000000L,0x0000000004404000L});
        public static final BitSet FOLLOW_149 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
        public static final BitSet FOLLOW_150 = new BitSet(new long[]{0x0000000000000000L,0x0000040020000000L});
        public static final BitSet FOLLOW_151 = new BitSet(new long[]{0x0200400001010200L,0x0000064410AC0000L});
        public static final BitSet FOLLOW_152 = new BitSet(new long[]{0x0000000000000002L,0x0000000011000000L});
        public static final BitSet FOLLOW_153 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000400L});
        public static final BitSet FOLLOW_154 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
        public static final BitSet FOLLOW_155 = new BitSet(new long[]{0x0000000000000000L,0x0000044400A00000L});
        public static final BitSet FOLLOW_156 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
        public static final BitSet FOLLOW_157 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
        public static final BitSet FOLLOW_158 = new BitSet(new long[]{0x0000080000000002L});
        public static final BitSet FOLLOW_159 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_160 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    }


}