package org.eclipse.ocl.xtext.oclinecore.serializer;

import com.google.inject.Inject;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.ocl.xtext.oclinecore.services.OCLinEcoreGrammarAccess;
import org.eclipse.xtext.IGrammarAccess;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;

@SuppressWarnings("all")
public abstract class AbstractOCLinEcoreSyntacticSequencer extends AbstractSyntacticSequencer {

	protected OCLinEcoreGrammarAccess grammarAccess;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_0_1_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_1_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_2_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_3_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_4_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_5_1_q;
	protected AbstractElementAlias match_AttributeCS_CommaKeyword_5_6_1_q;
	protected AbstractElementAlias match_AttributeCS_IsDerivedDerivedKeyword_5_0_1_0_0_0;
	protected AbstractElementAlias match_AttributeCS_IsVolatileVolatileKeyword_5_7_0_0_0_0;
	protected AbstractElementAlias match_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__;
	protected AbstractElementAlias match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q;
	protected AbstractElementAlias match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_1_1_q_IdKeyword_5_1_0_1__a;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_2_1_q_OrderedKeyword_5_2_0_1__a;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_3_1_q_ReadonlyKeyword_5_3_0_1__a;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_4_1_q_TransientKeyword_5_4_0_1__a;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_5_1_q_UniqueKeyword_5_5_0_1__a;
	protected AbstractElementAlias match_AttributeCS___CommaKeyword_5_6_1_q_UnsettableKeyword_5_6_0_1__a;
	protected AbstractElementAlias match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a;
	protected AbstractElementAlias match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a;
	protected AbstractElementAlias match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__;
	protected AbstractElementAlias match_AttributeCS___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a;
	protected AbstractElementAlias match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a;
	protected AbstractElementAlias match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__;
	protected AbstractElementAlias match_AttributeCS___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a;
	protected AbstractElementAlias match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a;
	protected AbstractElementAlias match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p;
	protected AbstractElementAlias match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a;
	protected AbstractElementAlias match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p;
	protected AbstractElementAlias match_AttributeCS___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a;
	protected AbstractElementAlias match_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a;
	protected AbstractElementAlias match_AttributeCS_______LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q___or___RightCurlyBracketKeyword_5_7_1___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q_________IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___or___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___or___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___or___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___or___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___or___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q____a__p;
	protected AbstractElementAlias match_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__;
	protected AbstractElementAlias match_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q;
	protected AbstractElementAlias match_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__;
	protected AbstractElementAlias match_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q;
	protected AbstractElementAlias match_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__;
	protected AbstractElementAlias match_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__;
	protected AbstractElementAlias match_OperationCS_CommaKeyword_9_1_1_q;
	protected AbstractElementAlias match_OperationCS_IsDerivedDerivedKeyword_9_0_1_0_0_0;
	protected AbstractElementAlias match_OperationCS_IsNotUniqueUniqueKeyword_9_2_0_0_0_0;
	protected AbstractElementAlias match_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__;
	protected AbstractElementAlias match_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q;
	protected AbstractElementAlias match_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a;
	protected AbstractElementAlias match_OperationCS___CommaKeyword_9_1_1_q_____LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1__a;
	protected AbstractElementAlias match_OperationCS___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a__a;
	protected AbstractElementAlias match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a;
	protected AbstractElementAlias match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a;
	protected AbstractElementAlias match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a;
	protected AbstractElementAlias match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p;
	protected AbstractElementAlias match_OperationCS_______LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a;
	protected AbstractElementAlias match_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__;
	protected AbstractElementAlias match_ParameterCS_IsNotUniqueUniqueKeyword_2_1_0_0_0_0;
	protected AbstractElementAlias match_ParameterCS_IsOrderedOrderedKeyword_2_0_1_0_0_0;
	protected AbstractElementAlias match_ParameterCS___CommaKeyword_2_1_0_1_q___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a__p_UniqueKeyword_2_1_0_0_1__a;
	protected AbstractElementAlias match_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q;
	protected AbstractElementAlias match_ParameterCS___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q__a;
	protected AbstractElementAlias match_ParameterCS_____LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q___or___RightCurlyBracketKeyword_2_1_1___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q____p;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_0_1_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_1_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_2_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_3_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_4_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_5_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_6_1_q;
	protected AbstractElementAlias match_ReferenceCS_CommaKeyword_6_7_1_q;
	protected AbstractElementAlias match_ReferenceCS_IsComposesComposesKeyword_6_0_1_0_0_0;
	protected AbstractElementAlias match_ReferenceCS_IsVolatileVolatileKeyword_6_8_0_0_0_0;
	protected AbstractElementAlias match_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__;
	protected AbstractElementAlias match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q;
	protected AbstractElementAlias match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_1_1_q_DerivedKeyword_6_1_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_2_1_q_OrderedKeyword_6_2_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_3_1_q_ReadonlyKeyword_6_3_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_4_1_q_ResolveKeyword_6_4_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_5_1_q_TransientKeyword_6_5_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_6_1_q_UniqueKeyword_6_6_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___CommaKeyword_6_7_1_q_UnsettableKeyword_6_7_0_1__a;
	protected AbstractElementAlias match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a;
	protected AbstractElementAlias match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a;
	protected AbstractElementAlias match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__;
	protected AbstractElementAlias match_ReferenceCS___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a;
	protected AbstractElementAlias match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a;
	protected AbstractElementAlias match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__;
	protected AbstractElementAlias match_ReferenceCS___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a;
	protected AbstractElementAlias match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a;
	protected AbstractElementAlias match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p;
	protected AbstractElementAlias match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a;
	protected AbstractElementAlias match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p;
	protected AbstractElementAlias match_ReferenceCS___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a;
	protected AbstractElementAlias match_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a;
	protected AbstractElementAlias match_ReferenceCS_______LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q___or___RightCurlyBracketKeyword_6_8_1___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q_________DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___or___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___or___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___or___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___or___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___or___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___or___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q____a__p;
	protected AbstractElementAlias match_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__;
	protected AbstractElementAlias match_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q;
	protected AbstractElementAlias match_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q;
	protected AbstractElementAlias match_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q;
	
	@Inject
	protected void init(IGrammarAccess access) {
		grammarAccess = (OCLinEcoreGrammarAccess) access;
		match_AttributeCS_CommaKeyword_5_0_1_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1());
		match_AttributeCS_CommaKeyword_5_1_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1());
		match_AttributeCS_CommaKeyword_5_2_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1());
		match_AttributeCS_CommaKeyword_5_3_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1());
		match_AttributeCS_CommaKeyword_5_4_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1());
		match_AttributeCS_CommaKeyword_5_5_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1());
		match_AttributeCS_CommaKeyword_5_6_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1());
		match_AttributeCS_IsDerivedDerivedKeyword_5_0_1_0_0_0 = new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIsDerivedDerivedKeyword_5_0_1_0_0_0());
		match_AttributeCS_IsVolatileVolatileKeyword_5_7_0_0_0_0 = new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIsVolatileVolatileKeyword_5_7_0_0_0_0());
		match_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()))), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1()));
		match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1());
		match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q = new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1());
		match_AttributeCS___CommaKeyword_5_1_1_q_IdKeyword_5_1_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()));
		match_AttributeCS___CommaKeyword_5_2_1_q_OrderedKeyword_5_2_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()));
		match_AttributeCS___CommaKeyword_5_3_1_q_ReadonlyKeyword_5_3_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()));
		match_AttributeCS___CommaKeyword_5_4_1_q_TransientKeyword_5_4_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()));
		match_AttributeCS___CommaKeyword_5_5_1_q_UniqueKeyword_5_5_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()));
		match_AttributeCS___CommaKeyword_5_6_1_q_UnsettableKeyword_5_6_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()));
		match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())));
		match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()));
		match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()))));
		match_AttributeCS___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())));
		match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()));
		match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()))));
		match_AttributeCS___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())));
		match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()));
		match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()));
		match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()));
		match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()));
		match_AttributeCS___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1()))));
		match_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a = new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4())));
		match_AttributeCS_______LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q___or___RightCurlyBracketKeyword_5_7_1___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q_________IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___or___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___or___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___or___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___or___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___or___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q____a__p = new GroupAlias(true, false, new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getDerivedKeyword_5_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_0_1_1()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_7_1()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getVolatileKeyword_5_7_0_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_7_0_1())))), new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getIdKeyword_5_1_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getOrderedKeyword_5_2_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_2_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getReadonlyKeyword_5_3_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_3_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getTransientKeyword_5_4_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_4_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUniqueKeyword_5_5_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_5_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getAttributeCSAccess().getUnsettableKeyword_5_6_0_1()), new TokenAlias(false, true, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_6_1()))));
		match_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2())), new TokenAlias(false, false, grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1()));
		match_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0()), new TokenAlias(false, true, grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1()), new TokenAlias(false, false, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2()));
		match_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0()), new TokenAlias(false, false, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2())), new TokenAlias(false, false, grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1()));
		match_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0()), new TokenAlias(false, true, grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1()), new TokenAlias(false, false, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2()));
		match_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2())), new TokenAlias(false, false, grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1()));
		match_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0()), new TokenAlias(false, false, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2())), new TokenAlias(false, false, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1()));
		match_OperationCS_CommaKeyword_9_1_1_q = new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1());
		match_OperationCS_IsDerivedDerivedKeyword_9_0_1_0_0_0 = new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getIsDerivedDerivedKeyword_9_0_1_0_0_0());
		match_OperationCS_IsNotUniqueUniqueKeyword_9_2_0_0_0_0 = new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getIsNotUniqueUniqueKeyword_9_2_0_0_0_0());
		match_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2())), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1()));
		match_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q = new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1());
		match_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()));
		match_OperationCS___CommaKeyword_9_1_1_q_____LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()), new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getDerivedKeyword_9_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_0_1_1()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2_1()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getUniqueKeyword_9_2_0_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_2_0_1())))), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getOrderedKeyword_9_1_0_1()));
		match_OperationCS___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getOrderedKeyword_9_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getDerivedKeyword_9_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_0_1_1()))), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getUniqueKeyword_9_2_0_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_2_0_1()))));
		match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getDerivedKeyword_9_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getOrderedKeyword_9_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getUniqueKeyword_9_2_0_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_2_0_1())));
		match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getDerivedKeyword_9_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_0_1_1()))), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getUniqueKeyword_9_2_0_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_2_0_1())));
		match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()));
		match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()));
		match_OperationCS_______LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getDerivedKeyword_9_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_0_1_1()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2_1()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getUniqueKeyword_9_2_0_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_2_0_1())))), new TokenAlias(false, false, grammarAccess.getOperationCSAccess().getOrderedKeyword_9_1_0_1()), new TokenAlias(false, true, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()));
		match_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2())), new TokenAlias(false, false, grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1()));
		match_ParameterCS_IsNotUniqueUniqueKeyword_2_1_0_0_0_0 = new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getIsNotUniqueUniqueKeyword_2_1_0_0_0_0());
		match_ParameterCS_IsOrderedOrderedKeyword_2_0_1_0_0_0 = new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getIsOrderedOrderedKeyword_2_0_1_0_0_0());
		match_ParameterCS___CommaKeyword_2_1_0_1_q___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a__p_UniqueKeyword_2_1_0_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_0_1()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_1_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getOrderedKeyword_2_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_0_1_1())))), new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getUniqueKeyword_2_1_0_0_1()));
		match_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2()));
		match_ParameterCS___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_1_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getOrderedKeyword_2_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_0_1_1()))), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getUniqueKeyword_2_1_0_0_1()), new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_0_1())));
		match_ParameterCS_____LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q___or___RightCurlyBracketKeyword_2_1_1___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q____p = new AlternativeAlias(true, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getOrderedKeyword_2_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_0_1_1()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_1_1()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getParameterCSAccess().getUniqueKeyword_2_1_0_0_1()), new TokenAlias(false, true, grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_0_1()))));
		match_ReferenceCS_CommaKeyword_6_0_1_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1());
		match_ReferenceCS_CommaKeyword_6_1_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1());
		match_ReferenceCS_CommaKeyword_6_2_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1());
		match_ReferenceCS_CommaKeyword_6_3_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1());
		match_ReferenceCS_CommaKeyword_6_4_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1());
		match_ReferenceCS_CommaKeyword_6_5_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1());
		match_ReferenceCS_CommaKeyword_6_6_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1());
		match_ReferenceCS_CommaKeyword_6_7_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1());
		match_ReferenceCS_IsComposesComposesKeyword_6_0_1_0_0_0 = new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getIsComposesComposesKeyword_6_0_1_0_0_0());
		match_ReferenceCS_IsVolatileVolatileKeyword_6_8_0_0_0_0 = new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getIsVolatileVolatileKeyword_6_8_0_0_0_0());
		match_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0()), new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()))), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1()));
		match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1());
		match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q = new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1());
		match_ReferenceCS___CommaKeyword_6_1_1_q_DerivedKeyword_6_1_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()));
		match_ReferenceCS___CommaKeyword_6_2_1_q_OrderedKeyword_6_2_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()));
		match_ReferenceCS___CommaKeyword_6_3_1_q_ReadonlyKeyword_6_3_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()));
		match_ReferenceCS___CommaKeyword_6_4_1_q_ResolveKeyword_6_4_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()));
		match_ReferenceCS___CommaKeyword_6_5_1_q_TransientKeyword_6_5_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()));
		match_ReferenceCS___CommaKeyword_6_6_1_q_UniqueKeyword_6_6_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()));
		match_ReferenceCS___CommaKeyword_6_7_1_q_UnsettableKeyword_6_7_0_1__a = new GroupAlias(true, true, new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()));
		match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())));
		match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()));
		match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()))));
		match_ReferenceCS___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())));
		match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()));
		match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2())))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()))));
		match_ReferenceCS___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())));
		match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()));
		match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()));
		match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()));
		match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()));
		match_ReferenceCS___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a = new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(true, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1()))));
		match_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a = new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()), new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4())));
		match_ReferenceCS_______LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q___or___RightCurlyBracketKeyword_6_8_1___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q_________DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___or___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___or___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___or___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___or___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___or___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___or___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q____a__p = new GroupAlias(true, false, new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0_0()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getComposesKeyword_6_0_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_0_1_1()))), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_8_1()), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getVolatileKeyword_6_8_0_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_8_0_1())))), new AlternativeAlias(true, true, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getDerivedKeyword_6_1_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getOrderedKeyword_6_2_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_2_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getReadonlyKeyword_6_3_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_3_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getResolveKeyword_6_4_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_4_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getTransientKeyword_6_5_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_5_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUniqueKeyword_6_6_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_6_1())), new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getReferenceCSAccess().getUnsettableKeyword_6_7_0_1()), new TokenAlias(false, true, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_7_1()))));
		match_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0()), new TokenAlias(false, false, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2())), new TokenAlias(false, false, grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1()));
		match_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0()), new TokenAlias(false, false, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2()));
		match_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0()), new TokenAlias(false, false, grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()));
		match_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()), new TokenAlias(false, false, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()));
	}
	
	@Override
	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
		if(ruleCall.getRule() == grammarAccess.getUnrestrictedNameRule())
			return getUnrestrictedNameToken(semanticObject, ruleCall, node);
		return "";
	}
	
	/**
	 * UnrestrictedName returns ecore::EString:
	 * 	EnumerationLiteralName
	 * |	'annotation'
	 * |	'documentation'
	 * |	'invariant'
	 * |	'literal'
	 * |	'serializable'
	 * |	'sysml'
	 * ;
	 */
	protected String getUnrestrictedNameToken(EObject semanticObject, RuleCall ruleCall, INode node) {
		if (node != null)
			return getTokenText(node);
		return "";
	}
	
	@Override
	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
		List<INode> transitionNodes = collectNodes(fromNode, toNode);
		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
			if(match_AttributeCS_CommaKeyword_5_0_1_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_0_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_1_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_2_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_3_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_3_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_4_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_4_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_5_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_5_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_CommaKeyword_5_6_1_q.equals(syntax))
				emit_AttributeCS_CommaKeyword_5_6_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_IsDerivedDerivedKeyword_5_0_1_0_0_0.equals(syntax))
				emit_AttributeCS_IsDerivedDerivedKeyword_5_0_1_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_IsVolatileVolatileKeyword_5_7_0_0_0_0.equals(syntax))
				emit_AttributeCS_IsVolatileVolatileKeyword_5_7_0_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__.equals(syntax))
				emit_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q.equals(syntax))
				emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q.equals(syntax))
				emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_1_1_q_IdKeyword_5_1_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_1_1_q_IdKeyword_5_1_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_2_1_q_OrderedKeyword_5_2_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_2_1_q_OrderedKeyword_5_2_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_3_1_q_ReadonlyKeyword_5_3_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_3_1_q_ReadonlyKeyword_5_3_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_4_1_q_TransientKeyword_5_4_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_4_1_q_TransientKeyword_5_4_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_5_1_q_UniqueKeyword_5_5_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_5_1_q_UniqueKeyword_5_5_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___CommaKeyword_5_6_1_q_UnsettableKeyword_5_6_0_1__a.equals(syntax))
				emit_AttributeCS___CommaKeyword_5_6_1_q_UnsettableKeyword_5_6_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a.equals(syntax))
				emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a.equals(syntax))
				emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__.equals(syntax))
				emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a.equals(syntax))
				emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a.equals(syntax))
				emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__.equals(syntax))
				emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a.equals(syntax))
				emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a.equals(syntax))
				emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p.equals(syntax))
				emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a.equals(syntax))
				emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p.equals(syntax))
				emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a.equals(syntax))
				emit_AttributeCS___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a.equals(syntax))
				emit_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_AttributeCS_______LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q___or___RightCurlyBracketKeyword_5_7_1___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q_________IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___or___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___or___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___or___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___or___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___or___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q____a__p.equals(syntax))
				emit_AttributeCS_______LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q___or___RightCurlyBracketKeyword_5_7_1___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q_________IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___or___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___or___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___or___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___or___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___or___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q____a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__.equals(syntax))
				emit_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q.equals(syntax))
				emit_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__.equals(syntax))
				emit_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q.equals(syntax))
				emit_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__.equals(syntax))
				emit_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__.equals(syntax))
				emit_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_CommaKeyword_9_1_1_q.equals(syntax))
				emit_OperationCS_CommaKeyword_9_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_IsDerivedDerivedKeyword_9_0_1_0_0_0.equals(syntax))
				emit_OperationCS_IsDerivedDerivedKeyword_9_0_1_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_IsNotUniqueUniqueKeyword_9_2_0_0_0_0.equals(syntax))
				emit_OperationCS_IsNotUniqueUniqueKeyword_9_2_0_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__.equals(syntax))
				emit_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q.equals(syntax))
				emit_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a.equals(syntax))
				emit_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___CommaKeyword_9_1_1_q_____LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1__a.equals(syntax))
				emit_OperationCS___CommaKeyword_9_1_1_q_____LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a__a.equals(syntax))
				emit_OperationCS___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a.equals(syntax))
				emit_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a.equals(syntax))
				emit_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a.equals(syntax))
				emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p.equals(syntax))
				emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_OperationCS_______LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a.equals(syntax))
				emit_OperationCS_______LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__.equals(syntax))
				emit_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS_IsNotUniqueUniqueKeyword_2_1_0_0_0_0.equals(syntax))
				emit_ParameterCS_IsNotUniqueUniqueKeyword_2_1_0_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS_IsOrderedOrderedKeyword_2_0_1_0_0_0.equals(syntax))
				emit_ParameterCS_IsOrderedOrderedKeyword_2_0_1_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS___CommaKeyword_2_1_0_1_q___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a__p_UniqueKeyword_2_1_0_0_1__a.equals(syntax))
				emit_ParameterCS___CommaKeyword_2_1_0_1_q___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a__p_UniqueKeyword_2_1_0_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q.equals(syntax))
				emit_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q__a.equals(syntax))
				emit_ParameterCS___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ParameterCS_____LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q___or___RightCurlyBracketKeyword_2_1_1___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q____p.equals(syntax))
				emit_ParameterCS_____LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q___or___RightCurlyBracketKeyword_2_1_1___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q____p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_0_1_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_0_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_1_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_2_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_3_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_3_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_4_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_4_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_5_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_5_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_6_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_6_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_CommaKeyword_6_7_1_q.equals(syntax))
				emit_ReferenceCS_CommaKeyword_6_7_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_IsComposesComposesKeyword_6_0_1_0_0_0.equals(syntax))
				emit_ReferenceCS_IsComposesComposesKeyword_6_0_1_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_IsVolatileVolatileKeyword_6_8_0_0_0_0.equals(syntax))
				emit_ReferenceCS_IsVolatileVolatileKeyword_6_8_0_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__.equals(syntax))
				emit_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q.equals(syntax))
				emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q.equals(syntax))
				emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_1_1_q_DerivedKeyword_6_1_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_1_1_q_DerivedKeyword_6_1_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_2_1_q_OrderedKeyword_6_2_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_2_1_q_OrderedKeyword_6_2_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_3_1_q_ReadonlyKeyword_6_3_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_3_1_q_ReadonlyKeyword_6_3_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_4_1_q_ResolveKeyword_6_4_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_4_1_q_ResolveKeyword_6_4_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_5_1_q_TransientKeyword_6_5_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_5_1_q_TransientKeyword_6_5_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_6_1_q_UniqueKeyword_6_6_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_6_1_q_UniqueKeyword_6_6_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___CommaKeyword_6_7_1_q_UnsettableKeyword_6_7_0_1__a.equals(syntax))
				emit_ReferenceCS___CommaKeyword_6_7_1_q_UnsettableKeyword_6_7_0_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a.equals(syntax))
				emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a.equals(syntax))
				emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__.equals(syntax))
				emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a.equals(syntax))
				emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a.equals(syntax))
				emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__.equals(syntax))
				emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a.equals(syntax))
				emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a.equals(syntax))
				emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p.equals(syntax))
				emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a.equals(syntax))
				emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p.equals(syntax))
				emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a.equals(syntax))
				emit_ReferenceCS___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a.equals(syntax))
				emit_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_ReferenceCS_______LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q___or___RightCurlyBracketKeyword_6_8_1___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q_________DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___or___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___or___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___or___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___or___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___or___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___or___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q____a__p.equals(syntax))
				emit_ReferenceCS_______LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q___or___RightCurlyBracketKeyword_6_8_1___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q_________DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___or___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___or___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___or___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___or___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___or___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___or___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q____a__p(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__.equals(syntax))
				emit_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q.equals(syntax))
				emit_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q.equals(syntax))
				emit_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else if(match_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q.equals(syntax))
				emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
			else acceptNodes(getLastNavigableState(), syntaxNodes);
		}
	}

	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_0_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_3_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_4_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_5_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_AttributeCS_CommaKeyword_5_6_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isDerived?='derived'
	 */
	protected void emit_AttributeCS_IsDerivedDerivedKeyword_5_0_1_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isVolatile?='volatile'
	 */
	protected void emit_AttributeCS_IsVolatileVolatileKeyword_5_7_0_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')
	 */
	protected void emit_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     UnrestrictedName?
	 */
	protected void emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     UnrestrictedName?
	 */
	protected void emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!id')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_1_1_q_IdKeyword_5_1_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!ordered')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_2_1_q_OrderedKeyword_5_2_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!readonly')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_3_1_q_ReadonlyKeyword_5_3_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!transient')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_4_1_q_TransientKeyword_5_4_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? 'unique')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_5_1_q_UniqueKeyword_5_5_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!unsettable')*
	 */
	protected void emit_AttributeCS___CommaKeyword_5_6_1_q_UnsettableKeyword_5_6_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('derivation' UnrestrictedName? ':' ';' ('initial' UnrestrictedName? ':' ';')*)*
	 */
	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('derivation' UnrestrictedName? ':' ';')*
	 */
	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
	     (
	         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
	         ('initial' UnrestrictedName? ':' ';')+ 
	         'derivation' 
	         UnrestrictedName? 
	         ':' 
	         (';' 'derivation' UnrestrictedName? ':')* 
	         (
	             ';' 
	             ('initial' UnrestrictedName? ':' ';')+ 
	             'derivation' 
	             UnrestrictedName? 
	             ':' 
	             (';' 'derivation' UnrestrictedName? ':')*
	         )*
	     )
	 )
	 */
	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!id' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('initial' UnrestrictedName? ':' ';' ('derivation' UnrestrictedName? ':' ';')*)*
	 */
	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('initial' UnrestrictedName? ':' ';')*
	 */
	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
	     (
	         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
	         ('derivation' UnrestrictedName? ':' ';')+ 
	         'initial' 
	         UnrestrictedName? 
	         ':' 
	         (';' 'initial' UnrestrictedName? ':')* 
	         (
	             ';' 
	             ('derivation' UnrestrictedName? ':' ';')+ 
	             'initial' 
	             UnrestrictedName? 
	             ':' 
	             (';' 'initial' UnrestrictedName? ':')*
	         )*
	     )
	 )
	 */
	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!ordered' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!id' ','?)* 
	         ('!readonly' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!readonly' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!id' ','?)* 
	         ('!ordered' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!ordered' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!id' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!derived' ','?)?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_AttributeCS___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')*
	 */
	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')+
	 */
	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')*
	 */
	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')+
	 */
	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!transient' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!id' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     'unique' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!id' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!transient' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!unsettable' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!derived' ','?)?)* 
	         ('!id' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_AttributeCS___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q___RightCurlyBracketKeyword_5_7_1___LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q__a___IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q__a___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q__a___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q__a___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q__a___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q__a___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))*
	 */
	protected void emit_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     (('}' ('!volatile' ','?)?) | ('{' ('!derived' ','?)?)) 
	     (
	         ('!id' ','?) | 
	         ('!ordered' ','?) | 
	         ('!readonly' ','?) | 
	         ('!transient' ','?) | 
	         ('unique' ','?) | 
	         ('!unsettable' ','?)
	     )*
	 )+
	 */
	protected void emit_AttributeCS_______LeftCurlyBracketKeyword_5_0_0___DerivedKeyword_5_0_1_0_1_CommaKeyword_5_0_1_1_q__q___or___RightCurlyBracketKeyword_5_7_1___VolatileKeyword_5_7_0_0_1_CommaKeyword_5_7_0_1_q__q_________IdKeyword_5_1_0_1_CommaKeyword_5_1_1_q___or___OrderedKeyword_5_2_0_1_CommaKeyword_5_2_1_q___or___ReadonlyKeyword_5_3_0_1_CommaKeyword_5_3_1_q___or___TransientKeyword_5_4_0_1_CommaKeyword_5_4_1_q___or___UniqueKeyword_5_5_0_1_CommaKeyword_5_5_1_q___or___UnsettableKeyword_5_6_0_1_CommaKeyword_5_6_1_q____a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' '}')
	 */
	protected void emit_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('{' '!serializable'? '}')?
	 */
	protected void emit_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' '}')
	 */
	protected void emit_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('{' '!serializable'? '}')?
	 */
	protected void emit_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' '}')
	 */
	protected void emit_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | (':' ';')
	 */
	protected void emit_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_OperationCS_CommaKeyword_9_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isDerived?='derived'
	 */
	protected void emit_OperationCS_IsDerivedDerivedKeyword_9_0_1_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isNotUnique?='!unique'
	 */
	protected void emit_OperationCS_IsNotUniqueUniqueKeyword_9_2_0_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')
	 */
	protected void emit_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     UnrestrictedName?
	 */
	protected void emit_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('body' UnrestrictedName? ':' ';')*
	 */
	protected void emit_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? (('}' ('unique' ','?)?) | ('{' ('!derived' ','?)?))* '!ordered')*
	 */
	protected void emit_OperationCS___CommaKeyword_9_1_1_q_____LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('!ordered' ','? ('}' ('{' ('!derived' ','?)?)* ('unique' ','?)?)*)*
	 */
	protected void emit_OperationCS___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('}' ('{' ('!derived' ','?)?)* ('!ordered' ','?)* ('unique' ','?)?)*
	 */
	protected void emit_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('}' ('{' ('!derived' ','?)?)* ('unique' ','?)?)*
	 */
	protected void emit_OperationCS___RightCurlyBracketKeyword_9_2_1___LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q__a___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' 'body' UnrestrictedName? ':')*
	 */
	protected void emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' 'body' UnrestrictedName? ':')+
	 */
	protected void emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ((('}' ('unique' ','?)?) | ('{' ('!derived' ','?)?))* '!ordered' ','?)*
	 */
	protected void emit_OperationCS_______LeftCurlyBracketKeyword_9_0_0___DerivedKeyword_9_0_1_0_1_CommaKeyword_9_0_1_1_q__q___or___RightCurlyBracketKeyword_9_2_1___UniqueKeyword_9_2_0_0_1_CommaKeyword_9_2_0_1_q__q____a_OrderedKeyword_9_1_0_1_CommaKeyword_9_1_1_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' '}')
	 */
	protected void emit_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isNotUnique?='!unique'
	 */
	protected void emit_ParameterCS_IsNotUniqueUniqueKeyword_2_1_0_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isOrdered?='ordered'
	 */
	protected void emit_ParameterCS_IsOrderedOrderedKeyword_2_0_1_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? ('}' ('{' ('!ordered' ','?)?)*)+ 'unique')*
	 */
	protected void emit_ParameterCS___CommaKeyword_2_1_0_1_q___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a__p_UniqueKeyword_2_1_0_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('{' '}')?
	 */
	protected void emit_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('}' ('{' ('!ordered' ','?)?)* ('unique' ','?)?)*
	 */
	protected void emit_ParameterCS___RightCurlyBracketKeyword_2_1_1___LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q__a___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (('}' ('unique' ','?)?) | ('{' ('!ordered' ','?)?))+
	 */
	protected void emit_ParameterCS_____LeftCurlyBracketKeyword_2_0_0___OrderedKeyword_2_0_1_0_1_CommaKeyword_2_0_1_1_q__q___or___RightCurlyBracketKeyword_2_1_1___UniqueKeyword_2_1_0_0_1_CommaKeyword_2_1_0_1_q__q____p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_0_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_3_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_4_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_5_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_6_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ','?
	 */
	protected void emit_ReferenceCS_CommaKeyword_6_7_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isComposes?='composes'
	 */
	protected void emit_ReferenceCS_IsComposesComposesKeyword_6_0_1_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     isVolatile?='volatile'
	 */
	protected void emit_ReferenceCS_IsVolatileVolatileKeyword_6_8_0_0_0_0(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')
	 */
	protected void emit_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     UnrestrictedName?
	 */
	protected void emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     UnrestrictedName?
	 */
	protected void emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!derived')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_1_1_q_DerivedKeyword_6_1_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!ordered')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_2_1_q_OrderedKeyword_6_2_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!readonly')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_3_1_q_ReadonlyKeyword_6_3_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!resolve')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_4_1_q_ResolveKeyword_6_4_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!transient')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_5_1_q_TransientKeyword_6_5_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? 'unique')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_6_1_q_UniqueKeyword_6_6_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (','? '!unsettable')*
	 */
	protected void emit_ReferenceCS___CommaKeyword_6_7_1_q_UnsettableKeyword_6_7_0_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('derivation' UnrestrictedName? ':' ';' ('initial' UnrestrictedName? ':' ';')*)*
	 */
	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('derivation' UnrestrictedName? ':' ';')*
	 */
	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
	     (
	         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
	         ('initial' UnrestrictedName? ':' ';')+ 
	         'derivation' 
	         UnrestrictedName? 
	         ':' 
	         (';' 'derivation' UnrestrictedName? ':')* 
	         (
	             ';' 
	             ('initial' UnrestrictedName? ':' ';')+ 
	             'derivation' 
	             UnrestrictedName? 
	             ':' 
	             (';' 'derivation' UnrestrictedName? ':')*
	         )*
	     )
	 )
	 */
	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!derived' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!resolve' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('initial' UnrestrictedName? ':' ';' ('derivation' UnrestrictedName? ':' ';')*)*
	 */
	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('initial' UnrestrictedName? ':' ';')*
	 */
	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
	     (
	         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
	         ('derivation' UnrestrictedName? ':' ';')+ 
	         'initial' 
	         UnrestrictedName? 
	         ':' 
	         (';' 'initial' UnrestrictedName? ':')* 
	         (
	             ';' 
	             ('derivation' UnrestrictedName? ':' ';')+ 
	             'initial' 
	             UnrestrictedName? 
	             ':' 
	             (';' 'initial' UnrestrictedName? ':')*
	         )*
	     )
	 )
	 */
	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!ordered' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!readonly' ','?)* 
	         ('!resolve' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!readonly' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!ordered' ','?)* 
	         ('!resolve' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!resolve' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!ordered' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!derived' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '}' 
	     ('{' ('!composes' ','?)?)* 
	     ('!ordered' ','?)* 
	     ('!readonly' ','?)* 
	     ('!resolve' ','?)* 
	     ('!transient' ','?)* 
	     ('unique' ','?)* 
	     ('!unsettable' ','?)* 
	     ('!volatile' ','?)?
	 )*
	 */
	protected void emit_ReferenceCS___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')*
	 */
	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')+
	 */
	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')*
	 */
	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')+
	 */
	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!transient' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!resolve' ','?)* 
	         ('unique' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     'unique' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!resolve' ','?)* 
	         ('!transient' ','?)* 
	         ('!unsettable' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     '!unsettable' 
	     ','? 
	     (
	         '}' 
	         ('{' ('!composes' ','?)?)* 
	         ('!derived' ','?)* 
	         ('!ordered' ','?)* 
	         ('!readonly' ','?)* 
	         ('!resolve' ','?)* 
	         ('!transient' ','?)* 
	         ('unique' ','?)* 
	         ('!volatile' ','?)?
	     )*
	 )*
	 */
	protected void emit_ReferenceCS___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q___RightCurlyBracketKeyword_6_8_1___LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q__a___DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q__a___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q__a___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q__a___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q__a___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q__a___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q__a___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))*
	 */
	protected void emit_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     (
	     (('}' ('!volatile' ','?)?) | ('{' ('!composes' ','?)?)) 
	     (
	         ('!derived' ','?) | 
	         ('!ordered' ','?) | 
	         ('!readonly' ','?) | 
	         ('!resolve' ','?) | 
	         ('!transient' ','?) | 
	         ('unique' ','?) | 
	         ('!unsettable' ','?)
	     )*
	 )+
	 */
	protected void emit_ReferenceCS_______LeftCurlyBracketKeyword_6_0_0___ComposesKeyword_6_0_1_0_1_CommaKeyword_6_0_1_1_q__q___or___RightCurlyBracketKeyword_6_8_1___VolatileKeyword_6_8_0_0_1_CommaKeyword_6_8_0_1_q__q_________DerivedKeyword_6_1_0_1_CommaKeyword_6_1_1_q___or___OrderedKeyword_6_2_0_1_CommaKeyword_6_2_1_q___or___ReadonlyKeyword_6_3_0_1_CommaKeyword_6_3_1_q___or___ResolveKeyword_6_4_0_1_CommaKeyword_6_4_1_q___or___TransientKeyword_6_5_0_1_CommaKeyword_6_5_1_q___or___UniqueKeyword_6_6_0_1_CommaKeyword_6_6_1_q___or___UnsettableKeyword_6_7_0_1_CommaKeyword_6_7_1_q____a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ';' | ('{' '}')
	 */
	protected void emit_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('{' '}')?
	 */
	protected void emit_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('module' UnrestrictedName)?
	 */
	protected void emit_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
	/**
	 * Syntax:
	 *     ('(' ')')?
	 */
	protected void emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
		acceptNodes(transition, nodes);
	}
	
}
