All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jnario.feature.services.FeatureGrammarAccess Maven / Gradle / Ivy

The newest version!
/*
* generated by Xtext
*/
package org.jnario.feature.services;

import com.google.inject.Singleton;
import com.google.inject.Inject;

import java.util.List;

import org.eclipse.xtext.*;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.service.AbstractElementFinder.*;

import org.eclipse.xtend.core.services.XtendGrammarAccess;
import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;

@Singleton
public class FeatureGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class FeatureFileElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FeatureFile");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFeatureFileAction_0 = (Action)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cPackageKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cPackageAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cPackageQualifiedNameParserRuleCall_1_1_0 = (RuleCall)cPackageAssignment_1_1.eContents().get(0);
		private final Assignment cImportSectionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cImportSectionXImportSectionParserRuleCall_2_0 = (RuleCall)cImportSectionAssignment_2.eContents().get(0);
		private final Assignment cXtendTypesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cXtendTypesFeatureParserRuleCall_3_0 = (RuleCall)cXtendTypesAssignment_3.eContents().get(0);
		
		//FeatureFile returns xtend::XtendFile:
		//	{FeatureFile} ("package" package=QualifiedName)? importSection=XImportSection? xtendTypes+=Feature?;
		public ParserRule getRule() { return rule; }

		//{FeatureFile} ("package" package=QualifiedName)? importSection=XImportSection? xtendTypes+=Feature?
		public Group getGroup() { return cGroup; }

		//{FeatureFile}
		public Action getFeatureFileAction_0() { return cFeatureFileAction_0; }

		//("package" package=QualifiedName)?
		public Group getGroup_1() { return cGroup_1; }

		//"package"
		public Keyword getPackageKeyword_1_0() { return cPackageKeyword_1_0; }

		//package=QualifiedName
		public Assignment getPackageAssignment_1_1() { return cPackageAssignment_1_1; }

		//QualifiedName
		public RuleCall getPackageQualifiedNameParserRuleCall_1_1_0() { return cPackageQualifiedNameParserRuleCall_1_1_0; }

		//importSection=XImportSection?
		public Assignment getImportSectionAssignment_2() { return cImportSectionAssignment_2; }

		//XImportSection
		public RuleCall getImportSectionXImportSectionParserRuleCall_2_0() { return cImportSectionXImportSectionParserRuleCall_2_0; }

		//xtendTypes+=Feature?
		public Assignment getXtendTypesAssignment_3() { return cXtendTypesAssignment_3; }

		//Feature
		public RuleCall getXtendTypesFeatureParserRuleCall_3_0() { return cXtendTypesFeatureParserRuleCall_3_0; }
	}

	public class FeatureElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Feature");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFeatureAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cAnnotationsXAnnotationParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameFEATURE_TEXTTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Assignment cDescriptionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cDescriptionTEXTTerminalRuleCall_3_0 = (RuleCall)cDescriptionAssignment_3.eContents().get(0);
		private final Assignment cBackgroundAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cBackgroundBackgroundParserRuleCall_4_0 = (RuleCall)cBackgroundAssignment_4.eContents().get(0);
		private final Assignment cScenariosAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cScenariosScenarioParserRuleCall_5_0 = (RuleCall)cScenariosAssignment_5.eContents().get(0);
		
		//Feature returns xtend::XtendClass:
		//	{Feature} annotations+=XAnnotation* name=FEATURE_TEXT description=TEXT? background=Background? scenarios+=Scenario*;
		public ParserRule getRule() { return rule; }

		//{Feature} annotations+=XAnnotation* name=FEATURE_TEXT description=TEXT? background=Background? scenarios+=Scenario*
		public Group getGroup() { return cGroup; }

		//{Feature}
		public Action getFeatureAction_0() { return cFeatureAction_0; }

		//annotations+=XAnnotation*
		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }

		//XAnnotation
		public RuleCall getAnnotationsXAnnotationParserRuleCall_1_0() { return cAnnotationsXAnnotationParserRuleCall_1_0; }

		//name=FEATURE_TEXT
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//FEATURE_TEXT
		public RuleCall getNameFEATURE_TEXTTerminalRuleCall_2_0() { return cNameFEATURE_TEXTTerminalRuleCall_2_0; }

		//description=TEXT?
		public Assignment getDescriptionAssignment_3() { return cDescriptionAssignment_3; }

		//TEXT
		public RuleCall getDescriptionTEXTTerminalRuleCall_3_0() { return cDescriptionTEXTTerminalRuleCall_3_0; }

		//background=Background?
		public Assignment getBackgroundAssignment_4() { return cBackgroundAssignment_4; }

		//Background
		public RuleCall getBackgroundBackgroundParserRuleCall_4_0() { return cBackgroundBackgroundParserRuleCall_4_0; }

		//scenarios+=Scenario*
		public Assignment getScenariosAssignment_5() { return cScenariosAssignment_5; }

		//Scenario
		public RuleCall getScenariosScenarioParserRuleCall_5_0() { return cScenariosScenarioParserRuleCall_5_0; }
	}

	public class BackgroundElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Background");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cBackgroundAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameBACKGROUND_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cMembersAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cMembersMemberParserRuleCall_2_0 = (RuleCall)cMembersAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cMembersAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Alternatives cMembersAlternatives_3_0_0 = (Alternatives)cMembersAssignment_3_0.eContents().get(0);
		private final RuleCall cMembersGivenParserRuleCall_3_0_0_0 = (RuleCall)cMembersAlternatives_3_0_0.eContents().get(0);
		private final RuleCall cMembersGivenReferenceParserRuleCall_3_0_0_1 = (RuleCall)cMembersAlternatives_3_0_0.eContents().get(1);
		private final Assignment cMembersAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final Alternatives cMembersAlternatives_3_1_0 = (Alternatives)cMembersAssignment_3_1.eContents().get(0);
		private final RuleCall cMembersAndParserRuleCall_3_1_0_0 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(0);
		private final RuleCall cMembersAndReferenceParserRuleCall_3_1_0_1 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(1);
		private final RuleCall cMembersButParserRuleCall_3_1_0_2 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(2);
		private final RuleCall cMembersButReferenceParserRuleCall_3_1_0_3 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(3);
		
		//Background:
		//	{Background} name=BACKGROUND_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference |
		//	But | ButReference)*)?;
		public ParserRule getRule() { return rule; }

		//{Background} name=BACKGROUND_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference | But
		//| ButReference)*)?
		public Group getGroup() { return cGroup; }

		//{Background}
		public Action getBackgroundAction_0() { return cBackgroundAction_0; }

		//name=BACKGROUND_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//BACKGROUND_TEXT
		public RuleCall getNameBACKGROUND_TEXTTerminalRuleCall_1_0() { return cNameBACKGROUND_TEXTTerminalRuleCall_1_0; }

		//members+=Member*
		public Assignment getMembersAssignment_2() { return cMembersAssignment_2; }

		//Member
		public RuleCall getMembersMemberParserRuleCall_2_0() { return cMembersMemberParserRuleCall_2_0; }

		//(members+=(Given | GivenReference) members+=(And | AndReference | But | ButReference)*)?
		public Group getGroup_3() { return cGroup_3; }

		//members+=(Given | GivenReference)
		public Assignment getMembersAssignment_3_0() { return cMembersAssignment_3_0; }

		//Given | GivenReference
		public Alternatives getMembersAlternatives_3_0_0() { return cMembersAlternatives_3_0_0; }

		//Given
		public RuleCall getMembersGivenParserRuleCall_3_0_0_0() { return cMembersGivenParserRuleCall_3_0_0_0; }

		//GivenReference
		public RuleCall getMembersGivenReferenceParserRuleCall_3_0_0_1() { return cMembersGivenReferenceParserRuleCall_3_0_0_1; }

		//members+=(And | AndReference | But | ButReference)*
		public Assignment getMembersAssignment_3_1() { return cMembersAssignment_3_1; }

		//And | AndReference | But | ButReference
		public Alternatives getMembersAlternatives_3_1_0() { return cMembersAlternatives_3_1_0; }

		//And
		public RuleCall getMembersAndParserRuleCall_3_1_0_0() { return cMembersAndParserRuleCall_3_1_0_0; }

		//AndReference
		public RuleCall getMembersAndReferenceParserRuleCall_3_1_0_1() { return cMembersAndReferenceParserRuleCall_3_1_0_1; }

		//But
		public RuleCall getMembersButParserRuleCall_3_1_0_2() { return cMembersButParserRuleCall_3_1_0_2; }

		//ButReference
		public RuleCall getMembersButReferenceParserRuleCall_3_1_0_3() { return cMembersButReferenceParserRuleCall_3_1_0_3; }
	}

	public class ScenarioElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Scenario");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cScenarioAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameSCENARIO_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cMembersAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cMembersMemberParserRuleCall_2_0 = (RuleCall)cMembersAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cMembersAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Alternatives cMembersAlternatives_3_0_0 = (Alternatives)cMembersAssignment_3_0.eContents().get(0);
		private final RuleCall cMembersGivenParserRuleCall_3_0_0_0 = (RuleCall)cMembersAlternatives_3_0_0.eContents().get(0);
		private final RuleCall cMembersGivenReferenceParserRuleCall_3_0_0_1 = (RuleCall)cMembersAlternatives_3_0_0.eContents().get(1);
		private final Assignment cMembersAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final Alternatives cMembersAlternatives_3_1_0 = (Alternatives)cMembersAssignment_3_1.eContents().get(0);
		private final RuleCall cMembersAndParserRuleCall_3_1_0_0 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(0);
		private final RuleCall cMembersAndReferenceParserRuleCall_3_1_0_1 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(1);
		private final RuleCall cMembersButParserRuleCall_3_1_0_2 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(2);
		private final RuleCall cMembersButReferenceParserRuleCall_3_1_0_3 = (RuleCall)cMembersAlternatives_3_1_0.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cMembersAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final Alternatives cMembersAlternatives_4_0_0 = (Alternatives)cMembersAssignment_4_0.eContents().get(0);
		private final RuleCall cMembersWhenParserRuleCall_4_0_0_0 = (RuleCall)cMembersAlternatives_4_0_0.eContents().get(0);
		private final RuleCall cMembersWhenReferenceParserRuleCall_4_0_0_1 = (RuleCall)cMembersAlternatives_4_0_0.eContents().get(1);
		private final Assignment cMembersAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final Alternatives cMembersAlternatives_4_1_0 = (Alternatives)cMembersAssignment_4_1.eContents().get(0);
		private final RuleCall cMembersAndParserRuleCall_4_1_0_0 = (RuleCall)cMembersAlternatives_4_1_0.eContents().get(0);
		private final RuleCall cMembersAndReferenceParserRuleCall_4_1_0_1 = (RuleCall)cMembersAlternatives_4_1_0.eContents().get(1);
		private final RuleCall cMembersButParserRuleCall_4_1_0_2 = (RuleCall)cMembersAlternatives_4_1_0.eContents().get(2);
		private final RuleCall cMembersButReferenceParserRuleCall_4_1_0_3 = (RuleCall)cMembersAlternatives_4_1_0.eContents().get(3);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Assignment cMembersAssignment_5_0 = (Assignment)cGroup_5.eContents().get(0);
		private final Alternatives cMembersAlternatives_5_0_0 = (Alternatives)cMembersAssignment_5_0.eContents().get(0);
		private final RuleCall cMembersThenParserRuleCall_5_0_0_0 = (RuleCall)cMembersAlternatives_5_0_0.eContents().get(0);
		private final RuleCall cMembersThenReferenceParserRuleCall_5_0_0_1 = (RuleCall)cMembersAlternatives_5_0_0.eContents().get(1);
		private final Assignment cMembersAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final Alternatives cMembersAlternatives_5_1_0 = (Alternatives)cMembersAssignment_5_1.eContents().get(0);
		private final RuleCall cMembersAndParserRuleCall_5_1_0_0 = (RuleCall)cMembersAlternatives_5_1_0.eContents().get(0);
		private final RuleCall cMembersAndReferenceParserRuleCall_5_1_0_1 = (RuleCall)cMembersAlternatives_5_1_0.eContents().get(1);
		private final RuleCall cMembersButParserRuleCall_5_1_0_2 = (RuleCall)cMembersAlternatives_5_1_0.eContents().get(2);
		private final RuleCall cMembersButReferenceParserRuleCall_5_1_0_3 = (RuleCall)cMembersAlternatives_5_1_0.eContents().get(3);
		
		//Scenario:
		//	{Scenario} name=SCENARIO_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference | But |
		//	ButReference)*)? (members+=(When | WhenReference) members+=(And | AndReference | But | ButReference)*)?
		//	(members+=(Then | ThenReference) members+=(And | AndReference | But | ButReference)*)?;
		public ParserRule getRule() { return rule; }

		//{Scenario} name=SCENARIO_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference | But |
		//ButReference)*)? (members+=(When | WhenReference) members+=(And | AndReference | But | ButReference)*)? (members+=(Then
		//| ThenReference) members+=(And | AndReference | But | ButReference)*)?
		public Group getGroup() { return cGroup; }

		//{Scenario}
		public Action getScenarioAction_0() { return cScenarioAction_0; }

		//name=SCENARIO_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//SCENARIO_TEXT
		public RuleCall getNameSCENARIO_TEXTTerminalRuleCall_1_0() { return cNameSCENARIO_TEXTTerminalRuleCall_1_0; }

		//members+=Member*
		public Assignment getMembersAssignment_2() { return cMembersAssignment_2; }

		//Member
		public RuleCall getMembersMemberParserRuleCall_2_0() { return cMembersMemberParserRuleCall_2_0; }

		//(members+=(Given | GivenReference) members+=(And | AndReference | But | ButReference)*)?
		public Group getGroup_3() { return cGroup_3; }

		//members+=(Given | GivenReference)
		public Assignment getMembersAssignment_3_0() { return cMembersAssignment_3_0; }

		//Given | GivenReference
		public Alternatives getMembersAlternatives_3_0_0() { return cMembersAlternatives_3_0_0; }

		//Given
		public RuleCall getMembersGivenParserRuleCall_3_0_0_0() { return cMembersGivenParserRuleCall_3_0_0_0; }

		//GivenReference
		public RuleCall getMembersGivenReferenceParserRuleCall_3_0_0_1() { return cMembersGivenReferenceParserRuleCall_3_0_0_1; }

		//members+=(And | AndReference | But | ButReference)*
		public Assignment getMembersAssignment_3_1() { return cMembersAssignment_3_1; }

		//And | AndReference | But | ButReference
		public Alternatives getMembersAlternatives_3_1_0() { return cMembersAlternatives_3_1_0; }

		//And
		public RuleCall getMembersAndParserRuleCall_3_1_0_0() { return cMembersAndParserRuleCall_3_1_0_0; }

		//AndReference
		public RuleCall getMembersAndReferenceParserRuleCall_3_1_0_1() { return cMembersAndReferenceParserRuleCall_3_1_0_1; }

		//But
		public RuleCall getMembersButParserRuleCall_3_1_0_2() { return cMembersButParserRuleCall_3_1_0_2; }

		//ButReference
		public RuleCall getMembersButReferenceParserRuleCall_3_1_0_3() { return cMembersButReferenceParserRuleCall_3_1_0_3; }

		//(members+=(When | WhenReference) members+=(And | AndReference | But | ButReference)*)?
		public Group getGroup_4() { return cGroup_4; }

		//members+=(When | WhenReference)
		public Assignment getMembersAssignment_4_0() { return cMembersAssignment_4_0; }

		//When | WhenReference
		public Alternatives getMembersAlternatives_4_0_0() { return cMembersAlternatives_4_0_0; }

		//When
		public RuleCall getMembersWhenParserRuleCall_4_0_0_0() { return cMembersWhenParserRuleCall_4_0_0_0; }

		//WhenReference
		public RuleCall getMembersWhenReferenceParserRuleCall_4_0_0_1() { return cMembersWhenReferenceParserRuleCall_4_0_0_1; }

		//members+=(And | AndReference | But | ButReference)*
		public Assignment getMembersAssignment_4_1() { return cMembersAssignment_4_1; }

		//And | AndReference | But | ButReference
		public Alternatives getMembersAlternatives_4_1_0() { return cMembersAlternatives_4_1_0; }

		//And
		public RuleCall getMembersAndParserRuleCall_4_1_0_0() { return cMembersAndParserRuleCall_4_1_0_0; }

		//AndReference
		public RuleCall getMembersAndReferenceParserRuleCall_4_1_0_1() { return cMembersAndReferenceParserRuleCall_4_1_0_1; }

		//But
		public RuleCall getMembersButParserRuleCall_4_1_0_2() { return cMembersButParserRuleCall_4_1_0_2; }

		//ButReference
		public RuleCall getMembersButReferenceParserRuleCall_4_1_0_3() { return cMembersButReferenceParserRuleCall_4_1_0_3; }

		//(members+=(Then | ThenReference) members+=(And | AndReference | But | ButReference)*)?
		public Group getGroup_5() { return cGroup_5; }

		//members+=(Then | ThenReference)
		public Assignment getMembersAssignment_5_0() { return cMembersAssignment_5_0; }

		//Then | ThenReference
		public Alternatives getMembersAlternatives_5_0_0() { return cMembersAlternatives_5_0_0; }

		//Then
		public RuleCall getMembersThenParserRuleCall_5_0_0_0() { return cMembersThenParserRuleCall_5_0_0_0; }

		//ThenReference
		public RuleCall getMembersThenReferenceParserRuleCall_5_0_0_1() { return cMembersThenReferenceParserRuleCall_5_0_0_1; }

		//members+=(And | AndReference | But | ButReference)*
		public Assignment getMembersAssignment_5_1() { return cMembersAssignment_5_1; }

		//And | AndReference | But | ButReference
		public Alternatives getMembersAlternatives_5_1_0() { return cMembersAlternatives_5_1_0; }

		//And
		public RuleCall getMembersAndParserRuleCall_5_1_0_0() { return cMembersAndParserRuleCall_5_1_0_0; }

		//AndReference
		public RuleCall getMembersAndReferenceParserRuleCall_5_1_0_1() { return cMembersAndReferenceParserRuleCall_5_1_0_1; }

		//But
		public RuleCall getMembersButParserRuleCall_5_1_0_2() { return cMembersButParserRuleCall_5_1_0_2; }

		//ButReference
		public RuleCall getMembersButReferenceParserRuleCall_5_1_0_3() { return cMembersButReferenceParserRuleCall_5_1_0_3; }
	}

	public class MemberElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Member");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXtendMemberAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cAnnotationsXAnnotationParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Action cXtendFieldAnnotationInfoAction_2_0 = (Action)cGroup_2.eContents().get(0);
		private final Assignment cModifiersAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_1_0 = (RuleCall)cModifiersAssignment_2_1.eContents().get(0);
		private final Alternatives cAlternatives_2_2 = (Alternatives)cGroup_2.eContents().get(2);
		private final Group cGroup_2_2_0 = (Group)cAlternatives_2_2.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_0_0 = (Assignment)cGroup_2_2_0.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_2_0_0_0 = (RuleCall)cModifiersAssignment_2_2_0_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_0_1 = (Assignment)cGroup_2_2_0.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_2_0_1_0 = (RuleCall)cModifiersAssignment_2_2_0_1.eContents().get(0);
		private final Assignment cTypeAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_0_2_0 = (RuleCall)cTypeAssignment_2_2_0_2.eContents().get(0);
		private final Assignment cNameAssignment_2_2_0_3 = (Assignment)cGroup_2_2_0.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_2_2_0_3_0 = (RuleCall)cNameAssignment_2_2_0_3.eContents().get(0);
		private final Group cGroup_2_2_1 = (Group)cAlternatives_2_2.eContents().get(1);
		private final Assignment cModifiersAssignment_2_2_1_0 = (Assignment)cGroup_2_2_1.eContents().get(0);
		private final Keyword cModifiersExtensionKeyword_2_2_1_0_0 = (Keyword)cModifiersAssignment_2_2_1_0.eContents().get(0);
		private final Alternatives cAlternatives_2_2_1_1 = (Alternatives)cGroup_2_2_1.eContents().get(1);
		private final Assignment cModifiersAssignment_2_2_1_1_0 = (Assignment)cAlternatives_2_2_1_1.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_2_1_1_0_0 = (RuleCall)cModifiersAssignment_2_2_1_1_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_1_1_1 = (Assignment)cAlternatives_2_2_1_1.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_2_1_1_1_0 = (RuleCall)cModifiersAssignment_2_2_1_1_1.eContents().get(0);
		private final Assignment cTypeAssignment_2_2_1_2 = (Assignment)cGroup_2_2_1.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_1_2_0 = (RuleCall)cTypeAssignment_2_2_1_2.eContents().get(0);
		private final Assignment cNameAssignment_2_2_1_3 = (Assignment)cGroup_2_2_1.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_2_2_1_3_0 = (RuleCall)cNameAssignment_2_2_1_3.eContents().get(0);
		private final Group cGroup_2_2_2 = (Group)cAlternatives_2_2.eContents().get(2);
		private final Assignment cModifiersAssignment_2_2_2_0 = (Assignment)cGroup_2_2_2.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_2_2_0_0 = (RuleCall)cModifiersAssignment_2_2_2_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_2_1 = (Assignment)cGroup_2_2_2.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_2_2_1_0 = (RuleCall)cModifiersAssignment_2_2_2_1.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_2_2 = (Assignment)cGroup_2_2_2.eContents().get(2);
		private final Keyword cModifiersExtensionKeyword_2_2_2_2_0 = (Keyword)cModifiersAssignment_2_2_2_2.eContents().get(0);
		private final Assignment cModifiersAssignment_2_2_2_3 = (Assignment)cGroup_2_2_2.eContents().get(3);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_2_2_3_0 = (RuleCall)cModifiersAssignment_2_2_2_3.eContents().get(0);
		private final Assignment cTypeAssignment_2_2_2_4 = (Assignment)cGroup_2_2_2.eContents().get(4);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_2_4_0 = (RuleCall)cTypeAssignment_2_2_2_4.eContents().get(0);
		private final Assignment cNameAssignment_2_2_2_5 = (Assignment)cGroup_2_2_2.eContents().get(5);
		private final RuleCall cNameValidIDParserRuleCall_2_2_2_5_0 = (RuleCall)cNameAssignment_2_2_2_5.eContents().get(0);
		private final Group cGroup_2_2_3 = (Group)cAlternatives_2_2.eContents().get(3);
		private final Assignment cTypeAssignment_2_2_3_0 = (Assignment)cGroup_2_2_3.eContents().get(0);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_3_0_0 = (RuleCall)cTypeAssignment_2_2_3_0.eContents().get(0);
		private final Assignment cNameAssignment_2_2_3_1 = (Assignment)cGroup_2_2_3.eContents().get(1);
		private final RuleCall cNameValidIDParserRuleCall_2_2_3_1_0 = (RuleCall)cNameAssignment_2_2_3_1.eContents().get(0);
		private final Group cGroup_2_3 = (Group)cGroup_2.eContents().get(3);
		private final Keyword cEqualsSignKeyword_2_3_0 = (Keyword)cGroup_2_3.eContents().get(0);
		private final Assignment cInitialValueAssignment_2_3_1 = (Assignment)cGroup_2_3.eContents().get(1);
		private final RuleCall cInitialValueXExpressionParserRuleCall_2_3_1_0 = (RuleCall)cInitialValueAssignment_2_3_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_2_4 = (Keyword)cGroup_2.eContents().get(4);
		
		//Member returns xtend::XtendMember:
		//	{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
		//	(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//	(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//	modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//	type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"?);
		public ParserRule getRule() { return rule; }

		//{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
		//(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"?)
		public Group getGroup() { return cGroup; }

		//{xtend::XtendMember}
		public Action getXtendMemberAction_0() { return cXtendMemberAction_0; }

		//annotations+=XAnnotation*
		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }

		//XAnnotation
		public RuleCall getAnnotationsXAnnotationParserRuleCall_1_0() { return cAnnotationsXAnnotationParserRuleCall_1_0; }

		//{xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier* (modifiers+=FieldModifier
		//modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension" (modifiers+=FieldModifier |
		//modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier modifiers+=CommonModifier*
		//modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? | type=JvmTypeReference
		//name=ValidID) ("=" initialValue=XExpression)? ";"?
		public Group getGroup_2() { return cGroup_2; }

		//{xtend::XtendField.annotationInfo=current}
		public Action getXtendFieldAnnotationInfoAction_2_0() { return cXtendFieldAnnotationInfoAction_2_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_1() { return cModifiersAssignment_2_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_1_0() { return cModifiersCommonModifierParserRuleCall_2_1_0; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//type=JvmTypeReference name=ValidID
		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID
		public Group getGroup_2_2_0() { return cGroup_2_2_0; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_2_0_0() { return cModifiersAssignment_2_2_0_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_2_0_0_0() { return cModifiersFieldModifierParserRuleCall_2_2_0_0_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_2_0_1() { return cModifiersAssignment_2_2_0_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_2_0_1_0() { return cModifiersCommonModifierParserRuleCall_2_2_0_1_0; }

		//type=JvmTypeReference?
		public Assignment getTypeAssignment_2_2_0_2() { return cTypeAssignment_2_2_0_2; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_0_2_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_0_2_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_2_0_3() { return cNameAssignment_2_2_0_3; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_2_0_3_0() { return cNameValidIDParserRuleCall_2_2_0_3_0; }

		//modifiers+="extension" (modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID?
		public Group getGroup_2_2_1() { return cGroup_2_2_1; }

		//modifiers+="extension"
		public Assignment getModifiersAssignment_2_2_1_0() { return cModifiersAssignment_2_2_1_0; }

		//"extension"
		public Keyword getModifiersExtensionKeyword_2_2_1_0_0() { return cModifiersExtensionKeyword_2_2_1_0_0; }

		//(modifiers+=FieldModifier | modifiers+=CommonModifier)*
		public Alternatives getAlternatives_2_2_1_1() { return cAlternatives_2_2_1_1; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_2_1_1_0() { return cModifiersAssignment_2_2_1_1_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_2_1_1_0_0() { return cModifiersFieldModifierParserRuleCall_2_2_1_1_0_0; }

		//modifiers+=CommonModifier
		public Assignment getModifiersAssignment_2_2_1_1_1() { return cModifiersAssignment_2_2_1_1_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_2_1_1_1_0() { return cModifiersCommonModifierParserRuleCall_2_2_1_1_1_0; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_2_1_2() { return cTypeAssignment_2_2_1_2; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_1_2_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_1_2_0; }

		//name=ValidID?
		public Assignment getNameAssignment_2_2_1_3() { return cNameAssignment_2_2_1_3; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_2_1_3_0() { return cNameValidIDParserRuleCall_2_2_1_3_0; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier*
		//type=JvmTypeReference name=ValidID?
		public Group getGroup_2_2_2() { return cGroup_2_2_2; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_2_2_0() { return cModifiersAssignment_2_2_2_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_2_2_0_0() { return cModifiersFieldModifierParserRuleCall_2_2_2_0_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_2_2_1() { return cModifiersAssignment_2_2_2_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_2_2_1_0() { return cModifiersCommonModifierParserRuleCall_2_2_2_1_0; }

		//modifiers+="extension"
		public Assignment getModifiersAssignment_2_2_2_2() { return cModifiersAssignment_2_2_2_2; }

		//"extension"
		public Keyword getModifiersExtensionKeyword_2_2_2_2_0() { return cModifiersExtensionKeyword_2_2_2_2_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_2_2_3() { return cModifiersAssignment_2_2_2_3; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_2_2_3_0() { return cModifiersCommonModifierParserRuleCall_2_2_2_3_0; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_2_2_4() { return cTypeAssignment_2_2_2_4; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_2_4_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_2_4_0; }

		//name=ValidID?
		public Assignment getNameAssignment_2_2_2_5() { return cNameAssignment_2_2_2_5; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_2_2_5_0() { return cNameValidIDParserRuleCall_2_2_2_5_0; }

		//type=JvmTypeReference name=ValidID
		public Group getGroup_2_2_3() { return cGroup_2_2_3; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_2_3_0() { return cTypeAssignment_2_2_3_0; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_3_0_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_3_0_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_2_3_1() { return cNameAssignment_2_2_3_1; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_2_3_1_0() { return cNameValidIDParserRuleCall_2_2_3_1_0; }

		//("=" initialValue=XExpression)?
		public Group getGroup_2_3() { return cGroup_2_3; }

		//"="
		public Keyword getEqualsSignKeyword_2_3_0() { return cEqualsSignKeyword_2_3_0; }

		//initialValue=XExpression
		public Assignment getInitialValueAssignment_2_3_1() { return cInitialValueAssignment_2_3_1; }

		//XExpression
		public RuleCall getInitialValueXExpressionParserRuleCall_2_3_1_0() { return cInitialValueXExpressionParserRuleCall_2_3_1_0; }

		//";"?
		public Keyword getSemicolonKeyword_2_4() { return cSemicolonKeyword_2_4; }
	}

	public class GivenReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "GivenReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cGivenReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cReferenceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cReferenceGivenCrossReference_1_0 = (CrossReference)cReferenceAssignment_1.eContents().get(0);
		private final RuleCall cReferenceGivenGIVEN_TEXTTerminalRuleCall_1_0_1 = (RuleCall)cReferenceGivenCrossReference_1_0.eContents().get(1);
		
		//GivenReference:
		//	{GivenReference} reference=[Given|GIVEN_TEXT];
		public ParserRule getRule() { return rule; }

		//{GivenReference} reference=[Given|GIVEN_TEXT]
		public Group getGroup() { return cGroup; }

		//{GivenReference}
		public Action getGivenReferenceAction_0() { return cGivenReferenceAction_0; }

		//reference=[Given|GIVEN_TEXT]
		public Assignment getReferenceAssignment_1() { return cReferenceAssignment_1; }

		//[Given|GIVEN_TEXT]
		public CrossReference getReferenceGivenCrossReference_1_0() { return cReferenceGivenCrossReference_1_0; }

		//GIVEN_TEXT
		public RuleCall getReferenceGivenGIVEN_TEXTTerminalRuleCall_1_0_1() { return cReferenceGivenGIVEN_TEXTTerminalRuleCall_1_0_1; }
	}

	public class GivenElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Given");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cGivenAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameGIVEN_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//Given:
		//	{Given} name=GIVEN_TEXT expression=BlockExpression;
		public ParserRule getRule() { return rule; }

		//{Given} name=GIVEN_TEXT expression=BlockExpression
		public Group getGroup() { return cGroup; }

		//{Given}
		public Action getGivenAction_0() { return cGivenAction_0; }

		//name=GIVEN_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//GIVEN_TEXT
		public RuleCall getNameGIVEN_TEXTTerminalRuleCall_1_0() { return cNameGIVEN_TEXTTerminalRuleCall_1_0; }

		//expression=BlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BlockExpression
		public RuleCall getExpressionBlockExpressionParserRuleCall_2_0() { return cExpressionBlockExpressionParserRuleCall_2_0; }
	}

	public class WhenReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "WhenReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cWhenReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cReferenceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cReferenceWhenCrossReference_1_0 = (CrossReference)cReferenceAssignment_1.eContents().get(0);
		private final RuleCall cReferenceWhenWHEN_TEXTTerminalRuleCall_1_0_1 = (RuleCall)cReferenceWhenCrossReference_1_0.eContents().get(1);
		
		//WhenReference:
		//	{WhenReference} reference=[When|WHEN_TEXT];
		public ParserRule getRule() { return rule; }

		//{WhenReference} reference=[When|WHEN_TEXT]
		public Group getGroup() { return cGroup; }

		//{WhenReference}
		public Action getWhenReferenceAction_0() { return cWhenReferenceAction_0; }

		//reference=[When|WHEN_TEXT]
		public Assignment getReferenceAssignment_1() { return cReferenceAssignment_1; }

		//[When|WHEN_TEXT]
		public CrossReference getReferenceWhenCrossReference_1_0() { return cReferenceWhenCrossReference_1_0; }

		//WHEN_TEXT
		public RuleCall getReferenceWhenWHEN_TEXTTerminalRuleCall_1_0_1() { return cReferenceWhenWHEN_TEXTTerminalRuleCall_1_0_1; }
	}

	public class WhenElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "When");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cWhenAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameWHEN_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//When:
		//	{When} name=WHEN_TEXT expression=BlockExpression;
		public ParserRule getRule() { return rule; }

		//{When} name=WHEN_TEXT expression=BlockExpression
		public Group getGroup() { return cGroup; }

		//{When}
		public Action getWhenAction_0() { return cWhenAction_0; }

		//name=WHEN_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//WHEN_TEXT
		public RuleCall getNameWHEN_TEXTTerminalRuleCall_1_0() { return cNameWHEN_TEXTTerminalRuleCall_1_0; }

		//expression=BlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BlockExpression
		public RuleCall getExpressionBlockExpressionParserRuleCall_2_0() { return cExpressionBlockExpressionParserRuleCall_2_0; }
	}

	public class ThenReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ThenReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cThenReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cReferenceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cReferenceThenCrossReference_1_0 = (CrossReference)cReferenceAssignment_1.eContents().get(0);
		private final RuleCall cReferenceThenTHEN_TEXTTerminalRuleCall_1_0_1 = (RuleCall)cReferenceThenCrossReference_1_0.eContents().get(1);
		
		//ThenReference:
		//	{ThenReference} reference=[Then|THEN_TEXT];
		public ParserRule getRule() { return rule; }

		//{ThenReference} reference=[Then|THEN_TEXT]
		public Group getGroup() { return cGroup; }

		//{ThenReference}
		public Action getThenReferenceAction_0() { return cThenReferenceAction_0; }

		//reference=[Then|THEN_TEXT]
		public Assignment getReferenceAssignment_1() { return cReferenceAssignment_1; }

		//[Then|THEN_TEXT]
		public CrossReference getReferenceThenCrossReference_1_0() { return cReferenceThenCrossReference_1_0; }

		//THEN_TEXT
		public RuleCall getReferenceThenTHEN_TEXTTerminalRuleCall_1_0_1() { return cReferenceThenTHEN_TEXTTerminalRuleCall_1_0_1; }
	}

	public class ThenElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Then");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cThenAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameTHEN_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//Then:
		//	{Then} name=THEN_TEXT expression=BlockExpression;
		public ParserRule getRule() { return rule; }

		//{Then} name=THEN_TEXT expression=BlockExpression
		public Group getGroup() { return cGroup; }

		//{Then}
		public Action getThenAction_0() { return cThenAction_0; }

		//name=THEN_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//THEN_TEXT
		public RuleCall getNameTHEN_TEXTTerminalRuleCall_1_0() { return cNameTHEN_TEXTTerminalRuleCall_1_0; }

		//expression=BlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BlockExpression
		public RuleCall getExpressionBlockExpressionParserRuleCall_2_0() { return cExpressionBlockExpressionParserRuleCall_2_0; }
	}

	public class AndReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AndReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAndReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cReferenceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cReferenceAndCrossReference_1_0 = (CrossReference)cReferenceAssignment_1.eContents().get(0);
		private final RuleCall cReferenceAndAND_TEXTTerminalRuleCall_1_0_1 = (RuleCall)cReferenceAndCrossReference_1_0.eContents().get(1);
		
		//AndReference:
		//	{AndReference} reference=[And|AND_TEXT];
		public ParserRule getRule() { return rule; }

		//{AndReference} reference=[And|AND_TEXT]
		public Group getGroup() { return cGroup; }

		//{AndReference}
		public Action getAndReferenceAction_0() { return cAndReferenceAction_0; }

		//reference=[And|AND_TEXT]
		public Assignment getReferenceAssignment_1() { return cReferenceAssignment_1; }

		//[And|AND_TEXT]
		public CrossReference getReferenceAndCrossReference_1_0() { return cReferenceAndCrossReference_1_0; }

		//AND_TEXT
		public RuleCall getReferenceAndAND_TEXTTerminalRuleCall_1_0_1() { return cReferenceAndAND_TEXTTerminalRuleCall_1_0_1; }
	}

	public class AndElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "And");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAndAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameAND_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//And:
		//	{And} name=AND_TEXT expression=BlockExpression;
		public ParserRule getRule() { return rule; }

		//{And} name=AND_TEXT expression=BlockExpression
		public Group getGroup() { return cGroup; }

		//{And}
		public Action getAndAction_0() { return cAndAction_0; }

		//name=AND_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//AND_TEXT
		public RuleCall getNameAND_TEXTTerminalRuleCall_1_0() { return cNameAND_TEXTTerminalRuleCall_1_0; }

		//expression=BlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BlockExpression
		public RuleCall getExpressionBlockExpressionParserRuleCall_2_0() { return cExpressionBlockExpressionParserRuleCall_2_0; }
	}

	public class ButReferenceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ButReference");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cButReferenceAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cReferenceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cReferenceButCrossReference_1_0 = (CrossReference)cReferenceAssignment_1.eContents().get(0);
		private final RuleCall cReferenceButBUT_TEXTTerminalRuleCall_1_0_1 = (RuleCall)cReferenceButCrossReference_1_0.eContents().get(1);
		
		//ButReference:
		//	{ButReference} reference=[But|BUT_TEXT];
		public ParserRule getRule() { return rule; }

		//{ButReference} reference=[But|BUT_TEXT]
		public Group getGroup() { return cGroup; }

		//{ButReference}
		public Action getButReferenceAction_0() { return cButReferenceAction_0; }

		//reference=[But|BUT_TEXT]
		public Assignment getReferenceAssignment_1() { return cReferenceAssignment_1; }

		//[But|BUT_TEXT]
		public CrossReference getReferenceButCrossReference_1_0() { return cReferenceButCrossReference_1_0; }

		//BUT_TEXT
		public RuleCall getReferenceButBUT_TEXTTerminalRuleCall_1_0_1() { return cReferenceButBUT_TEXTTerminalRuleCall_1_0_1; }
	}

	public class ButElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "But");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cButAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameBUT_TEXTTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionBlockExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//But:
		//	{But} name=BUT_TEXT expression=BlockExpression;
		public ParserRule getRule() { return rule; }

		//{But} name=BUT_TEXT expression=BlockExpression
		public Group getGroup() { return cGroup; }

		//{But}
		public Action getButAction_0() { return cButAction_0; }

		//name=BUT_TEXT
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//BUT_TEXT
		public RuleCall getNameBUT_TEXTTerminalRuleCall_1_0() { return cNameBUT_TEXTTerminalRuleCall_1_0; }

		//expression=BlockExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//BlockExpression
		public RuleCall getExpressionBlockExpressionParserRuleCall_2_0() { return cExpressionBlockExpressionParserRuleCall_2_0; }
	}

	public class BlockExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BlockExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cExpressionsAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cExpressionsXExpressionOrVarDeclarationParserRuleCall_0_0 = (RuleCall)cExpressionsAssignment_0.eContents().get(0);
		private final Keyword cSemicolonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		/// *
		// * artificial node to simplify folding
		// * / BlockExpression returns xbase::XBlockExpression:
		//	(expressions+=XExpressionOrVarDeclaration ";"?)+;
		public ParserRule getRule() { return rule; }

		//(expressions+=XExpressionOrVarDeclaration ";"?)+
		public Group getGroup() { return cGroup; }

		//expressions+=XExpressionOrVarDeclaration
		public Assignment getExpressionsAssignment_0() { return cExpressionsAssignment_0; }

		//XExpressionOrVarDeclaration
		public RuleCall getExpressionsXExpressionOrVarDeclarationParserRuleCall_0_0() { return cExpressionsXExpressionOrVarDeclarationParserRuleCall_0_0; }

		//";"?
		public Keyword getSemicolonKeyword_1() { return cSemicolonKeyword_1; }
	}

	public class XPrimaryExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "XPrimaryExpression");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cXConstructorCallParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cXBlockExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cXSwitchExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cXSynchronizedExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cXFeatureCallParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cXLiteralParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cXIfExpressionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		private final RuleCall cXForLoopExpressionParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final RuleCall cXBasicForLoopExpressionParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
		private final RuleCall cXWhileExpressionParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
		private final RuleCall cXDoWhileExpressionParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
		private final RuleCall cXThrowExpressionParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
		private final RuleCall cXReturnExpressionParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
		private final RuleCall cXTryCatchFinallyExpressionParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
		private final RuleCall cXParenthesizedExpressionParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
		private final RuleCall cAssertionParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
		
		////ExampleTable:
		////	name=EXAMPLE_TEXT
		////	columns+=ExampleColumn+ EXAMPLE_ROW_END
		////	(rows += ExampleRow)*;
		////
		////
		////ExampleColumn: 
		////	(PIPE | PIPE_SPACES) type=JvmTypeReference? name=ValidID ;
		////
		////ExampleRow:
		////	((PIPE | PIPE_SPACES) cells+=XExpression)+ EXAMPLE_ROW_END;
		//XPrimaryExpression returns xbase::XExpression:
		//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
		//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
		//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression | Assertion;
		public ParserRule getRule() { return rule; }

		//XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
		//XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression | XThrowExpression
		//| XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression | Assertion
		public Alternatives getAlternatives() { return cAlternatives; }

		//XConstructorCall
		public RuleCall getXConstructorCallParserRuleCall_0() { return cXConstructorCallParserRuleCall_0; }

		//XBlockExpression
		public RuleCall getXBlockExpressionParserRuleCall_1() { return cXBlockExpressionParserRuleCall_1; }

		//XSwitchExpression
		public RuleCall getXSwitchExpressionParserRuleCall_2() { return cXSwitchExpressionParserRuleCall_2; }

		//XSynchronizedExpression
		public RuleCall getXSynchronizedExpressionParserRuleCall_3() { return cXSynchronizedExpressionParserRuleCall_3; }

		//XFeatureCall
		public RuleCall getXFeatureCallParserRuleCall_4() { return cXFeatureCallParserRuleCall_4; }

		//XLiteral
		public RuleCall getXLiteralParserRuleCall_5() { return cXLiteralParserRuleCall_5; }

		//XIfExpression
		public RuleCall getXIfExpressionParserRuleCall_6() { return cXIfExpressionParserRuleCall_6; }

		//XForLoopExpression
		public RuleCall getXForLoopExpressionParserRuleCall_7() { return cXForLoopExpressionParserRuleCall_7; }

		//XBasicForLoopExpression
		public RuleCall getXBasicForLoopExpressionParserRuleCall_8() { return cXBasicForLoopExpressionParserRuleCall_8; }

		//XWhileExpression
		public RuleCall getXWhileExpressionParserRuleCall_9() { return cXWhileExpressionParserRuleCall_9; }

		//XDoWhileExpression
		public RuleCall getXDoWhileExpressionParserRuleCall_10() { return cXDoWhileExpressionParserRuleCall_10; }

		//XThrowExpression
		public RuleCall getXThrowExpressionParserRuleCall_11() { return cXThrowExpressionParserRuleCall_11; }

		//XReturnExpression
		public RuleCall getXReturnExpressionParserRuleCall_12() { return cXReturnExpressionParserRuleCall_12; }

		//XTryCatchFinallyExpression
		public RuleCall getXTryCatchFinallyExpressionParserRuleCall_13() { return cXTryCatchFinallyExpressionParserRuleCall_13; }

		//XParenthesizedExpression
		public RuleCall getXParenthesizedExpressionParserRuleCall_14() { return cXParenthesizedExpressionParserRuleCall_14; }

		//Assertion
		public RuleCall getAssertionParserRuleCall_15() { return cAssertionParserRuleCall_15; }
	}

	public class XRelationalExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "XRelationalExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXOtherOperatorExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Group cGroup_1_0_0_0 = (Group)cGroup_1_0_0.eContents().get(0);
		private final Action cShouldLeftOperandAction_1_0_0_0_0 = (Action)cGroup_1_0_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_0_0_0_1 = (Assignment)cGroup_1_0_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_0_0_0_1_0 = (CrossReference)cFeatureAssignment_1_0_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementShouldParserRuleCall_1_0_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_0_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
		private final RuleCall cRightOperandXOtherOperatorExpressionParserRuleCall_1_0_1_0 = (RuleCall)cRightOperandAssignment_1_0_1.eContents().get(0);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final Group cGroup_1_1_0 = (Group)cGroup_1_1.eContents().get(0);
		private final Group cGroup_1_1_0_0 = (Group)cGroup_1_1_0.eContents().get(0);
		private final Action cShouldThrowExpressionAction_1_1_0_0_0 = (Action)cGroup_1_1_0_0.eContents().get(0);
		private final Alternatives cAlternatives_1_1_0_0_1 = (Alternatives)cGroup_1_1_0_0.eContents().get(1);
		private final Group cGroup_1_1_0_0_1_0 = (Group)cAlternatives_1_1_0_0_1.eContents().get(0);
		private final Keyword cShouldKeyword_1_1_0_0_1_0_0 = (Keyword)cGroup_1_1_0_0_1_0.eContents().get(0);
		private final Keyword cThrowKeyword_1_1_0_0_1_0_1 = (Keyword)cGroup_1_1_0_0_1_0.eContents().get(1);
		private final Keyword cThrowsKeyword_1_1_0_0_1_1 = (Keyword)cAlternatives_1_1_0_0_1.eContents().get(1);
		private final Assignment cTypeAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_1_1_1_0 = (RuleCall)cTypeAssignment_1_1_1.eContents().get(0);
		private final Group cGroup_1_2 = (Group)cAlternatives_1.eContents().get(2);
		private final Group cGroup_1_2_0 = (Group)cGroup_1_2.eContents().get(0);
		private final Group cGroup_1_2_0_0 = (Group)cGroup_1_2_0.eContents().get(0);
		private final Action cXInstanceOfExpressionExpressionAction_1_2_0_0_0 = (Action)cGroup_1_2_0_0.eContents().get(0);
		private final Keyword cInstanceofKeyword_1_2_0_0_1 = (Keyword)cGroup_1_2_0_0.eContents().get(1);
		private final Assignment cTypeAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_1_2_1_0 = (RuleCall)cTypeAssignment_1_2_1.eContents().get(0);
		private final Group cGroup_1_3 = (Group)cAlternatives_1.eContents().get(3);
		private final Group cGroup_1_3_0 = (Group)cGroup_1_3.eContents().get(0);
		private final Group cGroup_1_3_0_0 = (Group)cGroup_1_3_0.eContents().get(0);
		private final Action cXBinaryOperationLeftOperandAction_1_3_0_0_0 = (Action)cGroup_1_3_0_0.eContents().get(0);
		private final Assignment cFeatureAssignment_1_3_0_0_1 = (Assignment)cGroup_1_3_0_0.eContents().get(1);
		private final CrossReference cFeatureJvmIdentifiableElementCrossReference_1_3_0_0_1_0 = (CrossReference)cFeatureAssignment_1_3_0_0_1.eContents().get(0);
		private final RuleCall cFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_3_0_0_1_0_1 = (RuleCall)cFeatureJvmIdentifiableElementCrossReference_1_3_0_0_1_0.eContents().get(1);
		private final Assignment cRightOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
		private final RuleCall cRightOperandXOtherOperatorExpressionParserRuleCall_1_3_1_0 = (RuleCall)cRightOperandAssignment_1_3_1.eContents().get(0);
		
		//XRelationalExpression returns xbase::XExpression:
		//	XOtherOperatorExpression (=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should])
		//	rightOperand=XOtherOperatorExpression | => ({ShouldThrow.expression=current} ("should" "throw" | "throws"))
		//	type=JvmTypeReference | => ({xbase::XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
		//	({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
		//	rightOperand=XOtherOperatorExpression)*;
		public ParserRule getRule() { return rule; }

		//XOtherOperatorExpression (=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should])
		//rightOperand=XOtherOperatorExpression | => ({ShouldThrow.expression=current} ("should" "throw" | "throws"))
		//type=JvmTypeReference | => ({xbase::XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
		//({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
		//rightOperand=XOtherOperatorExpression)*
		public Group getGroup() { return cGroup; }

		//XOtherOperatorExpression
		public RuleCall getXOtherOperatorExpressionParserRuleCall_0() { return cXOtherOperatorExpressionParserRuleCall_0; }

		//(=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should]) rightOperand=XOtherOperatorExpression
		//| => ({ShouldThrow.expression=current} ("should" "throw" | "throws")) type=JvmTypeReference | =>
		//({xbase::XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
		//({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
		//rightOperand=XOtherOperatorExpression)*
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should]) rightOperand=XOtherOperatorExpression
		public Group getGroup_1_0() { return cGroup_1_0; }

		//=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should])
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }

		//{Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should]
		public Group getGroup_1_0_0_0() { return cGroup_1_0_0_0; }

		//{Should.leftOperand=current}
		public Action getShouldLeftOperandAction_1_0_0_0_0() { return cShouldLeftOperandAction_1_0_0_0_0; }

		//feature=[types::JvmIdentifiableElement|Should]
		public Assignment getFeatureAssignment_1_0_0_0_1() { return cFeatureAssignment_1_0_0_0_1; }

		//[types::JvmIdentifiableElement|Should]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_0_0_0_1_0; }

		//Should
		public RuleCall getFeatureJvmIdentifiableElementShouldParserRuleCall_1_0_0_0_1_0_1() { return cFeatureJvmIdentifiableElementShouldParserRuleCall_1_0_0_0_1_0_1; }

		//rightOperand=XOtherOperatorExpression
		public Assignment getRightOperandAssignment_1_0_1() { return cRightOperandAssignment_1_0_1; }

		//XOtherOperatorExpression
		public RuleCall getRightOperandXOtherOperatorExpressionParserRuleCall_1_0_1_0() { return cRightOperandXOtherOperatorExpressionParserRuleCall_1_0_1_0; }

		//=> ({ShouldThrow.expression=current} ("should" "throw" | "throws")) type=JvmTypeReference
		public Group getGroup_1_1() { return cGroup_1_1; }

		//=> ({ShouldThrow.expression=current} ("should" "throw" | "throws"))
		public Group getGroup_1_1_0() { return cGroup_1_1_0; }

		//{ShouldThrow.expression=current} ("should" "throw" | "throws")
		public Group getGroup_1_1_0_0() { return cGroup_1_1_0_0; }

		//{ShouldThrow.expression=current}
		public Action getShouldThrowExpressionAction_1_1_0_0_0() { return cShouldThrowExpressionAction_1_1_0_0_0; }

		//"should" "throw" | "throws"
		public Alternatives getAlternatives_1_1_0_0_1() { return cAlternatives_1_1_0_0_1; }

		//"should" "throw"
		public Group getGroup_1_1_0_0_1_0() { return cGroup_1_1_0_0_1_0; }

		//"should"
		public Keyword getShouldKeyword_1_1_0_0_1_0_0() { return cShouldKeyword_1_1_0_0_1_0_0; }

		//"throw"
		public Keyword getThrowKeyword_1_1_0_0_1_0_1() { return cThrowKeyword_1_1_0_0_1_0_1; }

		//"throws"
		public Keyword getThrowsKeyword_1_1_0_0_1_1() { return cThrowsKeyword_1_1_0_0_1_1; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_1_1_1() { return cTypeAssignment_1_1_1; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_1_1_1_0() { return cTypeJvmTypeReferenceParserRuleCall_1_1_1_0; }

		//=> ({xbase::XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference
		public Group getGroup_1_2() { return cGroup_1_2; }

		//=> ({xbase::XInstanceOfExpression.expression=current} "instanceof")
		public Group getGroup_1_2_0() { return cGroup_1_2_0; }

		//{xbase::XInstanceOfExpression.expression=current} "instanceof"
		public Group getGroup_1_2_0_0() { return cGroup_1_2_0_0; }

		//{xbase::XInstanceOfExpression.expression=current}
		public Action getXInstanceOfExpressionExpressionAction_1_2_0_0_0() { return cXInstanceOfExpressionExpressionAction_1_2_0_0_0; }

		//"instanceof"
		public Keyword getInstanceofKeyword_1_2_0_0_1() { return cInstanceofKeyword_1_2_0_0_1; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_1_2_1() { return cTypeAssignment_1_2_1; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_1_2_1_0() { return cTypeJvmTypeReferenceParserRuleCall_1_2_1_0; }

		//=> ({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
		//rightOperand=XOtherOperatorExpression
		public Group getGroup_1_3() { return cGroup_1_3; }

		//=> ({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
		public Group getGroup_1_3_0() { return cGroup_1_3_0; }

		//{xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare]
		public Group getGroup_1_3_0_0() { return cGroup_1_3_0_0; }

		//{xbase::XBinaryOperation.leftOperand=current}
		public Action getXBinaryOperationLeftOperandAction_1_3_0_0_0() { return cXBinaryOperationLeftOperandAction_1_3_0_0_0; }

		//feature=[types::JvmIdentifiableElement|OpCompare]
		public Assignment getFeatureAssignment_1_3_0_0_1() { return cFeatureAssignment_1_3_0_0_1; }

		//[types::JvmIdentifiableElement|OpCompare]
		public CrossReference getFeatureJvmIdentifiableElementCrossReference_1_3_0_0_1_0() { return cFeatureJvmIdentifiableElementCrossReference_1_3_0_0_1_0; }

		//OpCompare
		public RuleCall getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_3_0_0_1_0_1() { return cFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_3_0_0_1_0_1; }

		//rightOperand=XOtherOperatorExpression
		public Assignment getRightOperandAssignment_1_3_1() { return cRightOperandAssignment_1_3_1; }

		//XOtherOperatorExpression
		public RuleCall getRightOperandXOtherOperatorExpressionParserRuleCall_1_3_1_0() { return cRightOperandXOtherOperatorExpressionParserRuleCall_1_3_1_0; }
	}

	public class ShouldElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Should");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cShouldKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cNotKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		
		//Should:
		//	"should" "not"? ID;
		public ParserRule getRule() { return rule; }

		//"should" "not"? ID
		public Group getGroup() { return cGroup; }

		//"should"
		public Keyword getShouldKeyword_0() { return cShouldKeyword_0; }

		//"not"?
		public Keyword getNotKeyword_1() { return cNotKeyword_1; }

		//ID
		public RuleCall getIDTerminalRuleCall_2() { return cIDTerminalRuleCall_2; }
	}

	public class AssertionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Assertion");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAssertionAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cAssertKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cExpressionXExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
		
		//Assertion:
		//	{Assertion} "assert" expression=XExpression;
		public ParserRule getRule() { return rule; }

		//{Assertion} "assert" expression=XExpression
		public Group getGroup() { return cGroup; }

		//{Assertion}
		public Action getAssertionAction_0() { return cAssertionAction_0; }

		//"assert"
		public Keyword getAssertKeyword_1() { return cAssertKeyword_1; }

		//expression=XExpression
		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }

		//XExpression
		public RuleCall getExpressionXExpressionParserRuleCall_2_0() { return cExpressionXExpressionParserRuleCall_2_0; }
	}

	public class XConstructorCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "XConstructorCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cXbaseConstructorCallParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
		private final Group cGroup_1_0_0 = (Group)cGroup_1_0.eContents().get(0);
		private final Action cAnonymousClassConstructorCallAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1);
		private final Assignment cMembersAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cMembersAnonymousMemberParserRuleCall_1_1_0 = (RuleCall)cMembersAssignment_1_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		
		//XConstructorCall returns xbase::XExpression:
		//	XbaseConstructorCall (=> ({xtend::AnonymousClass.constructorCall=current} "{") members+=AnonymousMember* "}")?;
		public ParserRule getRule() { return rule; }

		//XbaseConstructorCall (=> ({xtend::AnonymousClass.constructorCall=current} "{") members+=AnonymousMember* "}")?
		public Group getGroup() { return cGroup; }

		//XbaseConstructorCall
		public RuleCall getXbaseConstructorCallParserRuleCall_0() { return cXbaseConstructorCallParserRuleCall_0; }

		//(=> ({xtend::AnonymousClass.constructorCall=current} "{") members+=AnonymousMember* "}")?
		public Group getGroup_1() { return cGroup_1; }

		//=> ({xtend::AnonymousClass.constructorCall=current} "{")
		public Group getGroup_1_0() { return cGroup_1_0; }

		//{xtend::AnonymousClass.constructorCall=current} "{"
		public Group getGroup_1_0_0() { return cGroup_1_0_0; }

		//{xtend::AnonymousClass.constructorCall=current}
		public Action getAnonymousClassConstructorCallAction_1_0_0_0() { return cAnonymousClassConstructorCallAction_1_0_0_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_0_0_1() { return cLeftCurlyBracketKeyword_1_0_0_1; }

		//members+=AnonymousMember*
		public Assignment getMembersAssignment_1_1() { return cMembersAssignment_1_1; }

		//AnonymousMember
		public RuleCall getMembersAnonymousMemberParserRuleCall_1_1_0() { return cMembersAnonymousMemberParserRuleCall_1_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_1_2() { return cRightCurlyBracketKeyword_1_2; }
	}

	public class AnonymousMemberElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AnonymousMember");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cXtendMemberAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cAnnotationsXAnnotationParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Action cXtendFieldAnnotationInfoAction_2_0_0 = (Action)cGroup_2_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_0_1_0 = (RuleCall)cModifiersAssignment_2_0_1.eContents().get(0);
		private final Alternatives cAlternatives_2_0_2 = (Alternatives)cGroup_2_0.eContents().get(2);
		private final Group cGroup_2_0_2_0 = (Group)cAlternatives_2_0_2.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_0_0 = (Assignment)cGroup_2_0_2_0.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_0_2_0_0_0 = (RuleCall)cModifiersAssignment_2_0_2_0_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_0_1 = (Assignment)cGroup_2_0_2_0.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_0_2_0_1_0 = (RuleCall)cModifiersAssignment_2_0_2_0_1.eContents().get(0);
		private final Assignment cTypeAssignment_2_0_2_0_2 = (Assignment)cGroup_2_0_2_0.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_0_2_0_2_0 = (RuleCall)cTypeAssignment_2_0_2_0_2.eContents().get(0);
		private final Assignment cNameAssignment_2_0_2_0_3 = (Assignment)cGroup_2_0_2_0.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_2_0_2_0_3_0 = (RuleCall)cNameAssignment_2_0_2_0_3.eContents().get(0);
		private final Group cGroup_2_0_2_1 = (Group)cAlternatives_2_0_2.eContents().get(1);
		private final Assignment cModifiersAssignment_2_0_2_1_0 = (Assignment)cGroup_2_0_2_1.eContents().get(0);
		private final Keyword cModifiersExtensionKeyword_2_0_2_1_0_0 = (Keyword)cModifiersAssignment_2_0_2_1_0.eContents().get(0);
		private final Alternatives cAlternatives_2_0_2_1_1 = (Alternatives)cGroup_2_0_2_1.eContents().get(1);
		private final Assignment cModifiersAssignment_2_0_2_1_1_0 = (Assignment)cAlternatives_2_0_2_1_1.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_0_2_1_1_0_0 = (RuleCall)cModifiersAssignment_2_0_2_1_1_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_1_1_1 = (Assignment)cAlternatives_2_0_2_1_1.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_0_2_1_1_1_0 = (RuleCall)cModifiersAssignment_2_0_2_1_1_1.eContents().get(0);
		private final Assignment cTypeAssignment_2_0_2_1_2 = (Assignment)cGroup_2_0_2_1.eContents().get(2);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_0_2_1_2_0 = (RuleCall)cTypeAssignment_2_0_2_1_2.eContents().get(0);
		private final Assignment cNameAssignment_2_0_2_1_3 = (Assignment)cGroup_2_0_2_1.eContents().get(3);
		private final RuleCall cNameValidIDParserRuleCall_2_0_2_1_3_0 = (RuleCall)cNameAssignment_2_0_2_1_3.eContents().get(0);
		private final Group cGroup_2_0_2_2 = (Group)cAlternatives_2_0_2.eContents().get(2);
		private final Assignment cModifiersAssignment_2_0_2_2_0 = (Assignment)cGroup_2_0_2_2.eContents().get(0);
		private final RuleCall cModifiersFieldModifierParserRuleCall_2_0_2_2_0_0 = (RuleCall)cModifiersAssignment_2_0_2_2_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_2_1 = (Assignment)cGroup_2_0_2_2.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_0_2_2_1_0 = (RuleCall)cModifiersAssignment_2_0_2_2_1.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_2_2 = (Assignment)cGroup_2_0_2_2.eContents().get(2);
		private final Keyword cModifiersExtensionKeyword_2_0_2_2_2_0 = (Keyword)cModifiersAssignment_2_0_2_2_2.eContents().get(0);
		private final Assignment cModifiersAssignment_2_0_2_2_3 = (Assignment)cGroup_2_0_2_2.eContents().get(3);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_0_2_2_3_0 = (RuleCall)cModifiersAssignment_2_0_2_2_3.eContents().get(0);
		private final Assignment cTypeAssignment_2_0_2_2_4 = (Assignment)cGroup_2_0_2_2.eContents().get(4);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_0_2_2_4_0 = (RuleCall)cTypeAssignment_2_0_2_2_4.eContents().get(0);
		private final Assignment cNameAssignment_2_0_2_2_5 = (Assignment)cGroup_2_0_2_2.eContents().get(5);
		private final RuleCall cNameValidIDParserRuleCall_2_0_2_2_5_0 = (RuleCall)cNameAssignment_2_0_2_2_5.eContents().get(0);
		private final Group cGroup_2_0_2_3 = (Group)cAlternatives_2_0_2.eContents().get(3);
		private final Assignment cTypeAssignment_2_0_2_3_0 = (Assignment)cGroup_2_0_2_3.eContents().get(0);
		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_0_2_3_0_0 = (RuleCall)cTypeAssignment_2_0_2_3_0.eContents().get(0);
		private final Assignment cNameAssignment_2_0_2_3_1 = (Assignment)cGroup_2_0_2_3.eContents().get(1);
		private final RuleCall cNameValidIDParserRuleCall_2_0_2_3_1_0 = (RuleCall)cNameAssignment_2_0_2_3_1.eContents().get(0);
		private final Group cGroup_2_0_3 = (Group)cGroup_2_0.eContents().get(3);
		private final Keyword cEqualsSignKeyword_2_0_3_0 = (Keyword)cGroup_2_0_3.eContents().get(0);
		private final Assignment cInitialValueAssignment_2_0_3_1 = (Assignment)cGroup_2_0_3.eContents().get(1);
		private final RuleCall cInitialValueXExpressionParserRuleCall_2_0_3_1_0 = (RuleCall)cInitialValueAssignment_2_0_3_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_2_0_4 = (Keyword)cGroup_2_0.eContents().get(4);
		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
		private final Action cXtendFunctionAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
		private final Assignment cModifiersAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_1_1_0 = (RuleCall)cModifiersAssignment_2_1_1.eContents().get(0);
		private final Assignment cModifiersAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
		private final RuleCall cModifiersMethodModifierParserRuleCall_2_1_2_0 = (RuleCall)cModifiersAssignment_2_1_2.eContents().get(0);
		private final Alternatives cAlternatives_2_1_3 = (Alternatives)cGroup_2_1.eContents().get(3);
		private final Assignment cModifiersAssignment_2_1_3_0 = (Assignment)cAlternatives_2_1_3.eContents().get(0);
		private final RuleCall cModifiersCommonModifierParserRuleCall_2_1_3_0_0 = (RuleCall)cModifiersAssignment_2_1_3_0.eContents().get(0);
		private final Assignment cModifiersAssignment_2_1_3_1 = (Assignment)cAlternatives_2_1_3.eContents().get(1);
		private final RuleCall cModifiersMethodModifierParserRuleCall_2_1_3_1_0 = (RuleCall)cModifiersAssignment_2_1_3_1.eContents().get(0);
		private final Group cGroup_2_1_4 = (Group)cGroup_2_1.eContents().get(4);
		private final Keyword cLessThanSignKeyword_2_1_4_0 = (Keyword)cGroup_2_1_4.eContents().get(0);
		private final Assignment cTypeParametersAssignment_2_1_4_1 = (Assignment)cGroup_2_1_4.eContents().get(1);
		private final RuleCall cTypeParametersJvmTypeParameterParserRuleCall_2_1_4_1_0 = (RuleCall)cTypeParametersAssignment_2_1_4_1.eContents().get(0);
		private final Group cGroup_2_1_4_2 = (Group)cGroup_2_1_4.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_4_2_0 = (Keyword)cGroup_2_1_4_2.eContents().get(0);
		private final Assignment cTypeParametersAssignment_2_1_4_2_1 = (Assignment)cGroup_2_1_4_2.eContents().get(1);
		private final RuleCall cTypeParametersJvmTypeParameterParserRuleCall_2_1_4_2_1_0 = (RuleCall)cTypeParametersAssignment_2_1_4_2_1.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_2_1_4_3 = (Keyword)cGroup_2_1_4.eContents().get(3);
		private final Alternatives cAlternatives_2_1_5 = (Alternatives)cGroup_2_1.eContents().get(5);
		private final Group cGroup_2_1_5_0 = (Group)cAlternatives_2_1_5.eContents().get(0);
		private final Group cGroup_2_1_5_0_0 = (Group)cGroup_2_1_5_0.eContents().get(0);
		private final Assignment cReturnTypeAssignment_2_1_5_0_0_0 = (Assignment)cGroup_2_1_5_0_0.eContents().get(0);
		private final RuleCall cReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_0_0_0_0 = (RuleCall)cReturnTypeAssignment_2_1_5_0_0_0.eContents().get(0);
		private final Assignment cCreateExtensionInfoAssignment_2_1_5_0_0_1 = (Assignment)cGroup_2_1_5_0_0.eContents().get(1);
		private final RuleCall cCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_0_0_1_0 = (RuleCall)cCreateExtensionInfoAssignment_2_1_5_0_0_1.eContents().get(0);
		private final Assignment cNameAssignment_2_1_5_0_0_2 = (Assignment)cGroup_2_1_5_0_0.eContents().get(2);
		private final RuleCall cNameValidIDParserRuleCall_2_1_5_0_0_2_0 = (RuleCall)cNameAssignment_2_1_5_0_0_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1_5_0_0_3 = (Keyword)cGroup_2_1_5_0_0.eContents().get(3);
		private final Group cGroup_2_1_5_1 = (Group)cAlternatives_2_1_5.eContents().get(1);
		private final Group cGroup_2_1_5_1_0 = (Group)cGroup_2_1_5_1.eContents().get(0);
		private final Assignment cReturnTypeAssignment_2_1_5_1_0_0 = (Assignment)cGroup_2_1_5_1_0.eContents().get(0);
		private final RuleCall cReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_1_0_0_0 = (RuleCall)cReturnTypeAssignment_2_1_5_1_0_0.eContents().get(0);
		private final Assignment cNameAssignment_2_1_5_1_0_1 = (Assignment)cGroup_2_1_5_1_0.eContents().get(1);
		private final RuleCall cNameFunctionIDParserRuleCall_2_1_5_1_0_1_0 = (RuleCall)cNameAssignment_2_1_5_1_0_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1_5_1_0_2 = (Keyword)cGroup_2_1_5_1_0.eContents().get(2);
		private final Group cGroup_2_1_5_2 = (Group)cAlternatives_2_1_5.eContents().get(2);
		private final Group cGroup_2_1_5_2_0 = (Group)cGroup_2_1_5_2.eContents().get(0);
		private final Assignment cReturnTypeAssignment_2_1_5_2_0_0 = (Assignment)cGroup_2_1_5_2_0.eContents().get(0);
		private final RuleCall cReturnTypeTypeReferenceNoTypeArgsParserRuleCall_2_1_5_2_0_0_0 = (RuleCall)cReturnTypeAssignment_2_1_5_2_0_0.eContents().get(0);
		private final Assignment cNameAssignment_2_1_5_2_0_1 = (Assignment)cGroup_2_1_5_2_0.eContents().get(1);
		private final RuleCall cNameFunctionIDParserRuleCall_2_1_5_2_0_1_0 = (RuleCall)cNameAssignment_2_1_5_2_0_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1_5_2_0_2 = (Keyword)cGroup_2_1_5_2_0.eContents().get(2);
		private final Group cGroup_2_1_5_3 = (Group)cAlternatives_2_1_5.eContents().get(3);
		private final Group cGroup_2_1_5_3_0 = (Group)cGroup_2_1_5_3.eContents().get(0);
		private final Assignment cCreateExtensionInfoAssignment_2_1_5_3_0_0 = (Assignment)cGroup_2_1_5_3_0.eContents().get(0);
		private final RuleCall cCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_3_0_0_0 = (RuleCall)cCreateExtensionInfoAssignment_2_1_5_3_0_0.eContents().get(0);
		private final Assignment cNameAssignment_2_1_5_3_0_1 = (Assignment)cGroup_2_1_5_3_0.eContents().get(1);
		private final RuleCall cNameValidIDParserRuleCall_2_1_5_3_0_1_0 = (RuleCall)cNameAssignment_2_1_5_3_0_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1_5_3_0_2 = (Keyword)cGroup_2_1_5_3_0.eContents().get(2);
		private final Group cGroup_2_1_5_4 = (Group)cAlternatives_2_1_5.eContents().get(4);
		private final Assignment cNameAssignment_2_1_5_4_0 = (Assignment)cGroup_2_1_5_4.eContents().get(0);
		private final RuleCall cNameFunctionIDParserRuleCall_2_1_5_4_0_0 = (RuleCall)cNameAssignment_2_1_5_4_0.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1_5_4_1 = (Keyword)cGroup_2_1_5_4.eContents().get(1);
		private final Group cGroup_2_1_6 = (Group)cGroup_2_1.eContents().get(6);
		private final Assignment cParametersAssignment_2_1_6_0 = (Assignment)cGroup_2_1_6.eContents().get(0);
		private final RuleCall cParametersParameterParserRuleCall_2_1_6_0_0 = (RuleCall)cParametersAssignment_2_1_6_0.eContents().get(0);
		private final Group cGroup_2_1_6_1 = (Group)cGroup_2_1_6.eContents().get(1);
		private final Keyword cCommaKeyword_2_1_6_1_0 = (Keyword)cGroup_2_1_6_1.eContents().get(0);
		private final Assignment cParametersAssignment_2_1_6_1_1 = (Assignment)cGroup_2_1_6_1.eContents().get(1);
		private final RuleCall cParametersParameterParserRuleCall_2_1_6_1_1_0 = (RuleCall)cParametersAssignment_2_1_6_1_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_1_7 = (Keyword)cGroup_2_1.eContents().get(7);
		private final Group cGroup_2_1_8 = (Group)cGroup_2_1.eContents().get(8);
		private final Keyword cThrowsKeyword_2_1_8_0 = (Keyword)cGroup_2_1_8.eContents().get(0);
		private final Assignment cExceptionsAssignment_2_1_8_1 = (Assignment)cGroup_2_1_8.eContents().get(1);
		private final RuleCall cExceptionsJvmTypeReferenceParserRuleCall_2_1_8_1_0 = (RuleCall)cExceptionsAssignment_2_1_8_1.eContents().get(0);
		private final Group cGroup_2_1_8_2 = (Group)cGroup_2_1_8.eContents().get(2);
		private final Keyword cCommaKeyword_2_1_8_2_0 = (Keyword)cGroup_2_1_8_2.eContents().get(0);
		private final Assignment cExceptionsAssignment_2_1_8_2_1 = (Assignment)cGroup_2_1_8_2.eContents().get(1);
		private final RuleCall cExceptionsJvmTypeReferenceParserRuleCall_2_1_8_2_1_0 = (RuleCall)cExceptionsAssignment_2_1_8_2_1.eContents().get(0);
		private final Alternatives cAlternatives_2_1_9 = (Alternatives)cGroup_2_1.eContents().get(9);
		private final Assignment cExpressionAssignment_2_1_9_0 = (Assignment)cAlternatives_2_1_9.eContents().get(0);
		private final RuleCall cExpressionXBlockExpressionParserRuleCall_2_1_9_0_0 = (RuleCall)cExpressionAssignment_2_1_9_0.eContents().get(0);
		private final Assignment cExpressionAssignment_2_1_9_1 = (Assignment)cAlternatives_2_1_9.eContents().get(1);
		private final RuleCall cExpressionRichStringParserRuleCall_2_1_9_1_0 = (RuleCall)cExpressionAssignment_2_1_9_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_2_1_9_2 = (Keyword)cAlternatives_2_1_9.eContents().get(2);
		
		//AnonymousMember returns xtend::XtendMember:
		//	{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
		//	(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//	(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//	modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//	type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"? |
		//	{xtend::XtendFunction.annotationInfo=current} modifiers+=CommonModifier* modifiers+=MethodModifier
		//	(modifiers+=CommonModifier | modifiers+=MethodModifier)* ("<" typeParameters+=JvmTypeParameter (","
		//	typeParameters+=JvmTypeParameter)* ">")? (=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo
		//	name=ValidID "(") | => (returnType=JvmTypeReference name=FunctionID "(") | => (returnType=TypeReferenceNoTypeArgs
		//	name=FunctionID "(") | => (createExtensionInfo=CreateExtensionInfo name=ValidID "(") | name=FunctionID "(")
		//	(parameters+=Parameter ("," parameters+=Parameter)*)? ")" ("throws" exceptions+=JvmTypeReference (","
		//	exceptions+=JvmTypeReference)*)? (expression=XBlockExpression | expression=RichString | ";")?);
		public ParserRule getRule() { return rule; }

		//{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
		//(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"? |
		//{xtend::XtendFunction.annotationInfo=current} modifiers+=CommonModifier* modifiers+=MethodModifier
		//(modifiers+=CommonModifier | modifiers+=MethodModifier)* ("<" typeParameters+=JvmTypeParameter (","
		//typeParameters+=JvmTypeParameter)* ">")? (=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo
		//name=ValidID "(") | => (returnType=JvmTypeReference name=FunctionID "(") | => (returnType=TypeReferenceNoTypeArgs
		//name=FunctionID "(") | => (createExtensionInfo=CreateExtensionInfo name=ValidID "(") | name=FunctionID "(")
		//(parameters+=Parameter ("," parameters+=Parameter)*)? ")" ("throws" exceptions+=JvmTypeReference (","
		//exceptions+=JvmTypeReference)*)? (expression=XBlockExpression | expression=RichString | ";")?)
		public Group getGroup() { return cGroup; }

		//{xtend::XtendMember}
		public Action getXtendMemberAction_0() { return cXtendMemberAction_0; }

		//annotations+=XAnnotation*
		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }

		//XAnnotation
		public RuleCall getAnnotationsXAnnotationParserRuleCall_1_0() { return cAnnotationsXAnnotationParserRuleCall_1_0; }

		//{xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier* (modifiers+=FieldModifier
		//modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension" (modifiers+=FieldModifier |
		//modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier modifiers+=CommonModifier*
		//modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? | type=JvmTypeReference
		//name=ValidID) ("=" initialValue=XExpression)? ";"? | {xtend::XtendFunction.annotationInfo=current}
		//modifiers+=CommonModifier* modifiers+=MethodModifier (modifiers+=CommonModifier | modifiers+=MethodModifier)* ("<"
		//typeParameters+=JvmTypeParameter ("," typeParameters+=JvmTypeParameter)* ">")? (=> (returnType=JvmTypeReference
		//createExtensionInfo=CreateExtensionInfo name=ValidID "(") | => (returnType=JvmTypeReference name=FunctionID "(") | =>
		//(returnType=TypeReferenceNoTypeArgs name=FunctionID "(") | => (createExtensionInfo=CreateExtensionInfo name=ValidID
		//"(") | name=FunctionID "(") (parameters+=Parameter ("," parameters+=Parameter)*)? ")" ("throws"
		//exceptions+=JvmTypeReference ("," exceptions+=JvmTypeReference)*)? (expression=XBlockExpression | expression=RichString
		//| ";")?
		public Alternatives getAlternatives_2() { return cAlternatives_2; }

		//{xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier* (modifiers+=FieldModifier
		//modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension" (modifiers+=FieldModifier |
		//modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier modifiers+=CommonModifier*
		//modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? | type=JvmTypeReference
		//name=ValidID) ("=" initialValue=XExpression)? ";"?
		public Group getGroup_2_0() { return cGroup_2_0; }

		//{xtend::XtendField.annotationInfo=current}
		public Action getXtendFieldAnnotationInfoAction_2_0_0() { return cXtendFieldAnnotationInfoAction_2_0_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_0_1() { return cModifiersAssignment_2_0_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_0_1_0() { return cModifiersCommonModifierParserRuleCall_2_0_1_0; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
		//(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
		//modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
		//type=JvmTypeReference name=ValidID
		public Alternatives getAlternatives_2_0_2() { return cAlternatives_2_0_2; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID
		public Group getGroup_2_0_2_0() { return cGroup_2_0_2_0; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_0_2_0_0() { return cModifiersAssignment_2_0_2_0_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_0_2_0_0_0() { return cModifiersFieldModifierParserRuleCall_2_0_2_0_0_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_0_2_0_1() { return cModifiersAssignment_2_0_2_0_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_0_2_0_1_0() { return cModifiersCommonModifierParserRuleCall_2_0_2_0_1_0; }

		//type=JvmTypeReference?
		public Assignment getTypeAssignment_2_0_2_0_2() { return cTypeAssignment_2_0_2_0_2; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_0_2_0_2_0() { return cTypeJvmTypeReferenceParserRuleCall_2_0_2_0_2_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_0_2_0_3() { return cNameAssignment_2_0_2_0_3; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_0_2_0_3_0() { return cNameValidIDParserRuleCall_2_0_2_0_3_0; }

		//modifiers+="extension" (modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID?
		public Group getGroup_2_0_2_1() { return cGroup_2_0_2_1; }

		//modifiers+="extension"
		public Assignment getModifiersAssignment_2_0_2_1_0() { return cModifiersAssignment_2_0_2_1_0; }

		//"extension"
		public Keyword getModifiersExtensionKeyword_2_0_2_1_0_0() { return cModifiersExtensionKeyword_2_0_2_1_0_0; }

		//(modifiers+=FieldModifier | modifiers+=CommonModifier)*
		public Alternatives getAlternatives_2_0_2_1_1() { return cAlternatives_2_0_2_1_1; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_0_2_1_1_0() { return cModifiersAssignment_2_0_2_1_1_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_0_2_1_1_0_0() { return cModifiersFieldModifierParserRuleCall_2_0_2_1_1_0_0; }

		//modifiers+=CommonModifier
		public Assignment getModifiersAssignment_2_0_2_1_1_1() { return cModifiersAssignment_2_0_2_1_1_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_0_2_1_1_1_0() { return cModifiersCommonModifierParserRuleCall_2_0_2_1_1_1_0; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_0_2_1_2() { return cTypeAssignment_2_0_2_1_2; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_0_2_1_2_0() { return cTypeJvmTypeReferenceParserRuleCall_2_0_2_1_2_0; }

		//name=ValidID?
		public Assignment getNameAssignment_2_0_2_1_3() { return cNameAssignment_2_0_2_1_3; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_0_2_1_3_0() { return cNameValidIDParserRuleCall_2_0_2_1_3_0; }

		//modifiers+=FieldModifier modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier*
		//type=JvmTypeReference name=ValidID?
		public Group getGroup_2_0_2_2() { return cGroup_2_0_2_2; }

		//modifiers+=FieldModifier
		public Assignment getModifiersAssignment_2_0_2_2_0() { return cModifiersAssignment_2_0_2_2_0; }

		//FieldModifier
		public RuleCall getModifiersFieldModifierParserRuleCall_2_0_2_2_0_0() { return cModifiersFieldModifierParserRuleCall_2_0_2_2_0_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_0_2_2_1() { return cModifiersAssignment_2_0_2_2_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_0_2_2_1_0() { return cModifiersCommonModifierParserRuleCall_2_0_2_2_1_0; }

		//modifiers+="extension"
		public Assignment getModifiersAssignment_2_0_2_2_2() { return cModifiersAssignment_2_0_2_2_2; }

		//"extension"
		public Keyword getModifiersExtensionKeyword_2_0_2_2_2_0() { return cModifiersExtensionKeyword_2_0_2_2_2_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_0_2_2_3() { return cModifiersAssignment_2_0_2_2_3; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_0_2_2_3_0() { return cModifiersCommonModifierParserRuleCall_2_0_2_2_3_0; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_0_2_2_4() { return cTypeAssignment_2_0_2_2_4; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_0_2_2_4_0() { return cTypeJvmTypeReferenceParserRuleCall_2_0_2_2_4_0; }

		//name=ValidID?
		public Assignment getNameAssignment_2_0_2_2_5() { return cNameAssignment_2_0_2_2_5; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_0_2_2_5_0() { return cNameValidIDParserRuleCall_2_0_2_2_5_0; }

		//type=JvmTypeReference name=ValidID
		public Group getGroup_2_0_2_3() { return cGroup_2_0_2_3; }

		//type=JvmTypeReference
		public Assignment getTypeAssignment_2_0_2_3_0() { return cTypeAssignment_2_0_2_3_0; }

		//JvmTypeReference
		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_0_2_3_0_0() { return cTypeJvmTypeReferenceParserRuleCall_2_0_2_3_0_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_0_2_3_1() { return cNameAssignment_2_0_2_3_1; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_0_2_3_1_0() { return cNameValidIDParserRuleCall_2_0_2_3_1_0; }

		//("=" initialValue=XExpression)?
		public Group getGroup_2_0_3() { return cGroup_2_0_3; }

		//"="
		public Keyword getEqualsSignKeyword_2_0_3_0() { return cEqualsSignKeyword_2_0_3_0; }

		//initialValue=XExpression
		public Assignment getInitialValueAssignment_2_0_3_1() { return cInitialValueAssignment_2_0_3_1; }

		//XExpression
		public RuleCall getInitialValueXExpressionParserRuleCall_2_0_3_1_0() { return cInitialValueXExpressionParserRuleCall_2_0_3_1_0; }

		//";"?
		public Keyword getSemicolonKeyword_2_0_4() { return cSemicolonKeyword_2_0_4; }

		//{xtend::XtendFunction.annotationInfo=current} modifiers+=CommonModifier* modifiers+=MethodModifier
		//(modifiers+=CommonModifier | modifiers+=MethodModifier)* ("<" typeParameters+=JvmTypeParameter (","
		//typeParameters+=JvmTypeParameter)* ">")? (=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo
		//name=ValidID "(") | => (returnType=JvmTypeReference name=FunctionID "(") | => (returnType=TypeReferenceNoTypeArgs
		//name=FunctionID "(") | => (createExtensionInfo=CreateExtensionInfo name=ValidID "(") | name=FunctionID "(")
		//(parameters+=Parameter ("," parameters+=Parameter)*)? ")" ("throws" exceptions+=JvmTypeReference (","
		//exceptions+=JvmTypeReference)*)? (expression=XBlockExpression | expression=RichString | ";")?
		public Group getGroup_2_1() { return cGroup_2_1; }

		//{xtend::XtendFunction.annotationInfo=current}
		public Action getXtendFunctionAnnotationInfoAction_2_1_0() { return cXtendFunctionAnnotationInfoAction_2_1_0; }

		//modifiers+=CommonModifier*
		public Assignment getModifiersAssignment_2_1_1() { return cModifiersAssignment_2_1_1; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_1_1_0() { return cModifiersCommonModifierParserRuleCall_2_1_1_0; }

		//modifiers+=MethodModifier
		public Assignment getModifiersAssignment_2_1_2() { return cModifiersAssignment_2_1_2; }

		//MethodModifier
		public RuleCall getModifiersMethodModifierParserRuleCall_2_1_2_0() { return cModifiersMethodModifierParserRuleCall_2_1_2_0; }

		//(modifiers+=CommonModifier | modifiers+=MethodModifier)*
		public Alternatives getAlternatives_2_1_3() { return cAlternatives_2_1_3; }

		//modifiers+=CommonModifier
		public Assignment getModifiersAssignment_2_1_3_0() { return cModifiersAssignment_2_1_3_0; }

		//CommonModifier
		public RuleCall getModifiersCommonModifierParserRuleCall_2_1_3_0_0() { return cModifiersCommonModifierParserRuleCall_2_1_3_0_0; }

		//modifiers+=MethodModifier
		public Assignment getModifiersAssignment_2_1_3_1() { return cModifiersAssignment_2_1_3_1; }

		//MethodModifier
		public RuleCall getModifiersMethodModifierParserRuleCall_2_1_3_1_0() { return cModifiersMethodModifierParserRuleCall_2_1_3_1_0; }

		//("<" typeParameters+=JvmTypeParameter ("," typeParameters+=JvmTypeParameter)* ">")?
		public Group getGroup_2_1_4() { return cGroup_2_1_4; }

		//"<"
		public Keyword getLessThanSignKeyword_2_1_4_0() { return cLessThanSignKeyword_2_1_4_0; }

		//typeParameters+=JvmTypeParameter
		public Assignment getTypeParametersAssignment_2_1_4_1() { return cTypeParametersAssignment_2_1_4_1; }

		//JvmTypeParameter
		public RuleCall getTypeParametersJvmTypeParameterParserRuleCall_2_1_4_1_0() { return cTypeParametersJvmTypeParameterParserRuleCall_2_1_4_1_0; }

		//("," typeParameters+=JvmTypeParameter)*
		public Group getGroup_2_1_4_2() { return cGroup_2_1_4_2; }

		//","
		public Keyword getCommaKeyword_2_1_4_2_0() { return cCommaKeyword_2_1_4_2_0; }

		//typeParameters+=JvmTypeParameter
		public Assignment getTypeParametersAssignment_2_1_4_2_1() { return cTypeParametersAssignment_2_1_4_2_1; }

		//JvmTypeParameter
		public RuleCall getTypeParametersJvmTypeParameterParserRuleCall_2_1_4_2_1_0() { return cTypeParametersJvmTypeParameterParserRuleCall_2_1_4_2_1_0; }

		//">"
		public Keyword getGreaterThanSignKeyword_2_1_4_3() { return cGreaterThanSignKeyword_2_1_4_3; }

		//=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo name=ValidID "(") | =>
		//(returnType=JvmTypeReference name=FunctionID "(") | => (returnType=TypeReferenceNoTypeArgs name=FunctionID "(") | =>
		//(createExtensionInfo=CreateExtensionInfo name=ValidID "(") | name=FunctionID "("
		public Alternatives getAlternatives_2_1_5() { return cAlternatives_2_1_5; }

		//=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo name=ValidID "(")
		public Group getGroup_2_1_5_0() { return cGroup_2_1_5_0; }

		//returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo name=ValidID "("
		public Group getGroup_2_1_5_0_0() { return cGroup_2_1_5_0_0; }

		//returnType=JvmTypeReference
		public Assignment getReturnTypeAssignment_2_1_5_0_0_0() { return cReturnTypeAssignment_2_1_5_0_0_0; }

		//JvmTypeReference
		public RuleCall getReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_0_0_0_0() { return cReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_0_0_0_0; }

		//createExtensionInfo=CreateExtensionInfo
		public Assignment getCreateExtensionInfoAssignment_2_1_5_0_0_1() { return cCreateExtensionInfoAssignment_2_1_5_0_0_1; }

		//CreateExtensionInfo
		public RuleCall getCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_0_0_1_0() { return cCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_0_0_1_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_1_5_0_0_2() { return cNameAssignment_2_1_5_0_0_2; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_1_5_0_0_2_0() { return cNameValidIDParserRuleCall_2_1_5_0_0_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1_5_0_0_3() { return cLeftParenthesisKeyword_2_1_5_0_0_3; }

		//=> (returnType=JvmTypeReference name=FunctionID "(")
		public Group getGroup_2_1_5_1() { return cGroup_2_1_5_1; }

		//returnType=JvmTypeReference name=FunctionID "("
		public Group getGroup_2_1_5_1_0() { return cGroup_2_1_5_1_0; }

		//returnType=JvmTypeReference
		public Assignment getReturnTypeAssignment_2_1_5_1_0_0() { return cReturnTypeAssignment_2_1_5_1_0_0; }

		//JvmTypeReference
		public RuleCall getReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_1_0_0_0() { return cReturnTypeJvmTypeReferenceParserRuleCall_2_1_5_1_0_0_0; }

		//name=FunctionID
		public Assignment getNameAssignment_2_1_5_1_0_1() { return cNameAssignment_2_1_5_1_0_1; }

		//FunctionID
		public RuleCall getNameFunctionIDParserRuleCall_2_1_5_1_0_1_0() { return cNameFunctionIDParserRuleCall_2_1_5_1_0_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1_5_1_0_2() { return cLeftParenthesisKeyword_2_1_5_1_0_2; }

		//=> (returnType=TypeReferenceNoTypeArgs name=FunctionID "(")
		public Group getGroup_2_1_5_2() { return cGroup_2_1_5_2; }

		//returnType=TypeReferenceNoTypeArgs name=FunctionID "("
		public Group getGroup_2_1_5_2_0() { return cGroup_2_1_5_2_0; }

		//returnType=TypeReferenceNoTypeArgs
		public Assignment getReturnTypeAssignment_2_1_5_2_0_0() { return cReturnTypeAssignment_2_1_5_2_0_0; }

		//TypeReferenceNoTypeArgs
		public RuleCall getReturnTypeTypeReferenceNoTypeArgsParserRuleCall_2_1_5_2_0_0_0() { return cReturnTypeTypeReferenceNoTypeArgsParserRuleCall_2_1_5_2_0_0_0; }

		//name=FunctionID
		public Assignment getNameAssignment_2_1_5_2_0_1() { return cNameAssignment_2_1_5_2_0_1; }

		//FunctionID
		public RuleCall getNameFunctionIDParserRuleCall_2_1_5_2_0_1_0() { return cNameFunctionIDParserRuleCall_2_1_5_2_0_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1_5_2_0_2() { return cLeftParenthesisKeyword_2_1_5_2_0_2; }

		//=> (createExtensionInfo=CreateExtensionInfo name=ValidID "(")
		public Group getGroup_2_1_5_3() { return cGroup_2_1_5_3; }

		//createExtensionInfo=CreateExtensionInfo name=ValidID "("
		public Group getGroup_2_1_5_3_0() { return cGroup_2_1_5_3_0; }

		//createExtensionInfo=CreateExtensionInfo
		public Assignment getCreateExtensionInfoAssignment_2_1_5_3_0_0() { return cCreateExtensionInfoAssignment_2_1_5_3_0_0; }

		//CreateExtensionInfo
		public RuleCall getCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_3_0_0_0() { return cCreateExtensionInfoCreateExtensionInfoParserRuleCall_2_1_5_3_0_0_0; }

		//name=ValidID
		public Assignment getNameAssignment_2_1_5_3_0_1() { return cNameAssignment_2_1_5_3_0_1; }

		//ValidID
		public RuleCall getNameValidIDParserRuleCall_2_1_5_3_0_1_0() { return cNameValidIDParserRuleCall_2_1_5_3_0_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1_5_3_0_2() { return cLeftParenthesisKeyword_2_1_5_3_0_2; }

		//name=FunctionID "("
		public Group getGroup_2_1_5_4() { return cGroup_2_1_5_4; }

		//name=FunctionID
		public Assignment getNameAssignment_2_1_5_4_0() { return cNameAssignment_2_1_5_4_0; }

		//FunctionID
		public RuleCall getNameFunctionIDParserRuleCall_2_1_5_4_0_0() { return cNameFunctionIDParserRuleCall_2_1_5_4_0_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1_5_4_1() { return cLeftParenthesisKeyword_2_1_5_4_1; }

		//(parameters+=Parameter ("," parameters+=Parameter)*)?
		public Group getGroup_2_1_6() { return cGroup_2_1_6; }

		//parameters+=Parameter
		public Assignment getParametersAssignment_2_1_6_0() { return cParametersAssignment_2_1_6_0; }

		//Parameter
		public RuleCall getParametersParameterParserRuleCall_2_1_6_0_0() { return cParametersParameterParserRuleCall_2_1_6_0_0; }

		//("," parameters+=Parameter)*
		public Group getGroup_2_1_6_1() { return cGroup_2_1_6_1; }

		//","
		public Keyword getCommaKeyword_2_1_6_1_0() { return cCommaKeyword_2_1_6_1_0; }

		//parameters+=Parameter
		public Assignment getParametersAssignment_2_1_6_1_1() { return cParametersAssignment_2_1_6_1_1; }

		//Parameter
		public RuleCall getParametersParameterParserRuleCall_2_1_6_1_1_0() { return cParametersParameterParserRuleCall_2_1_6_1_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_1_7() { return cRightParenthesisKeyword_2_1_7; }

		//("throws" exceptions+=JvmTypeReference ("," exceptions+=JvmTypeReference)*)?
		public Group getGroup_2_1_8() { return cGroup_2_1_8; }

		//"throws"
		public Keyword getThrowsKeyword_2_1_8_0() { return cThrowsKeyword_2_1_8_0; }

		//exceptions+=JvmTypeReference
		public Assignment getExceptionsAssignment_2_1_8_1() { return cExceptionsAssignment_2_1_8_1; }

		//JvmTypeReference
		public RuleCall getExceptionsJvmTypeReferenceParserRuleCall_2_1_8_1_0() { return cExceptionsJvmTypeReferenceParserRuleCall_2_1_8_1_0; }

		//("," exceptions+=JvmTypeReference)*
		public Group getGroup_2_1_8_2() { return cGroup_2_1_8_2; }

		//","
		public Keyword getCommaKeyword_2_1_8_2_0() { return cCommaKeyword_2_1_8_2_0; }

		//exceptions+=JvmTypeReference
		public Assignment getExceptionsAssignment_2_1_8_2_1() { return cExceptionsAssignment_2_1_8_2_1; }

		//JvmTypeReference
		public RuleCall getExceptionsJvmTypeReferenceParserRuleCall_2_1_8_2_1_0() { return cExceptionsJvmTypeReferenceParserRuleCall_2_1_8_2_1_0; }

		//(expression=XBlockExpression | expression=RichString | ";")?
		public Alternatives getAlternatives_2_1_9() { return cAlternatives_2_1_9; }

		//expression=XBlockExpression
		public Assignment getExpressionAssignment_2_1_9_0() { return cExpressionAssignment_2_1_9_0; }

		//XBlockExpression
		public RuleCall getExpressionXBlockExpressionParserRuleCall_2_1_9_0_0() { return cExpressionXBlockExpressionParserRuleCall_2_1_9_0_0; }

		//expression=RichString
		public Assignment getExpressionAssignment_2_1_9_1() { return cExpressionAssignment_2_1_9_1; }

		//RichString
		public RuleCall getExpressionRichStringParserRuleCall_2_1_9_1_0() { return cExpressionRichStringParserRuleCall_2_1_9_1_0; }

		//";"
		public Keyword getSemicolonKeyword_2_1_9_2() { return cSemicolonKeyword_2_1_9_2; }
	}

	public class StaticQualifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StaticQualifier");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cValidIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cColonColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		/// **
		// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
		// * which makes downstream grammars break on classloading, when a rule is removed.
		// * / StaticQualifier:
		//	(ValidID "::")+;
		public ParserRule getRule() { return rule; }

		//(ValidID "::")+
		public Group getGroup() { return cGroup; }

		//ValidID
		public RuleCall getValidIDParserRuleCall_0() { return cValidIDParserRuleCall_0; }

		//"::"
		public Keyword getColonColonKeyword_1() { return cColonColonKeyword_1; }
	}
	
	
	private FeatureFileElements pFeatureFile;
	private FeatureElements pFeature;
	private BackgroundElements pBackground;
	private ScenarioElements pScenario;
	private MemberElements pMember;
	private GivenReferenceElements pGivenReference;
	private GivenElements pGiven;
	private WhenReferenceElements pWhenReference;
	private WhenElements pWhen;
	private ThenReferenceElements pThenReference;
	private ThenElements pThen;
	private AndReferenceElements pAndReference;
	private AndElements pAnd;
	private ButReferenceElements pButReference;
	private ButElements pBut;
	private BlockExpressionElements pBlockExpression;
	private XPrimaryExpressionElements pXPrimaryExpression;
	private XRelationalExpressionElements pXRelationalExpression;
	private ShouldElements pShould;
	private AssertionElements pAssertion;
	private XConstructorCallElements pXConstructorCall;
	private AnonymousMemberElements pAnonymousMember;
	private TerminalRule tBACKGROUND_TEXT;
	private TerminalRule tSCENARIO_TEXT;
	private TerminalRule tFEATURE_TEXT;
	private TerminalRule tGIVEN_TEXT;
	private TerminalRule tWHEN_TEXT;
	private TerminalRule tTHEN_TEXT;
	private TerminalRule tAND_TEXT;
	private TerminalRule tBUT_TEXT;
	private TerminalRule tTEXT;
	private TerminalRule tSTEP_WITH_ARGS;
	private TerminalRule tMNL;
	private TerminalRule tCOLON;
	private TerminalRule tNL;
	private TerminalRule tSPACES;
	private TerminalRule tRICH_TEXT;
	private TerminalRule tRICH_TEXT_START;
	private TerminalRule tRICH_TEXT_END;
	private TerminalRule tRICH_TEXT_INBETWEEN;
	private TerminalRule tCOMMENT_RICH_TEXT_INBETWEEN;
	private TerminalRule tCOMMENT_RICH_TEXT_END;
	private TerminalRule tIN_RICH_STRING;
	private StaticQualifierElements pStaticQualifier;
	
	private final Grammar grammar;

	private XtendGrammarAccess gaXtend;

	@Inject
	public FeatureGrammarAccess(GrammarProvider grammarProvider,
		XtendGrammarAccess gaXtend) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaXtend = gaXtend;
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.jnario.feature.Feature".equals(grammar.getName())) {
				return grammar;
			}
			List grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	
	public Grammar getGrammar() {
		return grammar;
	}
	

	public XtendGrammarAccess getXtendGrammarAccess() {
		return gaXtend;
	}

	
	//FeatureFile returns xtend::XtendFile:
	//	{FeatureFile} ("package" package=QualifiedName)? importSection=XImportSection? xtendTypes+=Feature?;
	public FeatureFileElements getFeatureFileAccess() {
		return (pFeatureFile != null) ? pFeatureFile : (pFeatureFile = new FeatureFileElements());
	}
	
	public ParserRule getFeatureFileRule() {
		return getFeatureFileAccess().getRule();
	}

	//Feature returns xtend::XtendClass:
	//	{Feature} annotations+=XAnnotation* name=FEATURE_TEXT description=TEXT? background=Background? scenarios+=Scenario*;
	public FeatureElements getFeatureAccess() {
		return (pFeature != null) ? pFeature : (pFeature = new FeatureElements());
	}
	
	public ParserRule getFeatureRule() {
		return getFeatureAccess().getRule();
	}

	//Background:
	//	{Background} name=BACKGROUND_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference |
	//	But | ButReference)*)?;
	public BackgroundElements getBackgroundAccess() {
		return (pBackground != null) ? pBackground : (pBackground = new BackgroundElements());
	}
	
	public ParserRule getBackgroundRule() {
		return getBackgroundAccess().getRule();
	}

	//Scenario:
	//	{Scenario} name=SCENARIO_TEXT members+=Member* (members+=(Given | GivenReference) members+=(And | AndReference | But |
	//	ButReference)*)? (members+=(When | WhenReference) members+=(And | AndReference | But | ButReference)*)?
	//	(members+=(Then | ThenReference) members+=(And | AndReference | But | ButReference)*)?;
	public ScenarioElements getScenarioAccess() {
		return (pScenario != null) ? pScenario : (pScenario = new ScenarioElements());
	}
	
	public ParserRule getScenarioRule() {
		return getScenarioAccess().getRule();
	}

	//Member returns xtend::XtendMember:
	//	{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
	//	(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
	//	(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
	//	modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
	//	type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"?);
	public MemberElements getMemberAccess() {
		return (pMember != null) ? pMember : (pMember = new MemberElements());
	}
	
	public ParserRule getMemberRule() {
		return getMemberAccess().getRule();
	}

	//GivenReference:
	//	{GivenReference} reference=[Given|GIVEN_TEXT];
	public GivenReferenceElements getGivenReferenceAccess() {
		return (pGivenReference != null) ? pGivenReference : (pGivenReference = new GivenReferenceElements());
	}
	
	public ParserRule getGivenReferenceRule() {
		return getGivenReferenceAccess().getRule();
	}

	//Given:
	//	{Given} name=GIVEN_TEXT expression=BlockExpression;
	public GivenElements getGivenAccess() {
		return (pGiven != null) ? pGiven : (pGiven = new GivenElements());
	}
	
	public ParserRule getGivenRule() {
		return getGivenAccess().getRule();
	}

	//WhenReference:
	//	{WhenReference} reference=[When|WHEN_TEXT];
	public WhenReferenceElements getWhenReferenceAccess() {
		return (pWhenReference != null) ? pWhenReference : (pWhenReference = new WhenReferenceElements());
	}
	
	public ParserRule getWhenReferenceRule() {
		return getWhenReferenceAccess().getRule();
	}

	//When:
	//	{When} name=WHEN_TEXT expression=BlockExpression;
	public WhenElements getWhenAccess() {
		return (pWhen != null) ? pWhen : (pWhen = new WhenElements());
	}
	
	public ParserRule getWhenRule() {
		return getWhenAccess().getRule();
	}

	//ThenReference:
	//	{ThenReference} reference=[Then|THEN_TEXT];
	public ThenReferenceElements getThenReferenceAccess() {
		return (pThenReference != null) ? pThenReference : (pThenReference = new ThenReferenceElements());
	}
	
	public ParserRule getThenReferenceRule() {
		return getThenReferenceAccess().getRule();
	}

	//Then:
	//	{Then} name=THEN_TEXT expression=BlockExpression;
	public ThenElements getThenAccess() {
		return (pThen != null) ? pThen : (pThen = new ThenElements());
	}
	
	public ParserRule getThenRule() {
		return getThenAccess().getRule();
	}

	//AndReference:
	//	{AndReference} reference=[And|AND_TEXT];
	public AndReferenceElements getAndReferenceAccess() {
		return (pAndReference != null) ? pAndReference : (pAndReference = new AndReferenceElements());
	}
	
	public ParserRule getAndReferenceRule() {
		return getAndReferenceAccess().getRule();
	}

	//And:
	//	{And} name=AND_TEXT expression=BlockExpression;
	public AndElements getAndAccess() {
		return (pAnd != null) ? pAnd : (pAnd = new AndElements());
	}
	
	public ParserRule getAndRule() {
		return getAndAccess().getRule();
	}

	//ButReference:
	//	{ButReference} reference=[But|BUT_TEXT];
	public ButReferenceElements getButReferenceAccess() {
		return (pButReference != null) ? pButReference : (pButReference = new ButReferenceElements());
	}
	
	public ParserRule getButReferenceRule() {
		return getButReferenceAccess().getRule();
	}

	//But:
	//	{But} name=BUT_TEXT expression=BlockExpression;
	public ButElements getButAccess() {
		return (pBut != null) ? pBut : (pBut = new ButElements());
	}
	
	public ParserRule getButRule() {
		return getButAccess().getRule();
	}

	/// *
	// * artificial node to simplify folding
	// * / BlockExpression returns xbase::XBlockExpression:
	//	(expressions+=XExpressionOrVarDeclaration ";"?)+;
	public BlockExpressionElements getBlockExpressionAccess() {
		return (pBlockExpression != null) ? pBlockExpression : (pBlockExpression = new BlockExpressionElements());
	}
	
	public ParserRule getBlockExpressionRule() {
		return getBlockExpressionAccess().getRule();
	}

	////ExampleTable:
	////	name=EXAMPLE_TEXT
	////	columns+=ExampleColumn+ EXAMPLE_ROW_END
	////	(rows += ExampleRow)*;
	////
	////
	////ExampleColumn: 
	////	(PIPE | PIPE_SPACES) type=JvmTypeReference? name=ValidID ;
	////
	////ExampleRow:
	////	((PIPE | PIPE_SPACES) cells+=XExpression)+ EXAMPLE_ROW_END;
	//XPrimaryExpression returns xbase::XExpression:
	//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
	//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
	//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression | Assertion;
	public XPrimaryExpressionElements getXPrimaryExpressionAccess() {
		return (pXPrimaryExpression != null) ? pXPrimaryExpression : (pXPrimaryExpression = new XPrimaryExpressionElements());
	}
	
	public ParserRule getXPrimaryExpressionRule() {
		return getXPrimaryExpressionAccess().getRule();
	}

	//XRelationalExpression returns xbase::XExpression:
	//	XOtherOperatorExpression (=> ({Should.leftOperand=current} feature=[types::JvmIdentifiableElement|Should])
	//	rightOperand=XOtherOperatorExpression | => ({ShouldThrow.expression=current} ("should" "throw" | "throws"))
	//	type=JvmTypeReference | => ({xbase::XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
	//	({xbase::XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
	//	rightOperand=XOtherOperatorExpression)*;
	public XRelationalExpressionElements getXRelationalExpressionAccess() {
		return (pXRelationalExpression != null) ? pXRelationalExpression : (pXRelationalExpression = new XRelationalExpressionElements());
	}
	
	public ParserRule getXRelationalExpressionRule() {
		return getXRelationalExpressionAccess().getRule();
	}

	//Should:
	//	"should" "not"? ID;
	public ShouldElements getShouldAccess() {
		return (pShould != null) ? pShould : (pShould = new ShouldElements());
	}
	
	public ParserRule getShouldRule() {
		return getShouldAccess().getRule();
	}

	//Assertion:
	//	{Assertion} "assert" expression=XExpression;
	public AssertionElements getAssertionAccess() {
		return (pAssertion != null) ? pAssertion : (pAssertion = new AssertionElements());
	}
	
	public ParserRule getAssertionRule() {
		return getAssertionAccess().getRule();
	}

	//XConstructorCall returns xbase::XExpression:
	//	XbaseConstructorCall (=> ({xtend::AnonymousClass.constructorCall=current} "{") members+=AnonymousMember* "}")?;
	public XConstructorCallElements getXConstructorCallAccess() {
		return (pXConstructorCall != null) ? pXConstructorCall : (pXConstructorCall = new XConstructorCallElements());
	}
	
	public ParserRule getXConstructorCallRule() {
		return getXConstructorCallAccess().getRule();
	}

	//AnonymousMember returns xtend::XtendMember:
	//	{xtend::XtendMember} annotations+=XAnnotation* ({xtend::XtendField.annotationInfo=current} modifiers+=CommonModifier*
	//	(modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID | modifiers+="extension"
	//	(modifiers+=FieldModifier | modifiers+=CommonModifier)* type=JvmTypeReference name=ValidID? | modifiers+=FieldModifier
	//	modifiers+=CommonModifier* modifiers+="extension" modifiers+=CommonModifier* type=JvmTypeReference name=ValidID? |
	//	type=JvmTypeReference name=ValidID) ("=" initialValue=XExpression)? ";"? |
	//	{xtend::XtendFunction.annotationInfo=current} modifiers+=CommonModifier* modifiers+=MethodModifier
	//	(modifiers+=CommonModifier | modifiers+=MethodModifier)* ("<" typeParameters+=JvmTypeParameter (","
	//	typeParameters+=JvmTypeParameter)* ">")? (=> (returnType=JvmTypeReference createExtensionInfo=CreateExtensionInfo
	//	name=ValidID "(") | => (returnType=JvmTypeReference name=FunctionID "(") | => (returnType=TypeReferenceNoTypeArgs
	//	name=FunctionID "(") | => (createExtensionInfo=CreateExtensionInfo name=ValidID "(") | name=FunctionID "(")
	//	(parameters+=Parameter ("," parameters+=Parameter)*)? ")" ("throws" exceptions+=JvmTypeReference (","
	//	exceptions+=JvmTypeReference)*)? (expression=XBlockExpression | expression=RichString | ";")?);
	public AnonymousMemberElements getAnonymousMemberAccess() {
		return (pAnonymousMember != null) ? pAnonymousMember : (pAnonymousMember = new AnonymousMemberElements());
	}
	
	public ParserRule getAnonymousMemberRule() {
		return getAnonymousMemberAccess().getRule();
	}

	//terminal BACKGROUND_TEXT:
	//	"Background:" MNL;
	public TerminalRule getBACKGROUND_TEXTRule() {
		return (tBACKGROUND_TEXT != null) ? tBACKGROUND_TEXT : (tBACKGROUND_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BACKGROUND_TEXT"));
	} 

	//terminal SCENARIO_TEXT:
	//	"Scenario:" MNL;
	public TerminalRule getSCENARIO_TEXTRule() {
		return (tSCENARIO_TEXT != null) ? tSCENARIO_TEXT : (tSCENARIO_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "SCENARIO_TEXT"));
	} 

	//terminal FEATURE_TEXT:
	//	"Feature" COLON->(BACKGROUND_TEXT | SCENARIO_TEXT);
	public TerminalRule getFEATURE_TEXTRule() {
		return (tFEATURE_TEXT != null) ? tFEATURE_TEXT : (tFEATURE_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "FEATURE_TEXT"));
	} 

	//terminal GIVEN_TEXT:
	//	"Given " STEP_WITH_ARGS;
	public TerminalRule getGIVEN_TEXTRule() {
		return (tGIVEN_TEXT != null) ? tGIVEN_TEXT : (tGIVEN_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "GIVEN_TEXT"));
	} 

	//terminal WHEN_TEXT:
	//	"When " STEP_WITH_ARGS;
	public TerminalRule getWHEN_TEXTRule() {
		return (tWHEN_TEXT != null) ? tWHEN_TEXT : (tWHEN_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "WHEN_TEXT"));
	} 

	//terminal THEN_TEXT:
	//	"Then " STEP_WITH_ARGS;
	public TerminalRule getTHEN_TEXTRule() {
		return (tTHEN_TEXT != null) ? tTHEN_TEXT : (tTHEN_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "THEN_TEXT"));
	} 

	//terminal AND_TEXT:
	//	"And " STEP_WITH_ARGS;
	public TerminalRule getAND_TEXTRule() {
		return (tAND_TEXT != null) ? tAND_TEXT : (tAND_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "AND_TEXT"));
	} 

	//terminal BUT_TEXT:
	//	"But " STEP_WITH_ARGS;
	public TerminalRule getBUT_TEXTRule() {
		return (tBUT_TEXT != null) ? tBUT_TEXT : (tBUT_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BUT_TEXT"));
	} 

	//// this is a dummy token that will be generated by a custom TokenSource
	//terminal TEXT:
	//	"____dummy____"+;
	public TerminalRule getTEXTRule() {
		return (tTEXT != null) ? tTEXT : (tTEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "TEXT"));
	} 

	//terminal fragment STEP_WITH_ARGS:
	//	!("\r" | "\n")* "\r"? ("\n" SPACES RICH_TEXT? SPACES | EOF);
	public TerminalRule getSTEP_WITH_ARGSRule() {
		return (tSTEP_WITH_ARGS != null) ? tSTEP_WITH_ARGS : (tSTEP_WITH_ARGS = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "STEP_WITH_ARGS"));
	} 

	//terminal fragment MNL:
	//	!("\r" | "\n")* NL;
	public TerminalRule getMNLRule() {
		return (tMNL != null) ? tMNL : (tMNL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "MNL"));
	} 

	//terminal fragment COLON:
	//	SPACES ":";
	public TerminalRule getCOLONRule() {
		return (tCOLON != null) ? tCOLON : (tCOLON = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "COLON"));
	} 

	//terminal fragment NL:
	//	"\r"? "\n"?;
	public TerminalRule getNLRule() {
		return (tNL != null) ? tNL : (tNL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "NL"));
	} 

	//terminal fragment SPACES:
	//	(" " | "\t")*;
	public TerminalRule getSPACESRule() {
		return (tSPACES != null) ? tSPACES : (tSPACES = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "SPACES"));
	} 

	//terminal RICH_TEXT:
	//	"\'\'\'" IN_RICH_STRING* ("\'\'\'" | ("\'" "\'"?)? EOF);
	public TerminalRule getRICH_TEXTRule() {
		return (tRICH_TEXT != null) ? tRICH_TEXT : (tRICH_TEXT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "RICH_TEXT"));
	} 

	//terminal RICH_TEXT_START:
	//	"\'\'\'" IN_RICH_STRING* ("\'" "\'"?)? "«";
	public TerminalRule getRICH_TEXT_STARTRule() {
		return (tRICH_TEXT_START != null) ? tRICH_TEXT_START : (tRICH_TEXT_START = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "RICH_TEXT_START"));
	} 

	//terminal RICH_TEXT_END:
	//	"»" IN_RICH_STRING* ("\'\'\'" | ("\'" "\'"?)? EOF);
	public TerminalRule getRICH_TEXT_ENDRule() {
		return (tRICH_TEXT_END != null) ? tRICH_TEXT_END : (tRICH_TEXT_END = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "RICH_TEXT_END"));
	} 

	//terminal RICH_TEXT_INBETWEEN:
	//	"»" IN_RICH_STRING* ("\'" "\'"?)? "«";
	public TerminalRule getRICH_TEXT_INBETWEENRule() {
		return (tRICH_TEXT_INBETWEEN != null) ? tRICH_TEXT_INBETWEEN : (tRICH_TEXT_INBETWEEN = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "RICH_TEXT_INBETWEEN"));
	} 

	//terminal COMMENT_RICH_TEXT_INBETWEEN:
	//	"««" !("\n" | "\r")* ("\r"? "\n" IN_RICH_STRING* ("\'" "\'"?)? "«")?;
	public TerminalRule getCOMMENT_RICH_TEXT_INBETWEENRule() {
		return (tCOMMENT_RICH_TEXT_INBETWEEN != null) ? tCOMMENT_RICH_TEXT_INBETWEEN : (tCOMMENT_RICH_TEXT_INBETWEEN = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "COMMENT_RICH_TEXT_INBETWEEN"));
	} 

	//terminal COMMENT_RICH_TEXT_END:
	//	"««" !("\n" | "\r")* ("\r"? "\n" IN_RICH_STRING* ("\'\'\'" | ("\'" "\'"?)? EOF) | EOF);
	public TerminalRule getCOMMENT_RICH_TEXT_ENDRule() {
		return (tCOMMENT_RICH_TEXT_END != null) ? tCOMMENT_RICH_TEXT_END : (tCOMMENT_RICH_TEXT_END = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "COMMENT_RICH_TEXT_END"));
	} 

	//terminal fragment IN_RICH_STRING:
	//	"\'\'" !("«" | "\'") | "\'" !("«" | "\'") | !("«" | "\'");
	public TerminalRule getIN_RICH_STRINGRule() {
		return (tIN_RICH_STRING != null) ? tIN_RICH_STRING : (tIN_RICH_STRING = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "IN_RICH_STRING"));
	} 

	/// **
	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
	// * which makes downstream grammars break on classloading, when a rule is removed.
	// * / StaticQualifier:
	//	(ValidID "::")+;
	public StaticQualifierElements getStaticQualifierAccess() {
		return (pStaticQualifier != null) ? pStaticQualifier : (pStaticQualifier = new StaticQualifierElements());
	}
	
	public ParserRule getStaticQualifierRule() {
		return getStaticQualifierAccess().getRule();
	}

	//File returns XtendFile:
	//	("package" package=QualifiedName ";"?)? importSection=XImportSection? xtendTypes+=Type*;
	public XtendGrammarAccess.FileElements getFileAccess() {
		return gaXtend.getFileAccess();
	}
	
	public ParserRule getFileRule() {
		return getFileAccess().getRule();
	}

	//Type returns XtendTypeDeclaration:
	//	{XtendTypeDeclaration} annotations+=XAnnotation* ({XtendClass.annotationInfo=current} modifiers+=CommonModifier*
	//	"class" name=ValidID ("<" typeParameters+=JvmTypeParameter ("," typeParameters+=JvmTypeParameter)* ">")? ("extends"
	//	extends=JvmParameterizedTypeReference)? ("implements" implements+=JvmParameterizedTypeReference (","
	//	implements+=JvmParameterizedTypeReference)*)? "{" members+=Member* "}" | {XtendInterface.annotationInfo=current}
	//	modifiers+=CommonModifier* "interface" name=ValidID ("<" typeParameters+=JvmTypeParameter (","
	//	typeParameters+=JvmTypeParameter)* ">")? ("extends" extends+=JvmParameterizedTypeReference (","
	//	extends+=JvmParameterizedTypeReference)*)? "{" members+=Member* "}" | {XtendEnum.annotationInfo=current}
	//	modifiers+=CommonModifier* "enum" name=ValidID "{" (members+=XtendEnumLiteral ("," members+=XtendEnumLiteral)*)? ";"?
	//	"}" | {XtendAnnotationType.annotationInfo=current} modifiers+=CommonModifier* "annotation" name=ValidID "{"
	//	members+=AnnotationField* "}");
	public XtendGrammarAccess.TypeElements getTypeAccess() {
		return gaXtend.getTypeAccess();
	}
	
	public ParserRule getTypeRule() {
		return getTypeAccess().getRule();
	}

	//AnnotationField returns XtendMember:
	//	{XtendMember} annotations+=XAnnotation* (({XtendField.annotationInfo=current} modifiers+=CommonModifier*
	//	modifiers+=FieldModifier modifiers+=CommonModifier* type=JvmTypeReference? name=ValidID |
	//	{XtendField.annotationInfo=current} modifiers+=CommonModifier* type=JvmTypeReference name=ValidID) ("="
	//	initialValue=XAnnotationElementValue)? ";"? | {XtendClass.annotationInfo=current} modifiers+=CommonModifier* "class"
	//	name=ValidID ("<" typeParameters+=JvmTypeParameter ("," typeParameters+=JvmTypeParameter)* ">")? ("extends"
	//	extends=JvmParameterizedTypeReference)? ("implements" implements+=JvmParameterizedTypeReference (","
	//	implements+=JvmParameterizedTypeReference)*)? "{" members+=Member* "}" | {XtendInterface.annotationInfo=current}
	//	modifiers+=CommonModifier* "interface" name=ValidID ("<" typeParameters+=JvmTypeParameter (","
	//	typeParameters+=JvmTypeParameter)* ">")? ("extends" extends+=JvmParameterizedTypeReference (","
	//	extends+=JvmParameterizedTypeReference)*)? "{" members+=Member* "}" | {XtendEnum.annotationInfo=current}
	//	modifiers+=CommonModifier* "enum" name=ValidID "{" (members+=XtendEnumLiteral ("," members+=XtendEnumLiteral)*)? ";"?
	//	"}" | {XtendAnnotationType.annotationInfo=current} modifiers+=CommonModifier* "annotation" name=ValidID "{"
	//	members+=AnnotationField* "}");
	public XtendGrammarAccess.AnnotationFieldElements getAnnotationFieldAccess() {
		return gaXtend.getAnnotationFieldAccess();
	}
	
	public ParserRule getAnnotationFieldRule() {
		return getAnnotationFieldAccess().getRule();
	}

	//TypeReferenceNoTypeArgs returns types::JvmParameterizedTypeReference:
	//	type=[types::JvmType|QualifiedName];
	public XtendGrammarAccess.TypeReferenceNoTypeArgsElements getTypeReferenceNoTypeArgsAccess() {
		return gaXtend.getTypeReferenceNoTypeArgsAccess();
	}
	
	public ParserRule getTypeReferenceNoTypeArgsRule() {
		return getTypeReferenceNoTypeArgsAccess().getRule();
	}

	//FunctionID:
	//	ValidID | Operators;
	public XtendGrammarAccess.FunctionIDElements getFunctionIDAccess() {
		return gaXtend.getFunctionIDAccess();
	}
	
	public ParserRule getFunctionIDRule() {
		return getFunctionIDAccess().getRule();
	}

	//Operators:
	//	OpMultiAssign //	| OpAdd completely contained in OpUnary
	//	| OpOr | OpAnd | OpEquality | OpCompare | OpOther | OpMulti | OpUnary | OpPostfix;
	public XtendGrammarAccess.OperatorsElements getOperatorsAccess() {
		return gaXtend.getOperatorsAccess();
	}
	
	public ParserRule getOperatorsRule() {
		return getOperatorsAccess().getRule();
	}

	//XtendEnumLiteral:
	//	name=ValidID;
	public XtendGrammarAccess.XtendEnumLiteralElements getXtendEnumLiteralAccess() {
		return gaXtend.getXtendEnumLiteralAccess();
	}
	
	public ParserRule getXtendEnumLiteralRule() {
		return getXtendEnumLiteralAccess().getRule();
	}

	//CommonModifier:
	//	"public" | "private" | "protected" | "package" | "abstract" | "static" | "dispatch" | "final" | "strictfp" | "native"
	//	| "volatile" | "synchronized" | "transient";
	public XtendGrammarAccess.CommonModifierElements getCommonModifierAccess() {
		return gaXtend.getCommonModifierAccess();
	}
	
	public ParserRule getCommonModifierRule() {
		return getCommonModifierAccess().getRule();
	}

	//FieldModifier:
	//	"val" | "var";
	public XtendGrammarAccess.FieldModifierElements getFieldModifierAccess() {
		return gaXtend.getFieldModifierAccess();
	}
	
	public ParserRule getFieldModifierRule() {
		return getFieldModifierAccess().getRule();
	}

	//MethodModifier:
	//	"def" | "override";
	public XtendGrammarAccess.MethodModifierElements getMethodModifierAccess() {
		return gaXtend.getMethodModifierAccess();
	}
	
	public ParserRule getMethodModifierRule() {
		return getMethodModifierAccess().getRule();
	}

	//CreateExtensionInfo:
	//	"create" (name=ValidID ":")? createExpression=XExpression;
	public XtendGrammarAccess.CreateExtensionInfoElements getCreateExtensionInfoAccess() {
		return gaXtend.getCreateExtensionInfoAccess();
	}
	
	public ParserRule getCreateExtensionInfoRule() {
		return getCreateExtensionInfoAccess().getRule();
	}

	//ValidID:
	//	ID | "create" | "annotation" | "AFTER" | "BEFORE" | "SEPARATOR";
	public XtendGrammarAccess.ValidIDElements getValidIDAccess() {
		return gaXtend.getValidIDAccess();
	}
	
	public ParserRule getValidIDRule() {
		return getValidIDAccess().getRule();
	}

	//// For feature calls we add 'extension' since there are method such as 'isExtension' or 'getExtension' out there.
	//FeatureCallID:
	//	InnerVarID | "extension";
	public XtendGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
		return gaXtend.getFeatureCallIDAccess();
	}
	
	public ParserRule getFeatureCallIDRule() {
		return getFeatureCallIDAccess().getRule();
	}

	//InnerVarID:
	//	ID | "abstract" | "annotation" | "class" | "create" | "def" | "dispatch" | "enum" | "extends" | "final" | "implements"
	//	| "import" | "interface" | "override" | "package" | "public" | "private" | "protected" | "static" | "throws" |
	//	"strictfp" | "native" | "volatile" | "synchronized" | "transient" | "AFTER" | "BEFORE" | "SEPARATOR";
	public XtendGrammarAccess.InnerVarIDElements getInnerVarIDAccess() {
		return gaXtend.getInnerVarIDAccess();
	}
	
	public ParserRule getInnerVarIDRule() {
		return getInnerVarIDAccess().getRule();
	}

	//Parameter returns XtendParameter:
	//	annotations+=XAnnotation* (extension?="extension" annotations+=XAnnotation*)? parameterType=JvmTypeReference
	//	varArg?="..."? name=ValidID;
	public XtendGrammarAccess.ParameterElements getParameterAccess() {
		return gaXtend.getParameterAccess();
	}
	
	public ParserRule getParameterRule() {
		return getParameterAccess().getRule();
	}

	//XVariableDeclaration returns xbase::XExpression:
	//	=> ({XtendVariableDeclaration} ((writeable?="var" | "val") extension?="extension"? | extension?="extension"
	//	(writeable?="var" | "val"))) (=> (type=JvmTypeReference name=InnerVarID) | name=InnerVarID) ("=" right=XExpression)?;
	public XtendGrammarAccess.XVariableDeclarationElements getXVariableDeclarationAccess() {
		return gaXtend.getXVariableDeclarationAccess();
	}
	
	public ParserRule getXVariableDeclarationRule() {
		return getXVariableDeclarationAccess().getRule();
	}

	//XbaseConstructorCall returns xbase::XConstructorCall:
	//	{xbase::XConstructorCall} "new" constructor=[types::JvmConstructor|QualifiedName] ("<"
	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")? (=>
	//	explicitConstructorCall?="(" (arguments+=XShortClosure | arguments+=XExpression ("," arguments+=XExpression)*)? ")")?
	//	arguments+=XClosure?;
	public XtendGrammarAccess.XbaseConstructorCallElements getXbaseConstructorCallAccess() {
		return gaXtend.getXbaseConstructorCallAccess();
	}
	
	public ParserRule getXbaseConstructorCallRule() {
		return getXbaseConstructorCallAccess().getRule();
	}

	//JvmFormalParameter returns XtendFormalParameter:
	//	extension?="extension"? parameterType=JvmTypeReference? name=InnerVarID;
	public XtendGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
		return gaXtend.getJvmFormalParameterAccess();
	}
	
	public ParserRule getJvmFormalParameterRule() {
		return getJvmFormalParameterAccess().getRule();
	}

	//FullJvmFormalParameter returns XtendFormalParameter:
	//	extension?="extension"? parameterType=JvmTypeReference name=InnerVarID;
	public XtendGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
		return gaXtend.getFullJvmFormalParameterAccess();
	}
	
	public ParserRule getFullJvmFormalParameterRule() {
		return getFullJvmFormalParameterAccess().getRule();
	}

	//XStringLiteral returns xbase::XExpression:
	//	SimpleStringLiteral | RichString;
	public XtendGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
		return gaXtend.getXStringLiteralAccess();
	}
	
	public ParserRule getXStringLiteralRule() {
		return getXStringLiteralAccess().getRule();
	}

	//XSwitchExpression returns xbase::XExpression:
	//	{xbase::XSwitchExpression} "switch" (=> ("(" declaredParam=JvmFormalParameter ":") switch=XExpression ")" | =>
	//	(declaredParam=JvmFormalParameter ":")? switch=XExpressionOrSimpleConstructorCall) "{" cases+=XCasePart* ("default"
	//	":" default=XExpression)? "}";
	public XtendGrammarAccess.XSwitchExpressionElements getXSwitchExpressionAccess() {
		return gaXtend.getXSwitchExpressionAccess();
	}
	
	public ParserRule getXSwitchExpressionRule() {
		return getXSwitchExpressionAccess().getRule();
	}

	//XExpressionOrSimpleConstructorCall returns xbase::XExpression:
	//	XbaseConstructorCall | XExpression;
	public XtendGrammarAccess.XExpressionOrSimpleConstructorCallElements getXExpressionOrSimpleConstructorCallAccess() {
		return gaXtend.getXExpressionOrSimpleConstructorCallAccess();
	}
	
	public ParserRule getXExpressionOrSimpleConstructorCallRule() {
		return getXExpressionOrSimpleConstructorCallAccess().getRule();
	}

	//SimpleStringLiteral returns xbase::XExpression:
	//	{xbase::XStringLiteral} value=STRING;
	public XtendGrammarAccess.SimpleStringLiteralElements getSimpleStringLiteralAccess() {
		return gaXtend.getSimpleStringLiteralAccess();
	}
	
	public ParserRule getSimpleStringLiteralRule() {
		return getSimpleStringLiteralAccess().getRule();
	}

	//RichString returns xbase::XExpression:
	//	{RichString} (expressions+=RichStringLiteral | expressions+=RichStringLiteralStart expressions+=RichStringPart?
	//	(expressions+=RichStringLiteralInbetween expressions+=RichStringPart?)* expressions+=RichStringLiteralEnd);
	public XtendGrammarAccess.RichStringElements getRichStringAccess() {
		return gaXtend.getRichStringAccess();
	}
	
	public ParserRule getRichStringRule() {
		return getRichStringAccess().getRule();
	}

	//RichStringLiteral returns xbase::XExpression:
	//	{RichStringLiteral} value=RICH_TEXT;
	public XtendGrammarAccess.RichStringLiteralElements getRichStringLiteralAccess() {
		return gaXtend.getRichStringLiteralAccess();
	}
	
	public ParserRule getRichStringLiteralRule() {
		return getRichStringLiteralAccess().getRule();
	}

	//RichStringLiteralStart returns xbase::XExpression:
	//	{RichStringLiteral} value=RICH_TEXT_START;
	public XtendGrammarAccess.RichStringLiteralStartElements getRichStringLiteralStartAccess() {
		return gaXtend.getRichStringLiteralStartAccess();
	}
	
	public ParserRule getRichStringLiteralStartRule() {
		return getRichStringLiteralStartAccess().getRule();
	}

	//RichStringLiteralInbetween returns xbase::XExpression:
	//	{RichStringLiteral} (value=RICH_TEXT_INBETWEEN | value=COMMENT_RICH_TEXT_INBETWEEN);
	public XtendGrammarAccess.RichStringLiteralInbetweenElements getRichStringLiteralInbetweenAccess() {
		return gaXtend.getRichStringLiteralInbetweenAccess();
	}
	
	public ParserRule getRichStringLiteralInbetweenRule() {
		return getRichStringLiteralInbetweenAccess().getRule();
	}

	//RichStringLiteralEnd returns xbase::XExpression:
	//	{RichStringLiteral} (value=RICH_TEXT_END | value=COMMENT_RICH_TEXT_END);
	public XtendGrammarAccess.RichStringLiteralEndElements getRichStringLiteralEndAccess() {
		return gaXtend.getRichStringLiteralEndAccess();
	}
	
	public ParserRule getRichStringLiteralEndRule() {
		return getRichStringLiteralEndAccess().getRule();
	}

	//InternalRichString returns xbase::XExpression:
	//	{RichString} (expressions+=RichStringLiteralInbetween (expressions+=RichStringPart?
	//	expressions+=RichStringLiteralInbetween)*);
	public XtendGrammarAccess.InternalRichStringElements getInternalRichStringAccess() {
		return gaXtend.getInternalRichStringAccess();
	}
	
	public ParserRule getInternalRichStringRule() {
		return getInternalRichStringAccess().getRule();
	}

	//RichStringPart returns xbase::XExpression:
	//	XExpressionOrVarDeclaration | RichStringForLoop | RichStringIf;
	public XtendGrammarAccess.RichStringPartElements getRichStringPartAccess() {
		return gaXtend.getRichStringPartAccess();
	}
	
	public ParserRule getRichStringPartRule() {
		return getRichStringPartAccess().getRule();
	}

	//RichStringForLoop returns xbase::XExpression:
	//	{RichStringForLoop} "FOR" declaredParam=JvmFormalParameter ":" forExpression=XExpression ("BEFORE"
	//	before=XExpression)? ("SEPARATOR" separator=XExpression)? ("AFTER" after=XExpression)?
	//	eachExpression=InternalRichString "ENDFOR";
	public XtendGrammarAccess.RichStringForLoopElements getRichStringForLoopAccess() {
		return gaXtend.getRichStringForLoopAccess();
	}
	
	public ParserRule getRichStringForLoopRule() {
		return getRichStringForLoopAccess().getRule();
	}

	//RichStringIf returns xbase::XExpression:
	//	{RichStringIf} "IF" if=XExpression then=InternalRichString elseIfs+=RichStringElseIf* ("ELSE"
	//	else=InternalRichString)? "ENDIF";
	public XtendGrammarAccess.RichStringIfElements getRichStringIfAccess() {
		return gaXtend.getRichStringIfAccess();
	}
	
	public ParserRule getRichStringIfRule() {
		return getRichStringIfAccess().getRule();
	}

	//RichStringElseIf:
	//	"ELSEIF" if=XExpression then=InternalRichString;
	public XtendGrammarAccess.RichStringElseIfElements getRichStringElseIfAccess() {
		return gaXtend.getRichStringElseIfAccess();
	}
	
	public ParserRule getRichStringElseIfRule() {
		return getRichStringElseIfAccess().getRule();
	}

	//terminal ID:
	//	"^"? (IDENTIFIER_START | UNICODE_ESCAPE) (IDENTIFIER_PART | UNICODE_ESCAPE)*;
	public TerminalRule getIDRule() {
		return gaXtend.getIDRule();
	} 

	//terminal fragment HEX_DIGIT:
	//	"0".."9" | "a".."f" | "A".."F";
	public TerminalRule getHEX_DIGITRule() {
		return gaXtend.getHEX_DIGITRule();
	} 

	//terminal fragment UNICODE_ESCAPE:
	//	"\\" "u" (HEX_DIGIT (HEX_DIGIT (HEX_DIGIT HEX_DIGIT?)?)?)?;
	public TerminalRule getUNICODE_ESCAPERule() {
		return gaXtend.getUNICODE_ESCAPERule();
	} 

	//terminal fragment IDENTIFIER_START:
	//	"$" | "A".."Z" | "_" | "a".."z" | "¢".."¥" | "ª" | "µ" | "º" | "À".."Ö" | "Ø".."ö" | "ø".."ȶ" | "ɐ".."ˁ" | "ˆ".."ˑ" |
	//	"ˠ".."ˤ" | "ˮ" | "ͺ" | "Ά" | "Έ".."Ί" | "Ό" | "Ύ".."Ρ" | "Σ".."ώ" | "ϐ".."ϵ" | "Ϸ".."ϻ" | "Ѐ".."ҁ" | "Ҋ".."ӎ" |
	//	"Ӑ".."ӵ" | "Ӹ".."ӹ" | "Ԁ".."ԏ" | "Ա".."Ֆ" | "ՙ" | "ա".."և" | "א".."ת" | "װ".."ײ" | "ء".."غ" | "ـ".."ي" | "ٮ".."ٯ" |
	//	"ٱ".."ۓ" | "ە" | "ۥ".."ۦ" | "ۮ".."ۯ" | "ۺ".."ۼ" | "ۿ" | "ܐ" | "ܒ".."ܯ" | "ݍ".."ݏ" | "ހ".."ޥ" | "ޱ" | "ऄ".."ह" | "ऽ" |
	//	"ॐ" | "क़".."ॡ" | "অ".."ঌ" | "এ".."ঐ" | "ও".."ন" | "প".."র" | "ল" | "শ".."হ" | "ঽ" | "ড়".."ঢ়" | "য়".."ৡ" | "ৰ".."৳" |
	//	"ਅ".."ਊ" | "ਏ".."ਐ" | "ਓ".."ਨ" | "ਪ".."ਰ" | "ਲ".."ਲ਼" | "ਵ".."ਸ਼" | "ਸ".."ਹ" | "ਖ਼".."ੜ" | "ਫ਼" | "ੲ".."ੴ" | "અ".."ઍ" |
	//	"એ".."ઑ" | "ઓ".."ન" | "પ".."ર" | "લ".."ળ" | "વ".."હ" | "ઽ" | "ૐ" | "ૠ".."ૡ" | "૱" | "ଅ".."ଌ" | "ଏ".."ଐ" | "ଓ".."ନ" |
	//	"ପ".."ର" | "ଲ".."ଳ" | "ଵ".."ହ" | "ଽ" | "ଡ଼".."ଢ଼" | "ୟ".."ୡ" | "ୱ" | "ஃ" | "அ".."ஊ" | "எ".."ஐ" | "ஒ".."க" | "ங".."ச" |
	//	"ஜ" | "ஞ".."ட" | "ண".."த" | "ந".."ப" | "ம".."வ" | "ஷ".."ஹ" | "௹" | "అ".."ఌ" | "ఎ".."ఐ" | "ఒ".."న" | "ప".."ళ" |
	//	"వ".."హ" | "ౠ".."ౡ" | "ಅ".."ಌ" | "ಎ".."ಐ" | "ಒ".."ನ" | "ಪ".."ಳ" | "ವ".."ಹ" | "ಽ" | "ೞ" | "ೠ".."ೡ" | "അ".."ഌ" |
	//	"എ".."ഐ" | "ഒ".."ന" | "പ".."ഹ" | "ൠ".."ൡ" | "අ".."ඖ" | "ක".."න" | "ඳ".."ර" | "ල" | "ව".."ෆ" | "ก".."ะ" | "า".."ำ" |
	//	"฿".."ๆ" | "ກ".."ຂ" | "ຄ" | "ງ".."ຈ" | "ຊ" | "ຍ" | "ດ".."ທ" | "ນ".."ຟ" | "ມ".."ຣ" | "ລ" | "ວ" | "ສ".."ຫ" | "ອ".."ະ" |
	//	"າ".."ຳ" | "ຽ" | "ເ".."ໄ" | "ໆ" | "ໜ".."ໝ" | "ༀ" | "ཀ".."ཇ" | "ཉ".."ཪ" | "ྈ".."ྋ" | "က".."အ" | "ဣ".."ဧ" | "ဩ".."ဪ" |
	//	"ၐ".."ၕ" | "Ⴀ".."Ⴥ" | "ა".."ჸ" | "ᄀ".."ᅙ" | "ᅟ".."ᆢ" | "ᆨ".."ᇹ" | "ሀ".."ሆ" | "ለ".."ቆ" | "ቈ" | "ቊ".."ቍ" | "ቐ".."ቖ" |
	//	"ቘ" | "ቚ".."ቝ" | "በ".."ኆ" | "ኈ" | "ኊ".."ኍ" | "ነ".."ኮ" | "ኰ" | "ኲ".."ኵ" | "ኸ".."ኾ" | "ዀ" | "ዂ".."ዅ" | "ወ".."ዎ" |
	//	"ዐ".."ዖ" | "ዘ".."ዮ" | "ደ".."ጎ" | "ጐ" | "ጒ".."ጕ" | "ጘ".."ጞ" | "ጠ".."ፆ" | "ፈ".."ፚ" | "Ꭰ".."Ᏼ" | "ᐁ".."ᙬ" | "ᙯ".."ᙶ" |
	//	"ᚁ".."ᚚ" | "ᚠ".."ᛪ" | "ᛮ".."ᛰ" | "ᜀ".."ᜌ" | "ᜎ".."ᜑ" | "ᜠ".."ᜱ" | "ᝀ".."ᝑ" | "ᝠ".."ᝬ" | "ᝮ".."ᝰ" | "ក".."ឳ" | "ៗ" |
	//	"៛".."ៜ" | "ᠠ".."ᡷ" | "ᢀ".."ᢨ" | "ᤀ".."ᤜ" | "ᥐ".."ᥭ" | "ᥰ".."ᥴ" | "ᴀ".."ᵫ" | "Ḁ".."ẛ" | "Ạ".."ỹ" | "ἀ".."ἕ" | "Ἐ".."Ἕ"
	//	| "ἠ".."ὅ" | "Ὀ".."Ὅ" | "ὐ".."ὗ" | "Ὑ" | "Ὓ" | "Ὕ" | "Ὗ".."ώ" | "ᾀ".."ᾴ" | "ᾶ".."ᾼ" | "ι" | "ῂ".."ῄ" | "ῆ".."ῌ" |
	//	"ῐ".."ΐ" | "ῖ".."Ί" | "ῠ".."Ῥ" | "ῲ".."ῴ" | "ῶ".."ῼ" | "‿".."⁀" | "⁔" | "ⁱ" | "ⁿ" | "₠".."₱" | "ℂ" | "ℇ" | "ℊ".."ℓ" |
	//	"ℕ" | "ℙ".."ℝ" | "ℤ" | "Ω" | "ℨ" | "K".."ℭ" | "ℯ".."ℱ" | "ℳ".."ℹ" | "ℽ".."ℿ" | "ⅅ".."ⅉ" | "Ⅰ".."Ↄ" | "々".."〇" |
	//	"〡".."〩" | "〱".."〵" | "〸".."〼" | "ぁ".."ゖ" | "ゝ".."ゟ" | "ァ".."ヿ" | "ㄅ".."ㄬ" | "ㄱ".."ㆎ" | "ㆠ".."ㆷ" | "ㇰ".."ㇿ" | "㐀".."䶵"
	//	| "一".."龥" | "ꀀ".."ꒌ" | "가".."힣" | "豈".."鶴" | "侮".."頻" | "ff".."st" | "ﬓ".."ﬗ" | "יִ" | "ײַ".."ﬨ" | "שׁ".."זּ" | "טּ".."לּ" |
	//	"מּ" | "נּ".."סּ" | "ףּ".."פּ" | "צּ".."ﮱ" | "ﯓ".."ﴽ" | "ﵐ".."ﶏ" | "ﶒ".."ﷇ" | "ﷰ".."﷼" | "︳".."︴" | "﹍".."﹏" | "﹩" |
	//	"ﹰ".."ﹴ" | "ﹶ".."ﻼ" | "$" | "A".."Z" | "_" | "a".."z" | "・".."ᄒ" | "ᅡ".."ᅦ" | "ᅧ".."ᅬ" | "ᅭ".."ᅲ" | "ᅳ".."ᅵ" |
	//	"¢".."£" | "¥".."₩";
	public TerminalRule getIDENTIFIER_STARTRule() {
		return gaXtend.getIDENTIFIER_STARTRule();
	} 

	//terminal fragment IDENTIFIER_PART:
	//	IDENTIFIER_START | IDENTIFIER_PART_IMPL;
	public TerminalRule getIDENTIFIER_PARTRule() {
		return gaXtend.getIDENTIFIER_PARTRule();
	} 

	//terminal fragment IDENTIFIER_PART_IMPL:
	//	"".."\b" | "".."" | "0".."9" | "".."Ÿ" | "­" | "̀".."͗" | "͝".."ͯ" | "҃".."҆" | "֑".."֡" | "֣".."ֹ" | "ֻ".."ֽ" |
	//	"ֿ" | "ׁ".."ׂ" | "ׄ" | "؀".."؃" | "ؐ".."ؕ" | "ً".."٘" | "٠".."٩" | "ٰ" | "ۖ".."۝" | "۟".."ۤ" | "ۧ".."ۨ" | "۪".."ۭ" |
	//	"۰".."۹" | "܏" | "ܑ" | "ܰ".."݊" | "ަ".."ް" | "ँ".."ः" | "़" | "ा".."्" | "॑".."॔" | "ॢ".."ॣ" | "०".."९" | "ঁ".."ঃ" |
	//	"়" | "া".."ৄ" | "ে".."ৈ" | "ো".."্" | "ৗ" | "ৢ".."ৣ" | "০".."৯" | "ਁ".."ਃ" | "਼" | "ਾ".."ੂ" | "ੇ".."ੈ" | "ੋ".."੍" |
	//	"੦".."ੱ" | "ઁ".."ઃ" | "઼" | "ા".."ૅ" | "ે".."ૉ" | "ો".."્" | "ૢ".."ૣ" | "૦".."૯" | "ଁ".."ଃ" | "଼" | "ା".."ୃ" |
	//	"େ".."ୈ" | "ୋ".."୍" | "ୖ".."ୗ" | "୦".."୯" | "ஂ" | "ா".."ூ" | "ெ".."ை" | "ொ".."்" | "ௗ" | "௧".."௯" | "ఁ".."ః" |
	//	"ా".."ౄ" | "ె".."ై" | "ొ".."్" | "ౕ".."ౖ" | "౦".."౯" | "ಂ".."ಃ" | "಼" | "ಾ".."ೄ" | "ೆ".."ೈ" | "ೊ".."್" | "ೕ".."ೖ" |
	//	"೦".."೯" | "ം".."ഃ" | "ാ".."ൃ" | "െ".."ൈ" | "ൊ".."്" | "ൗ" | "൦".."൯" | "ං".."ඃ" | "්" | "ා".."ු" | "ූ" | "ෘ".."ෟ" |
	//	"ෲ".."ෳ" | "ั" | "ิ".."ฺ" | "็".."๎" | "๐".."๙" | "ັ" | "ິ".."ູ" | "ົ".."ຼ" | "່".."ໍ" | "໐".."໙" | "༘".."༙" |
	//	"༠".."༩" | "༵" | "༷" | "༹" | "༾".."༿" | "ཱ".."྄" | "྆".."྇" | "ྐ".."ྗ" | "ྙ".."ྼ" | "࿆" | "ာ".."ဲ" | "ံ".."္" |
	//	"၀".."၉" | "ၖ".."ၙ" | "፩".."፱" | "ᜒ".."᜔" | "ᜲ".."᜴" | "ᝒ".."ᝓ" | "ᝲ".."ᝳ" | "឴".."៓" | "៝" | "០".."៩" | "᠋".."᠍" |
	//	"᠐".."᠙" | "ᢩ" | "ᤠ".."ᤫ" | "ᤰ".."᤻" | "᥆".."᥏" | "‌".."‏" | "‪".."‮" | "⁠".."⁣" | "".."" | "⃐".."⃜" | "⃡" |
	//	"⃥".."⃪" | "〪".."〯" | "゙".."゚" | "ﬞ" | "︀".."️" | "︠".."︣" | "" | "0".."9" | "".."";
	public TerminalRule getIDENTIFIER_PART_IMPLRule() {
		return gaXtend.getIDENTIFIER_PART_IMPLRule();
	} 

	//XAnnotation:
	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
	//	value=XAnnotationElementValueOrCommaList)? ")")?;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
		return gaXtend.getXAnnotationAccess();
	}
	
	public ParserRule getXAnnotationRule() {
		return getXAnnotationAccess().getRule();
	}

	//XAnnotationElementValuePair:
	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
		return gaXtend.getXAnnotationElementValuePairAccess();
	}
	
	public ParserRule getXAnnotationElementValuePairRule() {
		return getXAnnotationElementValuePairAccess().getRule();
	}

	//XAnnotationElementValueOrCommaList returns xbase::XExpression:
	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
	//	XAnnotationOrExpression ({xbase::XListLiteral.elements+=current} ("," elements+=XAnnotationOrExpression)+)?;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueOrCommaListElements getXAnnotationElementValueOrCommaListAccess() {
		return gaXtend.getXAnnotationElementValueOrCommaListAccess();
	}
	
	public ParserRule getXAnnotationElementValueOrCommaListRule() {
		return getXAnnotationElementValueOrCommaListAccess().getRule();
	}

	//XAnnotationElementValue returns xbase::XExpression:
	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
	//	XAnnotationOrExpression;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
		return gaXtend.getXAnnotationElementValueAccess();
	}
	
	public ParserRule getXAnnotationElementValueRule() {
		return getXAnnotationElementValueAccess().getRule();
	}

	//XAnnotationOrExpression returns xbase::XExpression:
	//	XAnnotation | XExpression;
	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
		return gaXtend.getXAnnotationOrExpressionAccess();
	}
	
	public ParserRule getXAnnotationOrExpressionRule() {
		return getXAnnotationOrExpressionAccess().getRule();
	}

	//XExpression:
	//	XAssignment;
	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
		return gaXtend.getXExpressionAccess();
	}
	
	public ParserRule getXExpressionRule() {
		return getXExpressionAccess().getRule();
	}

	//XAssignment returns XExpression:
	//	{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign value=XAssignment | XOrExpression
	//	(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
	//	rightOperand=XAssignment)?;
	public XbaseGrammarAccess.XAssignmentElements getXAssignmentAccess() {
		return gaXtend.getXAssignmentAccess();
	}
	
	public ParserRule getXAssignmentRule() {
		return getXAssignmentAccess().getRule();
	}

	//OpSingleAssign:
	//	"=";
	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
		return gaXtend.getOpSingleAssignAccess();
	}
	
	public ParserRule getOpSingleAssignRule() {
		return getOpSingleAssignAccess().getRule();
	}

	//OpMultiAssign:
	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
		return gaXtend.getOpMultiAssignAccess();
	}
	
	public ParserRule getOpMultiAssignRule() {
		return getOpMultiAssignAccess().getRule();
	}

	//XOrExpression returns XExpression:
	//	XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
	//	rightOperand=XAndExpression)*;
	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
		return gaXtend.getXOrExpressionAccess();
	}
	
	public ParserRule getXOrExpressionRule() {
		return getXOrExpressionAccess().getRule();
	}

	//OpOr:
	//	"||";
	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
		return gaXtend.getOpOrAccess();
	}
	
	public ParserRule getOpOrRule() {
		return getOpOrAccess().getRule();
	}

	//XAndExpression returns XExpression:
	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
	//	rightOperand=XEqualityExpression)*;
	public XbaseGrammarAccess.XAndExpressionElements getXAndExpressionAccess() {
		return gaXtend.getXAndExpressionAccess();
	}
	
	public ParserRule getXAndExpressionRule() {
		return getXAndExpressionAccess().getRule();
	}

	//OpAnd:
	//	"&&";
	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
		return gaXtend.getOpAndAccess();
	}
	
	public ParserRule getOpAndRule() {
		return getOpAndAccess().getRule();
	}

	//XEqualityExpression returns XExpression:
	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpEquality])
	//	rightOperand=XRelationalExpression)*;
	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
		return gaXtend.getXEqualityExpressionAccess();
	}
	
	public ParserRule getXEqualityExpressionRule() {
		return getXEqualityExpressionAccess().getRule();
	}

	//OpEquality:
	//	"==" | "!=" | "===" | "!==";
	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
		return gaXtend.getOpEqualityAccess();
	}
	
	public ParserRule getOpEqualityRule() {
		return getOpEqualityAccess().getRule();
	}

	//OpCompare:
	//	">=" | "<" "=" | ">" | "<";
	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
		return gaXtend.getOpCompareAccess();
	}
	
	public ParserRule getOpCompareRule() {
		return getOpCompareAccess().getRule();
	}

	//XOtherOperatorExpression returns XExpression:
	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOther])
	//	rightOperand=XAdditiveExpression)*;
	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
		return gaXtend.getXOtherOperatorExpressionAccess();
	}
	
	public ParserRule getXOtherOperatorExpressionRule() {
		return getXOtherOperatorExpressionAccess().getRule();
	}

	//OpOther:
	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
		return gaXtend.getOpOtherAccess();
	}
	
	public ParserRule getOpOtherRule() {
		return getOpOtherAccess().getRule();
	}

	//XAdditiveExpression returns XExpression:
	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
	//	rightOperand=XMultiplicativeExpression)*;
	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
		return gaXtend.getXAdditiveExpressionAccess();
	}
	
	public ParserRule getXAdditiveExpressionRule() {
		return getXAdditiveExpressionAccess().getRule();
	}

	//OpAdd:
	//	"+" | "-";
	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
		return gaXtend.getOpAddAccess();
	}
	
	public ParserRule getOpAddRule() {
		return getOpAddAccess().getRule();
	}

	//XMultiplicativeExpression returns XExpression:
	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMulti])
	//	rightOperand=XUnaryOperation)*;
	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
		return gaXtend.getXMultiplicativeExpressionAccess();
	}
	
	public ParserRule getXMultiplicativeExpressionRule() {
		return getXMultiplicativeExpressionAccess().getRule();
	}

	//OpMulti:
	//	"*" | "**" | "/" | "%";
	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
		return gaXtend.getOpMultiAccess();
	}
	
	public ParserRule getOpMultiRule() {
		return getOpMultiAccess().getRule();
	}

	//XUnaryOperation returns XExpression:
	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
		return gaXtend.getXUnaryOperationAccess();
	}
	
	public ParserRule getXUnaryOperationRule() {
		return getXUnaryOperationAccess().getRule();
	}

	//OpUnary:
	//	"!" | "-" | "+";
	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
		return gaXtend.getOpUnaryAccess();
	}
	
	public ParserRule getOpUnaryRule() {
		return getOpUnaryAccess().getRule();
	}

	//XCastedExpression returns XExpression:
	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
		return gaXtend.getXCastedExpressionAccess();
	}
	
	public ParserRule getXCastedExpressionRule() {
		return getXCastedExpressionAccess().getRule();
	}

	//XPostfixOperation returns XExpression:
	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
		return gaXtend.getXPostfixOperationAccess();
	}
	
	public ParserRule getXPostfixOperationRule() {
		return getXPostfixOperationAccess().getRule();
	}

	//OpPostfix:
	//	"++" | "--";
	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
		return gaXtend.getOpPostfixAccess();
	}
	
	public ParserRule getOpPostfixRule() {
		return getOpPostfixAccess().getRule();
	}

	//XMemberFeatureCall returns XExpression:
	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ("." | explicitStatic?="::")
	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | =>
	//	({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ("<"
	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (memberCallArguments+=XShortClosure |
	//	memberCallArguments+=XExpression ("," memberCallArguments+=XExpression)*)? ")")? memberCallArguments+=XClosure?)*;
	public XbaseGrammarAccess.XMemberFeatureCallElements getXMemberFeatureCallAccess() {
		return gaXtend.getXMemberFeatureCallAccess();
	}
	
	public ParserRule getXMemberFeatureCallRule() {
		return getXMemberFeatureCallAccess().getRule();
	}

	//XLiteral returns XExpression:
	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
		return gaXtend.getXLiteralAccess();
	}
	
	public ParserRule getXLiteralRule() {
		return getXLiteralAccess().getRule();
	}

	//XCollectionLiteral:
	//	XSetLiteral | XListLiteral;
	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
		return gaXtend.getXCollectionLiteralAccess();
	}
	
	public ParserRule getXCollectionLiteralRule() {
		return getXCollectionLiteralAccess().getRule();
	}

	//XSetLiteral:
	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
		return gaXtend.getXSetLiteralAccess();
	}
	
	public ParserRule getXSetLiteralRule() {
		return getXSetLiteralAccess().getRule();
	}

	//XListLiteral:
	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
		return gaXtend.getXListLiteralAccess();
	}
	
	public ParserRule getXListLiteralRule() {
		return getXListLiteralAccess().getRule();
	}

	//XClosure returns XExpression:
	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
		return gaXtend.getXClosureAccess();
	}
	
	public ParserRule getXClosureRule() {
		return getXClosureAccess().getRule();
	}

	//XExpressionInClosure returns XExpression:
	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
		return gaXtend.getXExpressionInClosureAccess();
	}
	
	public ParserRule getXExpressionInClosureRule() {
		return getXExpressionInClosureAccess().getRule();
	}

	//XShortClosure returns XExpression:
	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
	//	explicitSyntax?="|") expression=XExpression;
	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
		return gaXtend.getXShortClosureAccess();
	}
	
	public ParserRule getXShortClosureRule() {
		return getXShortClosureAccess().getRule();
	}

	//XParenthesizedExpression returns XExpression:
	//	"(" XExpression ")";
	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
		return gaXtend.getXParenthesizedExpressionAccess();
	}
	
	public ParserRule getXParenthesizedExpressionRule() {
		return getXParenthesizedExpressionAccess().getRule();
	}

	//XIfExpression returns XExpression:
	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
		return gaXtend.getXIfExpressionAccess();
	}
	
	public ParserRule getXIfExpressionRule() {
		return getXIfExpressionAccess().getRule();
	}

	//XCasePart:
	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | ",");
	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
		return gaXtend.getXCasePartAccess();
	}
	
	public ParserRule getXCasePartRule() {
		return getXCasePartAccess().getRule();
	}

	//XForLoopExpression returns XExpression:
	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
	//	eachExpression=XExpression;
	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
		return gaXtend.getXForLoopExpressionAccess();
	}
	
	public ParserRule getXForLoopExpressionRule() {
		return getXForLoopExpressionAccess().getRule();
	}

	//XBasicForLoopExpression returns XExpression:
	//	{XBasicForLoopExpression} "for" "(" (initExpressions+=XExpressionOrVarDeclaration (","
	//	initExpressions+=XExpressionOrVarDeclaration)*)? ";" expression=XExpression? ";" (updateExpressions+=XExpression (","
	//	updateExpressions+=XExpression)*)? ")" eachExpression=XExpression;
	public XbaseGrammarAccess.XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
		return gaXtend.getXBasicForLoopExpressionAccess();
	}
	
	public ParserRule getXBasicForLoopExpressionRule() {
		return getXBasicForLoopExpressionAccess().getRule();
	}

	//XWhileExpression returns XExpression:
	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
		return gaXtend.getXWhileExpressionAccess();
	}
	
	public ParserRule getXWhileExpressionRule() {
		return getXWhileExpressionAccess().getRule();
	}

	//XDoWhileExpression returns XExpression:
	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
		return gaXtend.getXDoWhileExpressionAccess();
	}
	
	public ParserRule getXDoWhileExpressionRule() {
		return getXDoWhileExpressionAccess().getRule();
	}

	//XBlockExpression returns XExpression:
	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
		return gaXtend.getXBlockExpressionAccess();
	}
	
	public ParserRule getXBlockExpressionRule() {
		return getXBlockExpressionAccess().getRule();
	}

	//XExpressionOrVarDeclaration returns XExpression:
	//	XVariableDeclaration | XExpression;
	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
		return gaXtend.getXExpressionOrVarDeclarationAccess();
	}
	
	public ParserRule getXExpressionOrVarDeclarationRule() {
		return getXExpressionOrVarDeclarationAccess().getRule();
	}

	//XFeatureCall returns XExpression:
	//	{XFeatureCall} ("<" typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (featureCallArguments+=XShortClosure
	//	| featureCallArguments+=XExpression ("," featureCallArguments+=XExpression)*)? ")")? featureCallArguments+=XClosure?;
	public XbaseGrammarAccess.XFeatureCallElements getXFeatureCallAccess() {
		return gaXtend.getXFeatureCallAccess();
	}
	
	public ParserRule getXFeatureCallRule() {
		return getXFeatureCallAccess().getRule();
	}

	//IdOrSuper:
	//	FeatureCallID | "super";
	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
		return gaXtend.getIdOrSuperAccess();
	}
	
	public ParserRule getIdOrSuperRule() {
		return getIdOrSuperAccess().getRule();
	}

	//XBooleanLiteral returns XExpression:
	//	{XBooleanLiteral} ("false" | isTrue?="true");
	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
		return gaXtend.getXBooleanLiteralAccess();
	}
	
	public ParserRule getXBooleanLiteralRule() {
		return getXBooleanLiteralAccess().getRule();
	}

	//XNullLiteral returns XExpression:
	//	{XNullLiteral} "null";
	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
		return gaXtend.getXNullLiteralAccess();
	}
	
	public ParserRule getXNullLiteralRule() {
		return getXNullLiteralAccess().getRule();
	}

	//XNumberLiteral returns XExpression:
	//	{XNumberLiteral} value=Number;
	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
		return gaXtend.getXNumberLiteralAccess();
	}
	
	public ParserRule getXNumberLiteralRule() {
		return getXNumberLiteralAccess().getRule();
	}

	//XTypeLiteral returns XExpression:
	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
		return gaXtend.getXTypeLiteralAccess();
	}
	
	public ParserRule getXTypeLiteralRule() {
		return getXTypeLiteralAccess().getRule();
	}

	//XThrowExpression returns XExpression:
	//	{XThrowExpression} "throw" expression=XExpression;
	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
		return gaXtend.getXThrowExpressionAccess();
	}
	
	public ParserRule getXThrowExpressionRule() {
		return getXThrowExpressionAccess().getRule();
	}

	//XReturnExpression returns XExpression:
	//	{XReturnExpression} "return" -> expression=XExpression?;
	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
		return gaXtend.getXReturnExpressionAccess();
	}
	
	public ParserRule getXReturnExpressionRule() {
		return getXReturnExpressionAccess().getRule();
	}

	//XTryCatchFinallyExpression returns XExpression:
	//	{XTryCatchFinallyExpression} "try" expression=XExpression (catchClauses+=XCatchClause+ ("finally"
	//	finallyExpression=XExpression)? | "finally" finallyExpression=XExpression);
	public XbaseGrammarAccess.XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
		return gaXtend.getXTryCatchFinallyExpressionAccess();
	}
	
	public ParserRule getXTryCatchFinallyExpressionRule() {
		return getXTryCatchFinallyExpressionAccess().getRule();
	}

	//XSynchronizedExpression returns XExpression:
	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
		return gaXtend.getXSynchronizedExpressionAccess();
	}
	
	public ParserRule getXSynchronizedExpressionRule() {
		return getXSynchronizedExpressionAccess().getRule();
	}

	//XCatchClause:
	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
		return gaXtend.getXCatchClauseAccess();
	}
	
	public ParserRule getXCatchClauseRule() {
		return getXCatchClauseAccess().getRule();
	}

	//QualifiedName:
	//	ValidID ("." ValidID)*;
	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
		return gaXtend.getQualifiedNameAccess();
	}
	
	public ParserRule getQualifiedNameRule() {
		return getQualifiedNameAccess().getRule();
	}

	//Number hidden():
	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
	public XbaseGrammarAccess.NumberElements getNumberAccess() {
		return gaXtend.getNumberAccess();
	}
	
	public ParserRule getNumberRule() {
		return getNumberAccess().getRule();
	}

	//terminal HEX:
	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
	public TerminalRule getHEXRule() {
		return gaXtend.getHEXRule();
	} 

	//terminal INT returns ecore::EInt:
	//	"0".."9" ("0".."9" | "_")*;
	public TerminalRule getINTRule() {
		return gaXtend.getINTRule();
	} 

	//terminal DECIMAL:
	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
	public TerminalRule getDECIMALRule() {
		return gaXtend.getDECIMALRule();
	} 

	//JvmTypeReference:
	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
	//	XFunctionTypeRef;
	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
		return gaXtend.getJvmTypeReferenceAccess();
	}
	
	public ParserRule getJvmTypeReferenceRule() {
		return getJvmTypeReferenceAccess().getRule();
	}

	//ArrayBrackets:
	//	"[" "]";
	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
		return gaXtend.getArrayBracketsAccess();
	}
	
	public ParserRule getArrayBracketsRule() {
		return getArrayBracketsAccess().getRule();
	}

	//XFunctionTypeRef:
	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
		return gaXtend.getXFunctionTypeRefAccess();
	}
	
	public ParserRule getXFunctionTypeRefRule() {
		return getXFunctionTypeRefAccess().getRule();
	}

	//JvmParameterizedTypeReference:
	//	type=[JvmType|QualifiedName] ("<" arguments+=JvmArgumentTypeReference ("," arguments+=JvmArgumentTypeReference)*
	//	">")?;
	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
		return gaXtend.getJvmParameterizedTypeReferenceAccess();
	}
	
	public ParserRule getJvmParameterizedTypeReferenceRule() {
		return getJvmParameterizedTypeReferenceAccess().getRule();
	}

	//JvmArgumentTypeReference returns JvmTypeReference:
	//	JvmTypeReference | JvmWildcardTypeReference;
	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
		return gaXtend.getJvmArgumentTypeReferenceAccess();
	}
	
	public ParserRule getJvmArgumentTypeReferenceRule() {
		return getJvmArgumentTypeReferenceAccess().getRule();
	}

	//JvmWildcardTypeReference:
	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound | constraints+=JvmLowerBound)?;
	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
		return gaXtend.getJvmWildcardTypeReferenceAccess();
	}
	
	public ParserRule getJvmWildcardTypeReferenceRule() {
		return getJvmWildcardTypeReferenceAccess().getRule();
	}

	//JvmUpperBound:
	//	"extends" typeReference=JvmTypeReference;
	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
		return gaXtend.getJvmUpperBoundAccess();
	}
	
	public ParserRule getJvmUpperBoundRule() {
		return getJvmUpperBoundAccess().getRule();
	}

	//JvmUpperBoundAnded returns JvmUpperBound:
	//	"&" typeReference=JvmTypeReference;
	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
		return gaXtend.getJvmUpperBoundAndedAccess();
	}
	
	public ParserRule getJvmUpperBoundAndedRule() {
		return getJvmUpperBoundAndedAccess().getRule();
	}

	//JvmLowerBound:
	//	"super" typeReference=JvmTypeReference;
	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
		return gaXtend.getJvmLowerBoundAccess();
	}
	
	public ParserRule getJvmLowerBoundRule() {
		return getJvmLowerBoundAccess().getRule();
	}

	//JvmTypeParameter:
	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
		return gaXtend.getJvmTypeParameterAccess();
	}
	
	public ParserRule getJvmTypeParameterRule() {
		return getJvmTypeParameterAccess().getRule();
	}

	//QualifiedNameWithWildcard:
	//	QualifiedName "." "*";
	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
		return gaXtend.getQualifiedNameWithWildcardAccess();
	}
	
	public ParserRule getQualifiedNameWithWildcardRule() {
		return getQualifiedNameWithWildcardAccess().getRule();
	}

	//XImportSection:
	//	importDeclarations+=XImportDeclaration+;
	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
		return gaXtend.getXImportSectionAccess();
	}
	
	public ParserRule getXImportSectionRule() {
		return getXImportSectionAccess().getRule();
	}

	//XImportDeclaration:
	//	"import" (static?="static" extension?="extension"? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
	//	(wildcard?="*" | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
	//	importedNamespace=QualifiedNameWithWildcard) ";"?;
	public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
		return gaXtend.getXImportDeclarationAccess();
	}
	
	public ParserRule getXImportDeclarationRule() {
		return getXImportDeclarationAccess().getRule();
	}

	//QualifiedNameInStaticImport:
	//	(ValidID ".")+;
	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
		return gaXtend.getQualifiedNameInStaticImportAccess();
	}
	
	public ParserRule getQualifiedNameInStaticImportRule() {
		return getQualifiedNameInStaticImportAccess().getRule();
	}

	//terminal STRING:
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	public TerminalRule getSTRINGRule() {
		return gaXtend.getSTRINGRule();
	} 

	//terminal ML_COMMENT:
	//	"/ *"->"* /";
	public TerminalRule getML_COMMENTRule() {
		return gaXtend.getML_COMMENTRule();
	} 

	//terminal SL_COMMENT:
	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
	public TerminalRule getSL_COMMENTRule() {
		return gaXtend.getSL_COMMENTRule();
	} 

	//terminal WS:
	//	(" " | "\t" | "\r" | "\n")+;
	public TerminalRule getWSRule() {
		return gaXtend.getWSRule();
	} 

	//terminal ANY_OTHER:
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaXtend.getANY_OTHERRule();
	} 
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy